A programação orientada a objeto é um paradigma comum usado no desenvolvimento de software. O objeto é uma instância de uma classe criada por classes. Os objetos colaboram uns com os outros através de links. Links são a conexão física e conceitual existente entre objetos. Uma coleção de links com estrutura e semântica semelhantes é descrita como uma associação .
Gráfico de comparação
Base para comparação | Agregação | Composição |
---|---|---|
Basic | Em agregação, exibem um relacionamento em que um filho pode existir independentemente do pai. | Na composição, não pode existir independentemente do pai. |
Tipo de relação | "tem um" | "parte de" |
Tipo de associação | Associação fraca | Forte associação |
Símbolo de design UML | Representado por um diamante oco ao lado da classe de montagem. | Representado por um diamante sólido ao lado da classe de montagem. |
Função | A exclusão da montagem não afeta suas partes. | Se o objeto de classe proprietário for excluído, isso poderá afetar significativamente o objeto de classe contido. |
Definição de Agregação
A agregação pode ser definida como um relacionamento com uma classe de montagem para a classe constituinte. O relacionamento entre dois objetos pode ser representado desenhando um segmento de linha em UML (Unified Modeling Language).
Por exemplo, um carro consiste em rodas, motor, caixa de câmbio, direção, corpo principal, etc. Um carro é uma montagem e as outras partes são seus componentes. Carro para rodas é uma agregação, carro para motores é outra agregação e assim por diante. Cada emparelhamento individual é definido para especificar a multiplicidade de cada parte constituinte dentro da montagem como resultado, o número de objetos também pode ser representado.
A agregação é um tipo de associação que descreve um tipo de relação “entre os objetos”. Por exemplo, um carro “tem uma” caixa de câmbio e um carro “tem um” motor . Para o relacionamento um-para-muitos, um exemplo é que um carro “tem” muitas rodas .
Definição de Composição
A composição também é um tipo de associação, mas uma forma mais restritiva. Ele é representado na UML por um minúsculo diamante sólido adjacente à classe de montagem.
Assim, composição significa propriedade da parte constituinte do todo. Isso acabaria aumentando a conveniência da programação. A composição pode acionar a exclusão do objeto constituinte pela exclusão de um objeto de montagem.
A composição descreve um relacionamento “parte de” . Por exemplo, uma folha é uma parte de uma árvore, se a árvore for destruída, então as folhas devem ser destruídas.
Principais diferenças entre agregação e composição
- Agregação indica um relacionamento em que entidades filho e pai podem existir independentemente. Em contraste, na composição, a entidade filho é dependente do pai.
- Em agregação, existe um relacionamento "tem um", enquanto que na composição há um relacionamento "parte de" entre os objetos de classe assembly e constituinte.
- Agregação é fraca associação enquanto a composição é uma forte associação porque tem mais restrições.
- No projeto UML, a agregação é descrita por um diamante oco. Em contraste, a composição é representada por um diamante sólido.
Conclusão
Em agregação, as partes constituintes têm a existência independente e podem ser compartilhadas ou reatribuídas a agregados ou sua montagem. Por outro lado, na composição, a parte constituinte pertence a exatamente uma montagem ou agregado. Além disso, a parte é criada quando o agregado é formado e a parte é destruída quando o agregado é destruído.