Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em...
Transcript of Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em...
![Page 1: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/1.jpg)
Ceça Moraes
![Page 2: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/2.jpg)
Programação Orientada a Objetos: os problemas de programação são
pensados em termos de objetos Em vez de funções e rotinas
Problema = desenvolver um sistema para locadoras Dividir o problema em objetos Clientes,DVDs,Filmes,Locação,...
![Page 3: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/3.jpg)
"Um objeto é um termo que usamos para representar uma entidade do mundo real" Fazemos isto através de um
exercício de abstração...
![Page 4: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/4.jpg)
Podemos descrever o cachorro Bilú em termos de seus atributos físicos: é pequeno sua cor principal
é castanha olhos pretos orelhas pequenas
e caídas, rabo pequeno
![Page 5: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/5.jpg)
Podemos também descrever algumas ações que ele faz (temos aqui os métodos):
balança o rabo foge e se deita
quando leva reclamação
late quando ouve um barulho ou vê um cão ou gato
atende quando o chamamos pelo seu nome
![Page 6: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/6.jpg)
Representação do cachorro Bilú: Propriedades : [Cor
do corpo : castanha; cor dos olhos : pretos; altura: 15 cm; comprimento: 38 cm largura : 24 cm]
Métodos : [balançar o rabo , latir , correr, deitar , sentar ]
![Page 7: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/7.jpg)
Uma classe representa um conjunto de objetos que possuem comportamentos e características comuns Têm os mesmos atributos, operações, relacionamentos e semântica
Uma classe descreve como certos tipos de objetos se parecem do ponto de vista da programação
![Page 8: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/8.jpg)
Ao definir uma classe é necessário definir : Propriedades
▪ Informações específicas relacionadas a uma classe de objeto
▪ Características dos objetos da classe▪ Exemplo: Cor , altura , tamanho , largura ,...
Métodos:
▪ São ações que os objetos de uma classe podem realizar
▪ Exemplo : Latir , correr , sentar , comer, etc.
![Page 9: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/9.jpg)
Ilustram atributos e operações de uma classe e as restrições como que os objetos podem ser conectados ;
Descrevem também os tipos de objetos no sistema e os
relacionamentos entre estes objetos
![Page 10: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/10.jpg)
Atributos visibilidade nome:
tipo + altura: float
Métodos visibilidade
nome(args): tipo retorno
+ latir() + media(n1,n2): float
Atributos
Métodos
![Page 11: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/11.jpg)
Visibilidade dos atributos e métodos em uma classe : + (público)
▪ visível em qualquer classe # (protegido)
▪ qualquer descendente pode usar – (privado)
▪ visível somente dentro da classe
![Page 12: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/12.jpg)
Os relacionamentos determinam conexões entre os objetos das classes
Fornecem um caminho para a comunicação entre os objetos
Tipos de Relacionamentos: Associações : agregação e
composição Generalização (herança) Dependências
![Page 13: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/13.jpg)
Os relacionamentos possuem:
Nome: descrição dada ao relacionamento (faz, tem, possui,...)
Sentido de leitura
Navegabilidade: indicada por uma seta no fim do relacionamento
Multiplicidade: 0..1, 0..*, 1, 1..*, 2, 3..7
Tipo: associação (agregação, composição), generalização e dependência
Papéis: desempenhados por classes em um relacionamento
![Page 14: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/14.jpg)
Pessoa Empresa1..*
Tipo: associação
multiplicidade
*trabalha para
empregado
papéis
empregador
sentido de leitura
E a navegabilidade?
nome
![Page 15: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/15.jpg)
© LES/PUC
-Rio
▪ O cliente sabe quais são seus endereços, mas o endereço não sabe a quais clientes pertence
EndereçoClientereside
1 *
navegabilidade
![Page 16: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/16.jpg)
Uma associação é um vínculo que permite que objetos de uma ou mais classes se relacionem
Não há conceito de posseAs associações podem ser:
unárias - quando a associação ocorre entre objetos de uma mesma classe
binárias - quando a associação ocorre entre dois objetos de classes distintas
![Page 17: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/17.jpg)
Uma associação é uma conexão entre classes (linha sólida)
![Page 18: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/18.jpg)
Indicadores de multiplicidade: 1 Exatamente um
1..* Um ou mais
0..* Zero ou mais (muitos)
* Zero ou mais (muitos)
0..1 No máximo um (zero ou um)
m..n Faixa de valores (por exemplo: 4..7)
![Page 19: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/19.jpg)
![Page 20: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/20.jpg)
"Qualquer empregado é chefiado por no máximo um chefe."
UMLUMLEmpregado Chefe
Chefia* 0..1
empregados chefe
![Page 21: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/21.jpg)
![Page 22: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/22.jpg)
Person +employee
1..*
+employer
*
Company
+worker
*
+supervisor 1
![Page 23: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/23.jpg)
Navegação por definição, a navegação entre classes
associadas é bidirecional por conveniência, a navegação pode
ser restringida a uma única direção
![Page 24: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/24.jpg)
![Page 25: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/25.jpg)
Um Estudante pode ser: Um aluno de uma Disciplina e
Um jogador da Equipe de Futebol
Cada Disciplina deve ser cursada por no mínimo 1 aluno
Um Aluno pode cursar de 0 até 8 disciplinas
![Page 26: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/26.jpg)
Ocorre quando a associação tem propriedades
Person Company
salarydateHired
Job
1..*
+employer
*
+employee
![Page 27: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/27.jpg)
É um tipo especial de associação Utilizada para indicar “todo-parte”
um objeto “parte” pode fazer parte de vários objetos “todo”
Mostra como classes são compostas de outras classes
![Page 28: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/28.jpg)
![Page 29: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/29.jpg)
"Uma empresa possui vários veículos.""Uma empresa possui vários veículos."
UMLUML
Empresa Veículo*
frota
0..1
![Page 30: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/30.jpg)
![Page 31: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/31.jpg)
Tipo especial de agregação
é um relacionamento de contenção Um objeto (container) CONTÉM outros
objetos (elementos)
Elementos que estão contidos dentro de outro objeto dependem dele para existir
![Page 32: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/32.jpg)
Agregação: estabelece uma relação
todo-parte entre classes, sendo que a parte pode existir sem o todo.
Ex: Carro e Roda. Uma Roda é parte de um Carro, porém a Roda existe por si só fora do Carro. Você pode por exemplo remover a roda de um carro para colocar em outro.
Composição: estabelece uma
relação todo-parte entre classes, sendo que a parte NÃO existe sem o todo.
Ex: Pedido e Itens de Pedido. Se você destruir o Pedido, os Itens são destruídos junto, eles não tem sentido se não houver um Pedido.
![Page 33: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/33.jpg)
Company Department
1 *
![Page 34: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/34.jpg)
Língua naturalLíngua natural"Um humano é composto por uma cabeça e dois braços."
UMLUMLHumano
Braço
Cabeça1
2
![Page 35: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/35.jpg)
Uma classe pode ser definida a partir de outra já existente
Abstrai classes genéricas (superclasse), a partir de classes com propriedades (atributos e operações) semelhantes
![Page 36: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/36.jpg)
Modelar aspectos semelhantes entre classes, preservando suas diferenças
As subclasses herdam todas as propriedades de sua superclasse E possuem as suas próprias
![Page 37: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/37.jpg)
Relacionamento entre itens gerais (superclasses) e itens mais específicos (subclasses)
“é um”“é um tipo de”
superclasse
subclasses
Veículo
Terrestre Aéreo
![Page 38: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/38.jpg)
Forma
RetânguloCírculo FormaComposta
uma Forma pode ser um Círculo, um Retângulo ou uma FormaComposta
![Page 39: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/39.jpg)
![Page 40: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/40.jpg)
Identificar classes com propriedades semelhantes
Definir uma nova classe com as propriedades comuns
As classes originais tornam-se subclasses da nova classe e herdam as propriedades desta
Os relacionamentos em comum passam para a superclasse e os demais continuam nas subclasses
![Page 41: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/41.jpg)
Definir uma ou mais subclasses a partir de uma classe existente
Adicionar propriedades e relacionamentos específicas de cada nova subclasse
Relacionamentos comuns a todas as subclasses são ligados à superclasse
![Page 42: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/42.jpg)
![Page 43: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/43.jpg)
![Page 44: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/44.jpg)
A Universidade XYZ deseja informatizar seu sistema de matrículas: A universidade oferece vários cursos. O Coordenador de um curso define as disciplinas que serão oferecidas pelo seu
curso num dado semestre. Várias disciplinas são oferecidas em um curso. Várias turmas podem ser abertas para uma mesma disciplina, porém o número de
estudantes inscritos deve ser entre 3 e 10. Estudantes podem se matricular em 4 disciplinas. Quando um estudante matricula-se para um semestre, o Sistema de Registro
Acadêmico (SRA) é notificado. Após a matrícula, os estudantes podem, por um certo prazo, utilizar o sistema para
adicionar ou remover disciplinas. Professores usam o sistema para obter a lista de alunos matriculados em suas
disciplinas. Todos os usuários do sistema devem ser validados.
![Page 45: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/45.jpg)
Diagrama de Casos de Uso
![Page 46: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/46.jpg)
Descrição Resumida do Caso de Uso “Matricular em Disciplina”
Esse caso de uso se inicia quando o Estudante de Curso inicia uma sessão no sistema e apresenta suas credenciais.
O sistema verifica se a credencial é válida.
O sistema solicita que o estudante realize sua matrícula, selecionando 4 disciplinas.
O estudante preenche um formulário eletrônico de matrícula e o submete para análise de consistência.
O sistema analisa as informações contidas no formulário.
Se as informações são consistentes, o estudante é incluído em turmas abertas de 4 disciplinas, iniciando pelas preferenciais.
Se as informações não são consistentes, o sistema informa o motivo da inconsistência e solicita que o formulário seja alterado.
![Page 47: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/47.jpg)
Professor Coordenador Estudante
TurmaUniversidade Disciplina
FormularioMatricula
Curso
AnalisadorMatricula
SistemaRegistroAcademico ListaAlunos
Diagrama de Classes: identificando as classes
![Page 48: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/48.jpg)
Exemplos de possibilidades de relacionamentos entre as classes A e B: A é parte física ou lógica de B A está contido fisicamente ou logicamente em B A é uma descrição de B A é membro de B A é subunidade organizacional de B A usa ou gerencia B A se comunica/interage com B A está relacionado com uma transação B A é possuído por B A é um tipo de B
Diagrama de Classes: identificando os relacionamentos
![Page 49: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/49.jpg)
O formulário de matrícula é processado por um analisador de matrícula
FormularioMatricula AnalisadorMatriculaé-processado-por
10..*
Diagrama de Classes: identificando os relacionamentos
![Page 50: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/50.jpg)
O analisador de matrícula gerencia a disciplina
Disciplina
FormularioMatricula AnalisadorMatriculaé-processado-por
10..*1
0..*
Diagrama de Classes: identificando os relacionamentos
![Page 51: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/51.jpg)
Professor
Coordenador
Estudante Turma
Disciplina
FormularioMatricula AnalisadorMatricula
é-preenchido-por
está-matriculado-em
é-processado-por
é-ministrada-por
é-definida-por
aluno
gerencia
1
1
10..*1
0..*
11..*1
1..*
10..33..10 4
Diagrama de Classes
![Page 52: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/52.jpg)
Os atributos podem ser encontrados examinando-se as descrições dos casos de uso e também pelo conhecimento do domínio do problema.
Cada turma oferecida possui um código, uma sala e um horário.
Turma
códigosalahorário
Diagrama de Classes: identificando os atributos
![Page 53: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/53.jpg)
Coordenador
FormularioMatricula AnalisadorMatricula
é-preenchido-por
está-matriculado-em
é-processado-por
é-ministrada-por
é-definida-por
aluno
gerencia
1
1
10..*1
0..*
11..*
1
1..*
10..33..10 4
Turma
códigosalahorário
Professor
nometitulação
Estudante
nomematricula
Disciplina
nomenumCréditos
Diagrama de Classes
![Page 54: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/54.jpg)
modelar antes os diagramas de seqüência
SIM
submeterFormulario(formulario)
AnalisadorMatricula
adicionar(aluno, disciplina)
: SIM : AnalisadorMatricula
2: adicionar(a,d )
1: submeterFormulario(f)
Diagrama de Classes: identificando os métodos
![Page 55: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/55.jpg)
E a navegabilidade?
public class Turma {
private String codigo;private String sala;private Estudante alunos[];...
}
Diagrama de Classes:
public class Estudante {
private String nome;
private String matricula;...}
OBS: Turma não aparece como atributo de Estudante!
TurmaEstudante
3..10
está-matriculado-em
3..10 4
![Page 56: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/56.jpg)
Acrescentando generalizações: Atributos, operações e/ou relacionamentos comuns
podem ser movidos para uma classe mais geral.
Estudante
matricula : Inteiro
definirMatricula(matricula)obterMatricula()
Usuario
nome : Texto
definirNome(nome)obterNome()
Professor
titulacao : Texto
definirTitulacao(titulacao)obterTitulacao()
Diagrama de Classes:
![Page 57: Ceça Moraes. Programação Orientada a Objetos : os problemas de programação são pensados em termos de objetos Em vez de funções e rotinas Problema.](https://reader035.fdocument.pub/reader035/viewer/2022070311/552fc15f497959413d8e8261/html5/thumbnails/57.jpg)
SIM
Usuario
nome : Texto
definirNome(nome)obterNome()
FormularioMatricula
obterEstudante() : EstudanteobterNomeDIsciplina(i : Inteiro) : Texto
Estudante
matricula : Inteiro
definirMatricula(matricula)obterMatricula()
1
1
é-preenchido-por
1
1-aluno
Professor
titulacao : Texto
definirTitulacao(titulacao)obterTitulacao()
AnalisadorMatricula
adicionar(aluno, disciplina) 1 11 1
usa
10..* 10..*
é-processado-por
Disciplina
nome : TextonumCreditos : Inteiro
estaCompleta()adicionar(aluno : Estudante)
0..*
1
0..*
1
gerencia
Turma
codigo : Textosala : Textohorario : HorarionumAlunos : Inteirocompleta : Booleano
estaCompleta() : Booleano
3..10
4
3..10
4
está-matriculado-em
0..3 10..3 1
responsável-por
1..*
11
1..*