Qual é a diferença entre agregação e composição
Índice:
o principal diferença entre agregação e composição é que agregação é uma associação entre dois objetos que têm o relacionamento “tem um”, enquanto a composição é um tipo especial de agregação que descreve a propriedade.
A Programação Orientada a Objetos (OOP) é um paradigma importante na engenharia de software. De acordo com o OOP, os objetos se comunicam entre si. Uma classe é um projeto para criar objetos, enquanto uma associação é uma conexão entre dois ou mais objetos. Agregação e composição são dois tipos de associação que descrevem os relacionamentos entre objetos ou classes.
Agregação, Composição, OOP, UML
O que é agregação
Agregação é uma associação que descreve o relacionamento “tem um” entre os objetos. Por exemplo, uma sala de aula e um aluno estão vinculados ao relacionamento “tem um”.
Figura 1: Diagrama UML com agregação
Ao considerar a sala de aula acima e o cenário do aluno, o objeto do aluno não depende do objeto da sala de aula. Além disso, destruir a sala de aula não afeta ou destrói o objeto do aluno. Portanto, a associação entre sala de aula e aluno é uma agregação. Além disso, a Unified Modeling Language (UML) é uma linguagem de modelagem visual que ajuda a desenvolver sistemas de software. Na UML, o símbolo do diamante representa a agregação.
O que é composição
A composição é um tipo especial de agregação que descreve a propriedade. Um exemplo é o seguinte.
Figura 2: Composição no diagrama UML
No diagrama acima, o objeto Escola contém objetos de sala de aula. Como o objeto escola contém objetos de sala de aula, é uma agregação, mas é um tipo especial de agregação. Se destruirmos o objeto da escola, o objeto da sala de aula também será destruído. Portanto, é uma composição e implica propriedade. Em UML, o símbolo do diamante destacado representa a composição.
Diferença entre agregação e composição
Definição
Agregação é uma associação entre dois objetos que descreve o relacionamento “tem um”, enquanto a composição é o tipo mais específico de agregação que implica propriedade. Portanto, esta é a principal diferença entre agregação e composição.
Funcionalidade
Na agregação, destruir o objeto proprietário não afeta o objeto que o contém. No entanto, na composição, destruir o objeto que possui afeta o objeto que o contém. Portanto, esta é outra diferença entre agregação e composição.
Representação UML
Além disso, o símbolo do diamante representa a agregação na UML, enquanto o símbolo do diamante destacado representa a composição na UML.
Conclusão
Em OOP, os objetos se comunicam entre si. Aqui, a relação entre objetos é uma associação. Agregação e composição são dois tipos de associações entre objetos ou classes. A diferença entre agregação e composição é que a agregação é uma associação entre dois objetos que têm o relacionamento “tem um”, enquanto a composição é um tipo especial de agregação que descreve a propriedade.
Referência:
1. 6 5 Using Aggregation and Composition, People Career, 22 de maio de 2015, disponível aqui.