Logo
Introdução Aula 1 Aula 2 Aula 3 Aula 4 Aula 5 Atividades Ref. Bibliográficas


Associação, agregação e composição


Nesta aula veremos alguns conceitos e exemplos relacionados aos itens em destaque no título.

Associação

Ela descreve um vínculo que ocorre entre classes - associação binária -, mas é possível até mesmo que uma classe esteja vinculada a si própria, - associação unária-, ou que uma associação seja compartilhada por mais de uma classe, o que conhecemos por associação ternária ou N-ária, tipo de associação mais rara e também mais complexa. Representamos as associações por meio de retas que ligam as classes envolvidas, essas setas podem ou não possuir setas nas extremidades indicando a navegabilidade da associação, ou seja, o sentido em que as informações são passadas entre as classes - não obrigatório-. Ou seja, se não há setas, significa que essas informações podem ser transmitidas entre todas as classes de uma associação.

Exemplo: A forma mais comum de implementar associação é ter um objeto como atributo de outro, neste exemplo, abaixo temos uma associação entre a Classe Livros e a classe Editoras. No código cria-se um objeto do tipo Livro e outro do tipo Editora. Um dos atributos do Livro é a Editora. Veja a figura:

Diagrama de Classes - Associação

Crie as classes em PHP agora.

Editoras.class.php

Classe Editoras
Livros.class.php

Classe Livros

Agora o código para uso das classes, chame o arquivo de associacao.php

Associação


Agregação

É um tipo especial de associação onde tenta-se demonstrar que as informações de um objeto (chamado objeto-todo) precisam ser complementados pelas informações contidas em um ou mais objetos de outra classe (chamados objetos-parte); conhecemos como todo/parte.

O objeto-pai poderá usar as informações do objeto agregado. Segundo Dall'Oglio (2007) "Nesta relação, um objeto poderá agregar uma ou mais instâncias de um outro objeto. Para agregar muitas instâncias, a forma mais simples é utilizando arrays. Criamos um array como atributo da classe, sendo que o papel deste array é armazenar inúmeras instâncias de uma outra class". (DALL'OGLIO, 2007, p. 118)

Irei exemplificar esta relação pensando em um ambiente Web, onde teríamos o carrinho de compras (classe Carrinhos) com vários itens do tipo produtos (classe Produtos). Para agregar os produtos ao carrinho, usa-se o método IncluirItem( ) na classe Carrinhos, que contém outro método chama ExibeCarrinho() responsável por listar todos os itens pedidos, por meio da listagem dos dados do produto -método ListarDados() da classe Produtos-, e um método FechaCompra( ) reponsável por efetuar a soma dos itens adicionados no carrinho apresentando ao final o preço a ser pago pelo cliente. Na próxima figura vemos o exemplo desta agregação.

Diagrama de Classes - Agregação


Classe Carrinhos - Carrinhos.class.php

Classe Carrinhos

Classe Produtos - Produtos.class.php

Classe Produtos

Arquivo agregacao.php

Arquivo agregacao.php

Resultado da execução do arquivo agregacao.php

Resultado do arquivo agregacao.php


Composição

Pode-se dizer que composição é uma variação da agregação. Uma composição tenta representar também uma relação todo - parte. No entanto, na composição o objeto-pai (todo) é responsável por criar e destruir suas partes. Em uma composição um mesmo objeto-parte não pode se associar a mais de um objeto-pai.

Veja o Diagrama de Classes que representa uma associção do tipo composição. Nela temos o objeto-todo Revistas e objeto-parte Edicoes.

Diagrama de Classes

Crie as classes que representam o diagrama.

Classe: Revistas.class.php
Classe Revistas

Classe: Edicoes.class.php
Classe Edições

Crie agora o código para visualizar o exemplo, dê o nome de composicao.php

Composição (arquivo: composicao.php)

Observe o resultado da composição. Foi instanciado um objeto da classe Revistas, essa classe é composta de uma edição, instanciada automaticamente pelo construtor da classe Revistas. As execuções dos métodos são delegados da classe principal para a classe Edicoes.

Resultado Composição

Nesta aula vimos o conceito de associação, agregação e composição. O livro do Pablo Dall'Oglio apresenta muitos exemplos interessantes, para quem quiser saber mais, consulte nas referências.

Marcos Roberto de Moraes
Mestre em Educação
Especialista em Adm. de Sistemas de Informação