Relacionamentos entre classes
Relacionamentos estruturais entre classes existem em todo sistema orientado a objetos e são eles que permitem a interação entre os objetos para a realização dos casos de uso.
Existem, três tipos de relacionamentos entre classes: associação, agregação e generalização.
Associação entre Classes:
Ela permite que objetos de uma classe se comuniquem com objetos de outra classe. Uma classe pode associar-se a uma ou mais classes para fins de comunicação. Não existe um limite máximo de associações.
· Nome e sentido: é uma reta ligando as duas classes. Se a associação for unidirecional, inclui-se uma seta na extremidade de destino da associação.
Opcionalmente, pode-se incluir um nome sobre a reta, para indicar a natureza da associação.
Ex:
· Papéis das classes: indica qual a participação de cada classe na associação.
Ex:
· Cardinalidade: especifica o número de objetos de cada classe envolvidos com a associação. Quando não ha especificação, entende-se que é 1. Isto significa que apenas um objeto de cada classe esta envolvido com a associação. A especificação de cardinalidade é feita em cada extremo da associação e utiliza-se a seguinte notação:
Agregação entre Classes:
É dita uma relação “parte de” já que o objeto agregado passa a fazer parte do objeto que agrega. Trata-se de incluir objetos dentro de outros objetos.
A agregação fornece também um canal de comunicação entre o objeto que contém e o objeto contido. O objeto agregado não conhece a princípio o objeto que agrega. Assim, ele não pode comunicar-se com o objeto que agrega.
A notação UML é uma reta ligando a classe dos objetos que agregam à classe dos objetos agregados. Na extremidade da classe dos objetos que agregam inclui-se um losângulo.
· Nome e papéis: Pode-se incluir nomes e papéis como ocorre para as associações. Entretanto, torna-se desnecessária, pois os nomes seriam sempre “inclui”, “contém” ou equivalente.
· Cardinalidade: Determina o número de