Estou confuso sobre algumas das notações dos diagramas de classes UML.
Tenho certeza que sei o que significa Associação . Qualquer relacionamento entre instâncias de duas classes, em que uma instância de uma classe precisa saber sobre uma instância da segunda classe para executar seu trabalho - é um relacionamento de Associação. Uma associação geralmente significa que a classe A tem uma referência (campo) a uma instância da classe B.
No entanto, estou tendo problemas para entender o que significam as setas de agregação e composição . Parte da minha confusão foi causada por encontrar diferentes definições dessas notações.
Duas definições da notação de agregação :
Definição 1: Uma notação de agregação entre duas classes é adequada sempre que uma instância da classe A contém uma coleção de instâncias da classe B (por exemplo, uma lista, matriz, o que for).
Definição 2: Um link de agregação entre duas classes é adequado se uma instância da classe A tiver uma referência a uma instância da classe B e a instância B depender do ciclo de vida da instância A. Significado: Quando a instância da classe A é excluída, a instância da classe B. também é a instância da classe B. A instância da classe B é totalmente contida pela instância da classe A, em oposição à instância da classe A, simplesmente possuindo uma referência à instância de classe B (que é uma associação regular).
Quanto ao significado da notação Composition e como ela difere da notação Aggregation, não tenho certeza.
Por favor, esclareça as definições e me ajude a entender. Exemplos concretos seriam bem-vindos.