Engenharia De Software III - Aula 02
Relacionamentos no Diagrama de Classes
Associações
Para realizarmos uma associação entre duas classes nós podemos usar uma linha. Uma linha sem nenhum desenho nas pontas, onde são “alojadas” nas classes não representa muita coisa para o desenvolvedor, senão pela liberdade dele em realizar conforme quiser.
No entanto, há as associações não navegáveis
e
associações navegáveis
. As primeiras são
representadas por um x
saindo da classe. As
segundas, são representadas pela seta, bem como
na herança.
Na foto acima, temos a classe Pessoa
como
associação não navegável, enquanto Disciplina
sendo a associação navegável.
Mas o que de fato significa essa associação?
As associações demonstram para o desenvolvedor
que uma classe irá utilizar recursos da outra.
Na foto, a classe Pessoa
está utilizando dados
da classe Disciplina
. Não navegável é de onde
eu “parto/saio” e navegável é para onde eu vou.
No exemplo acima, mostro uma possibilidade de
ambas as classes estarem acessando dados uma
das outras. Ou seja, em algum momento Disciplina
poderá receber/acessar dados da Pessoa
e
vice-versa.
Note que há um índice de multiplicidade, onde
uma pessoa pode ter várias disciplinas, no entanto
disciplina pode não ter nenhuma pessoa, ou no máximo
duas.
(obs: Ficou difícil de ver os números, mas há um
0..2
no lado da Pessoa
e um *
no lado da Disciplina
)
Diferença entre Herança e Associação
Herança nós pegamos tudo da Superclasse, enquanto Associação nós somente acessamos o dado, lemos o que representa aquele dado.
Agregação
Agregações representam um tipo de relacionamento “tem um/uma”. “Como assim?” - simples, pensemos no seguinte exemplo:
- Uma universidade tem vários alunos (1 para muitos)
- Alunos podem exeistir sem a universidade
- Tanto como a universidade pode existir sem Alunos
- Se o objeto/classe
Universidade
deixa de existir, os alunos continuarão existindo.
Composição
Composições são o contrário da agregação, sendo considerados relacionamentos “possuem um/uma”. Veja o exemplo abaixo:
- Um carro possui rodas e motor;
- As rodas e o motor, sem o carro, não fazem sentido;
- Se um carro é deletado, seu motor e suas rodas também
são deletados.
- Note que é deletado somente o motor DESSE OBJETO, as rodas DESSE OBJETO. Os demais motores e rodas não serão afetados pela remoção do carro.
Dependência
Dependências são chamados de relacionamentos “usa um/uma”. Vamos ao exemplo:
- A comissão de um funcionário depende da Venda;
- A venda, por sua vez, depende da cotação do Dólar.
Breve revisão
------|>
Representa herança (triângulo/seta fechado)--------
Representa uma associação sem regrasx------>
Representa uma associação não navegável para navegável<------>
Representa uma associação com multiplicidade------<>
Representa uma Agregação Estando sem pintar------<>
Representa uma Composição Deve estar pintada.......>
Representa uma Dependência (deve estar pontilhada/traceçada)
Exemplo realizado no Astah
Exercício durante a aula
Criar as seguintes classes:
- a) Classe Paciente com os atributos: Código, Nome, CPF, RG, Nome do Pai e Nome da Mãe. Operações: Incluir, Alterar e Consultar;
- b) Criar a classe Médico com os atributos: CRM, nome e especialidade. Operações: Incluir, Alterar e Consultar;
- c) Classe Convênio com os atributos: Código e nome do convênio. Operações: Incluir, Alterar, Excluir e Consultar;
- d) Criar a classe Agenda com os seguintes atributos: Data, Hora, Paciente, Médico e Convênio. Operações: Incluir, Alterar, Excluir e Consultar;
- Associações:
- I. A cada agendamento só pode escolher um paciente e um médico;
- II. O médico pode atender por nenhum ou por muitos convênios;
- III. Após o agendamento um comprovante deve ser emitido;
Engenharia de Software III - Aula 01 Exercícios de Diagrama de Classes Fundamentos de Orientação a Objetos