Diferença chave – Agregação vs Composição
Programação Orientada a Objetos (POO) é um paradigma comum no desenvolvimento de software. O objeto é uma instância de uma classe. Não é possível criar objetos de uma só vez. Deve haver um blueprint ou uma descrição para criar um objeto. Esse plano é conhecido como uma classe. Uma classe contém propriedades e métodos. Objetos são criados usando classes. Classe e objeto são semelhantes a um plano e uma casa no mundo real. Não é possível construir uma casa sem um plano adequado. Da mesma forma, uma classe é usada para criar um objeto. Um objeto colabora com outros objetos. Um link com representa o relacionamento de dois ou mais objetos é chamado de “associação”. Agregação e composição são tipos de associações. Eles descrevem o relacionamento entre as classes. Este artigo discute a diferença entre agregação e composição. A principal diferença entre agregação e composição é que a agregação é uma associação entre dois objetos que descreve o relacionamento "tem um" e a composição é um tipo mais específico de agregação que implica propriedade.
O que é Agregação?
Um relacionamento entre dois objetos é mostrado desenhando uma linha em Unified Modeling Language (UML). O link é uma associação. UML ajuda a obter uma representação visual do sistema. É diferente das linguagens de programação regulares. A associação também define a multiplicidade de objetos. Eles são um-para-um, um-para-muitos e muitos-para-muitos. Quando um único objeto da classe A está associado ao único objeto da classe B, esse é um relacionamento um-para-um. Um exemplo é um autor escrevendo um livro. Nesse exemplo, um autor está escrevendo um livro.
Quando um objeto da classe A está associado a muitos objetos da classe B, trata-se de um relacionamento um-para-muitos. Um exemplo é, um departamento pode ter muitos funcionários. Quando o objeto da classe A está associado a muitos objetos da classe B e um objeto da classe B está associado a muitos objetos da classe A, trata-se de uma associação muitos-para-muitos. Um exemplo é que um funcionário pode trabalhar em vários projetos e um projeto pode ter vários funcionários.
Agregação é a associação de tipos que descreve melhor o relacionamento entre objetos. A agregação descreve “tem um” relacionamento. Alguns exemplos que descrevem a relação são: um aluno “tem uma” carteira de estudante, um veículo “tem um” motor. Também é possível expandir uma grande quantidade com o relacionamento. Alguns exemplos são: um banco “tem muitas” contas bancárias, uma turma “tem muitos” alunos. Isso pode ser explicado usando o exemplo abaixo.
Figura 01: Agregação
De acordo com o exemplo acima, a sala de aula é composta por um ou vários alunos. A multiplicidade também é usada para indicar o número de objetos. Ele descreve que uma sala de aula tem vários alunos. O símbolo do diamante representa a agregação em UML. Objetos de estudante não dependem do objeto de classe. Se o objeto de classe for destruído, isso não afetará os objetos de aluno. Esses objetos ainda existirão.
O que é Composição?
A composição é uma forma mais específica de agregação. Descreve a propriedade. Isso pode ser explicado usando o exemplo abaixo.
Figura 02: Composição
De acordo com o acima, o objeto livro consiste em um objeto página ou páginas. A multiplicidade também é usada para indicar o número de objetos. Ele descreve que uma sala de aula tem vários alunos. O símbolo de losango destacado representa a composição em UML. Como o livro tem uma página ou muitas páginas, ele é uma agregação, mas é mais especificado. Se o objeto de livro for destruído, os objetos de página também serão destruídos. Objetos de página não podem existir sem o objeto de livro. Portanto, a composição é uma forma mais específica de agregação que implica propriedade.
Quais são as semelhanças entre agregação e composição?
- Ambos são usados em Programação Orientada a Objetos.
- Ambos são usados em Unified Modeling Language (UML) para obter uma compreensão visual do sistema.
Qual é a diferença entre agregação e composição?
Agregação vs Composição |
|
Agregação é uma associação entre dois objetos que descreve o relacionamento “tem um”. | A composição é o tipo mais específico de agregação que implica propriedade. |
Símbolo UML | |
A agregação é indicada por um losango. | A composição é indicada por um losango destacado. |
Funcionalidade | |
Na agregação, se o objeto proprietário for destruído, não afetará o objeto que o contém. | Na composição, se o objeto proprietário for destruído, afetará o objeto que o contém. |
Resumo – Agregação vs Composição
Programação Orientada a Objetos é um paradigma importante no desenvolvimento de software. Na POO, o sistema é modelado usando objetos. Esses objetos não existem isoladamente. Objetos colaboram com outros objetos. A relação entre objetos é conhecida como associação. Agregação e composição são tipos de associação. A diferença entre agregação e composição é que a agregação é uma associação entre dois objetos que descreve o relacionamento “tem um” e a composição é o tipo mais específico de agregação que implica propriedade. Agregação e composição ajudam a entender o comportamento do sistema.
Baixe a versão em PDF de Agregação vs Composição
Você pode baixar a versão em PDF deste artigo e usá-lo para fins offline conforme nota de citação. Faça o download da versão em PDF aqui Diferença entre agregação e composição