UML - Dependência x Agregação

Como saberei quando devo utilizar o relacionamento de dependência ou o relacionamento de agregação?

Olha, a princípio o uso de um relacionamento ou outro depende em última análise do tipo de projeto, e mesmo do gosto do projetisa. Entretanto, via de regra, a dependência é utilizada quando um objeto A utiliza outro objeto B. Portanto, qualquer mudança na interface de B poderá exigir mudanças na implementação de A. Esta relação pode ser 1-1 ou 1-n. A relação de agregação, por sua vez, envolve um objeto A ser agregado (conjunto) de objetos do tipo B. Um objeto 'CLUBE' possui um conjunto de zero ou mais objetos 'ASSOCIADO'.

A agregação é um tipo de associação em que um objeto possui um conjunto de outros objetos. Por exemplo, um relacionamento carro e rodas é uma agregação. Um exemplo de dependência que é muito fácil de entender é a dependência de compilação. Se a classe A depende da classe B para compilar, elas possuem um relacionamento de dependência.

A questão é: o fato de um objeto ser composto de "n" outros objetos (agregação) não é, também, uma relação de dependência? No exemplo dos carros, se eu tirar as rodas, o carro ainda vai ser um carro e o motor não vai deixar de funcionar por causa disso, mas será funcional ainda? Ou seja, ele não está dependendo de outros objetos? Bom, apesar da dúvida ainda persistir, já dá pra desenrolar caso caia em alguma prova....

Não. A dependência é um relacionamento não estrutural. Numa associação, a classe depende da outra, mas você está representando algo a mais do que uma pura dependência

Comentários

Postagens mais visitadas deste blog

Redação Ti Nota 10 - Klauss

Prova Discursiva nota 10 - Banca Cespe

Portugues - Orações