Back-End

19 nov, 2010

UML: composição x agregação

Publicidade

Quem está iniciando com os diagramas de classe da UML geralmente sente uma grande dificuldade em entender a diferença das formas de associação entre objetos de uma classe “Agregação” e de uma classe “Composição”. Esse é sempre um assunto polêmico, pois, dependendo das regras de negócio, o mesmo relacionamento que acontece através de uma agregação, em determinado sistema, pode, em outro, se dar por uma composição.

Nosso objetivo aqui é tentar ajudar a esclarecer a diferença dessas formas utilizando um exemplo prático.

As associações representam o equivalente mais próximo dos relacionamentos utilizados no modelo Entidade-Relacionamento, ou seja, seu objetivo é definir a maneira como as classes estão unidas e se relacionam entre si, compartilhando informações – (Guedes, 2006, p. 72)

Vejamos dois relacionamentos para entender melhor as nomenclaturas:

Figura 01 – Todo-Parte

Os relacionamentos Todo-Parte acima são representado por:

  • Pedido (Objeto-Todo) e ItemPedido (Objeto-Parte)
  • Time (Objeto-Todo) e Atleta (Objeto-Parte)

Na Agregação, a existência do Objeto-Parte faz sentido, mesmo não existindo o Objeto-Todo. Vejamos o exemplo Time-Atleta:

Figura 02 – Agregação

Um time é formado por atletas, ou seja, os atletas são parte integrante de um time, mas os atletas existem independentemente de um time existir. Nesse caso, chamamos esse relacionamento de AGREGAÇÃO.

Já a Composição é uma agregação mais forte; nela, a existência do Objeto-Parte NÃO faz sentido se o Objeto-Todo não existir. Vejamos o exemplo Pedido-ItemPedido:

Figura 03 – Composição

Nesse caso, um pedido é composto por um ou vários itens, mas um produto NÃO é item de um pedido se não existe pedido. Assim, chamamos esse relacionamento de COMPOSIÇÃO.

Conclusão

Essas são as formas de se representar o relacionamento entre os objetos das classes do tipo part-of, em que a agregação é representada por um diamante branco, sempre do lado do “Objeto-Todo”, e a composição é representada por um diamante negro, também desenhado do lado do “Objeto-Todo”.

  • Bibliografia:

Guedes, G. T. (2006). UML – Uma abordagem prática 2° Edição. In: G. T. Guedes, UML – Uma abordagem prática 2° Edição (p. 72). Novatec.