Cursos / Automação Industrial / Programação Orientada a Objetos / Aula

arrow_back Aula 05 - Composição e Agregação

Conceitos Composição e Agregação

Associação

É uma conexão (relacionamento) entre classes/objetos. Na figura abaixo temos dois exemplos, no primeiro a classe time de futebol tem um atributo que é um objeto de outra classe: Jogador. No segundo temos a classe pedido que contém vários itens pedido, em ambos os casos dizemos que existe uma associação entre as classes.

Figura 1 - Conceito de Associação

Descrição imagem

Composição ou Agregação

Características:

  • É Caso particular de associação;
  • Indica que uma das classes é uma parte, ou está contida em outra classe;
  • “Tem um” ou “contém um”.

Veja na figura abaixo quando temos uma composição e quando temos uma agregação:

Figura 2 - Exemplos de Agregação e Composição

Descrição imagem

Observe que para o primeiro exemplo, a classe jogador não depende da classe futebol para existir, ou seja, caso a classe jogador não seja utilizada na classe time de futebol ela continua tendo sentido de existir no contexto do problema. A classe jogador poderá ser utilizada em outra situação dentro do sistema. Quando não existe uma dependência tão forte entre as classes podemos dizer que temos uma relação de agregação.

No segundo exemplo, a classe item pedido só existe dentro da classe pedido. Se não existir a classe pedido perde o sentido ter a classe item pedido em nosso sistema. Para essa relação forte de dependência podemos dizer que temos uma relação de composição.

Conceito

Composição ou Agregação é um mecanismo de reaproveitamento (reutilização) de classes utilizado pela POO para aumentar a produtividade e a qualidade no desenvolvimento de software.

Reaproveitamento ou reutilização de classes significa que você pode usar uma ou várias classes para compor outra classe. Já o aumento de produtividade está relacionado com a possibilidade de não ser necessário reescrever código de determinadas classes, se alguma outra já existe com estado (atributos) e comportamento similar. Finalmente, com a composição, é possível também aumentar a qualidade dos sistemas gerados, porque há a possibilidade clara de reutilizar classes que já foram usadas em outros sistemas, e, portanto, já foram testadas e têm chances de conter menos erros.

Vejamos um exemplo: um carro é um objeto COMPOSTO por vários outros objetos. Ele é composto pelos objetos motor, pneus, direção, faróis etc. A figura 3 dá uma ideia do conceito de composição para um objeto do tipo Carro.

Figura 3 - Conceito de Composição

Descrição imagem

Legal não é?!! Isso mesmo que você entendeu, você pode criar um objeto a partir de vários outros objetos. E isso é muito natural.

Veja o computador que você está usando, ele é um objeto composto por outros objetos: teclado, monitor, placa mãe, memória, mouse etc.

E tem mais, quando uma classe é composta de outras classes, ela pode tanto usar os objetos que são gerados pelas classes que a compõem, como pode também usufruir dos atributos e métodos dessas classes.


Versão 5.3 - Todos os Direitos reservados