Agregação vs Composição em UML: Principais Diferenças

O que é composição?

A composição é um caso especial de Agregação que ajuda a especificar um relacionamento todo-parte entre a classe de composição e uma classe subordinada (parte).

O que é agregação?

A agregação é um caso especial de associação quando um objeto 'tem' outro objeto, o qual você pode ter uma agregação entre eles. A direção entre eles ajuda a especificar qual objeto contém o outro objeto. A agregação também é conhecida como relacionamento 'Has-a'. É um subtipo de relacionamento de associação em UML.

PRINCIPAIS DIFERENÇAS

  • A agregação é um tipo de associação entre dois objetos que descreve o relacionamento 'tem um', enquanto a composição é um tipo específico de agregação que implica propriedade.
  • A agregação é indicada por uma linha reta com uma ponta de seta vazia em uma das extremidades. Por outro lado, a composição é indicada por uma linha reta com uma ponta de seta preenchida em qualquer uma das extremidades.
  • Em um relacionamento de agregação, os objetos associados entre si podem permanecer no escopo de um sistema sem um ao outro. Mas em um relacionamento de composição, os objetos que estão associados entre si não podem permanecer no escopo sem o outro.
  • Na agregação, os objetos vinculados não dependem do outro objeto, ao passo que, na composição, os objetos são altamente dependentes uns dos outros.
  • Na agregação, a exclusão de um único elemento não afeta outro elemento associado. Pelo contrário, na composição, a exclusão de um único elemento afeta outro elemento associado.
  • A agregação é denotada por um diamante preenchido, enquanto a composição é denotada por um diamante vazio.

Estatísticas principais

Agregação Composição
ProprietárioSem donoÚnico dono
Tempo de vidaTer sua vida.Vida do proprietário.
Objeto CriançaTodos os objetos filhos são independentes.Os objetos filhos pertencem a um único pai.

Exemplo de composição

A pasta pode conter muitos arquivos, enquanto cada arquivo tem exatamente um pai de pasta. Se uma pasta for excluída, todos os arquivos contidos também serão removidos. Em uma agregação composta, um objeto pode fazer parte de apenas um composto por vez.

Exemplo de agregação

Por exemplo, seu carro consiste em rodas, motor, caixa de câmbio, direção e o corpo principal, etc. É uma montagem e as outras partes são seus constituintes.

Aqui, carro para a roda é uma Agregação, carro para o motor é outra agregação, carro para caixa de câmbio é outra e assim por diante.

Esse tipo de emparelhamento ajuda a definir a multiplicidade da peça constituinte dentro da montagem como seu resultado. O número de objetos também pode ser representado.

Um carro precisa de uma roda para funcionar corretamente. No entanto, não podemos dizer o mesmo de um carro. A mesma lógica pode ser aplicada a uma bicicleta, bicicleta ou qualquer outro veículo, mas não a um carro específico.

Aqui, o objeto roda é significativo mesmo sem o objeto carro. É conhecido como relacionamento de agregação.

Diferença entre agregação e composição

Aqui está a principal diferença entre agregação e composição:

Agregação Composição
A agregação é um tipo de associação entre dois objetos que também descreve o relacionamento 'tem um'.Composição é um tipo específico de agregação que implica propriedade.
A agregação é indicada por uma linha reta com uma ponta de seta vazia em uma das extremidades.A composição é indicada por uma linha reta com uma ponta de seta preenchida em qualquer uma das extremidades.
A agregação faz parte de um relacionamento de associação.A composição faz parte de uma relação de associação.
A agregação é considerada um tipo fraco de associação.A composição é considerada um tipo forte de associação.
Em um relacionamento de agregação, os objetos associados entre si podem permanecer no escopo de um sistema sem um ao outro.Em um relacionamento de composição, os objetos associados entre si não podem permanecer no escopo sem o outro.
Na agregação, os objetos vinculados não dependem do outro objeto.Na composição, os objetos são altamente dependentes uns dos outros.
Na agregação, a exclusão de um único elemento não afeta outro elemento associado.Na composição, a exclusão de um único elemento afeta outro elemento associado.
Exemplo: um carro precisa de uma roda, mas nem sempre exige a mesma roda. Um carro também pode funcionar adequadamente com outra roda.Exemplo: um arquivo é colocado dentro da pasta. Se alguém excluir a pasta, o arquivo associado a essa pasta também será excluído.
Em Agregação, relacionamento pai com a entidade filha.Na composição, a entidade pai possui a entidade filha.
É denotado por um diamante preenchidoÉ denotado por um diamante vazio
A criança não tem uma vida inteira.A criança pode ter uma vida inteira.
É representado por um losango vazio ao lado da classe de montagem.É representado por um diamante sólido ao lado da classe de montagem.
A exclusão da montagem nunca afeta suas peças.No caso de possuir uma classe, o objeto é excluído. Também afeta o objeto de classe que o contém.