Composite 
www.trsampaio.com 
Tiago R. Sampaio
Introdução 
 Composite(Objeto Composto) é um padrão de projeto que 
permite que um objeto seja constituído de outros obje...
Descrição do Problema 
 Você quer construir um objeto que seja construído 
de outros objetos tal que, um ou mais objetos ...
Exemplo 
 Por exemplo, um objeto do tipo Forma. Existem várias formas, 
mas todas elas podem ser construídas pela composi...
Descrição da Solução 
Construa uma interface ou classe abstrata que 
representa o tipo de objeto na hierarquia.
Quando usar
Exemplo de código
componente Participante 
public abstract class Participante { 
public String getNome() { 
throw new UnsupportedOperationEx...
primitivo Individuo 
public class Individuo extends Participante { 
private String nome; 
private int assento; 
public Ind...
primitivo Individuo 
@Override 
public int getAssento() { 
return assento; 
} 
public void setAssento(int assento) { 
this...
composto Instituição 
import java.util.ArrayList; 
import java.util.List; 
public class Instituicao extends Participante {...
composto Instituição 
@Override 
public Participante getFilho(int index) { 
return membros.get(index); 
} 
@Override 
publ...
Próximos SlideShares
Carregando em…5
×

Padrão de projeto de software Composite

1.457 visualizações

Publicada em

Padrão de projeto de software Composite

Publicada em: Software
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
1.457
No SlideShare
0
A partir de incorporações
0
Número de incorporações
27
Ações
Compartilhamentos
0
Downloads
18
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Padrão de projeto de software Composite

  1. 1. Composite www.trsampaio.com Tiago R. Sampaio
  2. 2. Introdução  Composite(Objeto Composto) é um padrão de projeto que permite que um objeto seja constituído de outros objetos semelhantes a ele formando uma hierarquia.  Utilizando o padrão Composite é simples criar uma hierarquia de objetos semelhantes. Semelhantes, significa aqui, objetos que implementam uma interface comum. O padrão simplifica o tratamento de cada elemento da hierarquia ao tratar a todos como implementações da mesma interface.
  3. 3. Descrição do Problema  Você quer construir um objeto que seja construído de outros objetos tal que, um ou mais objetos desses podem ser do mesmo tipo do objeto construído.  O objeto é construído por objetos que contém uma coleção de outros objetos.  Contudo esses objetos não são quaisquer, eles compartilham uma interface comum.
  4. 4. Exemplo  Por exemplo, um objeto do tipo Forma. Existem várias formas, mas todas elas podem ser construídas pela composição de outras formas. Um ou mais formas são primitivas, ou seja, não são construídas a partir de nenhuma forma, outras serão.  O exemplo mais simples é a forma Linha que representa uma semirreta. Um Triangulo é composto por três Linha. Um quadrado por quatro ,e etc… Um circulo não é representável por um conjunto finito de linhas, logo precisamos de uma forma primitiva Circulo.  Como construir os objetos do tipo Forma para que eles obedeçam a esta hierarquia é o que o padrão Composite resolve.
  5. 5. Descrição da Solução Construa uma interface ou classe abstrata que representa o tipo de objeto na hierarquia.
  6. 6. Quando usar
  7. 7. Exemplo de código
  8. 8. componente Participante public abstract class Participante { public String getNome() { throw new UnsupportedOperationException(); } public int getAssento() { throw new UnsupportedOperationException(); } public void adicionar(Participante participante) { throw new UnsupportedOperationException(); } public void remover(Participante participante) { throw new UnsupportedOperationException(); } public Participante getFilho(int index) { throw new UnsupportedOperationException(); } }
  9. 9. primitivo Individuo public class Individuo extends Participante { private String nome; private int assento; public Individuo(String nome, int assento) { this.nome = nome; this.assento = assento; } @Override public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; }
  10. 10. primitivo Individuo @Override public int getAssento() { return assento; } public void setAssento(int assento) { this.assento = assento; } @Override public String toString() { return "Nome: " + this.nome + " - Assento: " + this.assento; } }
  11. 11. composto Instituição import java.util.ArrayList; import java.util.List; public class Instituicao extends Participante { private String nome; private List<Participante> membros; public Instituicao(String nome) { this.nome = nome; membros = new ArrayList<Participante>(); } @Override public void adicionar(Participante participante) { membros.add(participante); } @Override public void remover(Participante participante) { membros.remove(participante); }
  12. 12. composto Instituição @Override public Participante getFilho(int index) { return membros.get(index); } @Override public String getNome() { return nome; } public List<Participante> getMembros() { return membros; } @Override public String toString() { return "Instituição: " + this.nome; } public void imprimeMembros() { for (Participante membro : membros) { System.out.println(membro + " - Instituição: " + this.nome); } } }

×