Skip to main content dev:Coelho

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.

exemplo1.png

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.

exemplo2

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.

Exemplo Agregação

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.

Exemplo Composição

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.

Exemplo Dependência

Breve revisão

------|> Representa herança (triângulo/seta fechado)
-------- Representa uma associação sem regras
x------> 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

Foto

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;

Agendamento Exercício

Engenharia de Software III - Aula 01 Exercícios de Diagrama de Classes Fundamentos de Orientação a Objetos