SlideShare uma empresa Scribd logo
1 de 11
Design Patterns
Padrão Composto Permite que você componha objetos em estrutura de árvore para representar hierarquias parte-todo.   Com este padrão, os clientes podem tratar objetos individuais ou composições  de objetos de maneira uniforme.
Estrutura Árvore
public abstract classMenuCompostopublicvoid adicionar(MenuCompostomenuComposto)thrownewUnsupportedOperationException();publicvoid remover(MenuCompostomenuComposto)thrownewUnsupportedOperationException();publicMenuCompostogetFilho(int i)thrownewUnsupportedOperationException();public String getNome()thrownewUnsupportedOperationException();public String getDescricao()thrownewUnsupportedOperationException();publicdoublegetPreco()thrownewUnsupportedOperationException();publicbooleanisVegetariano()thrownewUnsupportedOperationException();publicvoid imprimir()thrownewUnsupportedOperationException();
public class Menu extends MenuComposto { ArrayList<MenuComposto> menuCompostos = newArr..... 	String nome; 	String descricao; 	public Menu(String nome, String descricao)  this.nome = nome; this.descricao = descricao;         // Implementação dos métodos do MenuComposto..... 	@Override publicvoid imprimir() { 		System.out.print("" + getNome()); 		System.out.println(" , " + getDescricao()); 		System.out.println("______________"); Iterator<MenuComposto> iterator = menuCompostos.iterator(); while(iterator.hasNext()){ MenuCompostomenuComposto = iterator.next(); menuComposto.imprimir();
Menu Composto Menu Menu Menu Item Menu Item Menu Item Menu Item
public class MenuItem extends MenuComposto{ String nome; String descricao; booleanisVegetariano; doublepreco; publicMenuItem(String nome, String desc, booleanisVeg, doublepreco)  this.nome = nome; this.descricao= ................. 	@Override publicvoid imprimir()  		System.out.print("   "  + getNome()); If(this.isVegetariano()){ 			System.out.print(" (V) "); 		System.out.println(" , " + getPreco()); 		System.out.println("- " + getDescricao());
publicclassGarconete { MenuCompostotodosMenus; publicGarconete(MenuCompostomenuCompos)  this.todosMenus= menuCompos; publicvoid imprimir() todosMenus.imprimir();
publicclassTestMenuComposto{ 	public static void main(String[] args) { MenuCompostomenuRod = new Menu("Menu do Rod", "Cafézinho"); MenuCompostomenuDouglas = new Menu("Menu do Douglas", "Cafézão"); MenuCompostomenuDoBolha = new Menu("Menu do Bolha", "Lixo"); MenuCompostomenuDoChina = new Menu("Menu do China", "Ehmmmmmmm...."); MenuCompostotodosMenus = new Menu("Todos menus", " uma perfeita combinação ."); todosMenus.adicionar(menuRod); todosMenus.adicionar(menuDouglas); todosMenus.adicionar(menuDoBolha); todosMenus.adicionar(menuDoChina); menuRod.adicionar(newMenuItem("Macarrao", "Uma deliciosa macarronada", false, 5.99)); menuRod.adicionar(newMenuItem("MacarraoII", "Uma deliciosa macarrona com molho dobro", false, 8.99)); menuDouglas.adicionar(newMenuItem("Café", "Maravilhoso", false, 4.33)); menuDouglas.adicionar(newMenuItem("CaféII", "MaravilhosoII", false, 5.33)); menuDoBolha.adicionar(newMenuItem("Frutas", "Saudaveis", true, 3.38)); menuDoBolha.adicionar(newMenuItem("FrutasII", "SaudaveisII", true, 7.38)); menuDoChina.adicionar(newMenuItem("Leite Desnatado", "Fresco", false, 3.69)); menuDoChina.adicionar(newMenuItem("Leite DesnatadoII", "FrescoII", false, 4.69)); Garconetegarconete = newGarconete(todosMenus); garconete.imprimir();
Todos menus ,  uma perfeita combinação . ______________ Menu do Rod , Cafézinho ______________ Macarrao , 5.99 		- Uma deliciosa macarronada MacarraoII , 8.99 		- Uma deliciosa macarronada com molho em dobro Menu do Douglas , Cafézão ______________ Café , 4.33 		- Maravilhoso CaféII , 5.33	 		- MaravilhosoII Menu do Bolha , Lixo ______________ Frutas (V)  , 3.38 		- Saudaveis FrutasII (V)  , 7.38 		- SaudaveisII Menu do China , Ehmmmmmmm.... ______________ Leite Desnatado , 3.69 		- Fresco Leite DesnatadoII , 4.69 		- FrescoII
 Obrigado !

Mais conteúdo relacionado

Destaque

Lembrancinhas
LembrancinhasLembrancinhas
LembrancinhasAutonoma
 
2010 ucv-tema 10 - Linguagem Clássica
2010 ucv-tema 10 - Linguagem Clássica2010 ucv-tema 10 - Linguagem Clássica
2010 ucv-tema 10 - Linguagem ClássicaLuisMorgado
 
Apresentação Reserva Carioca
Apresentação Reserva CariocaApresentação Reserva Carioca
Apresentação Reserva Cariocarocoolivera
 
Dados abertos do wikipedia ao governo
Dados abertos do wikipedia ao governoDados abertos do wikipedia ao governo
Dados abertos do wikipedia ao governoThiago Rondon
 
virus
virusvirus
virusRas
 
Alegoria da caverna
Alegoria da cavernaAlegoria da caverna
Alegoria da cavernaAnaKlein1
 
Escuridão Digital nas empresas do 3.º sector
Escuridão Digital nas empresas do 3.º sectorEscuridão Digital nas empresas do 3.º sector
Escuridão Digital nas empresas do 3.º sectorPedro Costa
 
Agulha de ouro especial bebê n141
Agulha de ouro especial bebê n141Agulha de ouro especial bebê n141
Agulha de ouro especial bebê n141Autonoma
 

Destaque (15)

Grande vitória
Grande vitóriaGrande vitória
Grande vitória
 
Portfolio
PortfolioPortfolio
Portfolio
 
Lembrancinhas
LembrancinhasLembrancinhas
Lembrancinhas
 
2010 ucv-tema 10 - Linguagem Clássica
2010 ucv-tema 10 - Linguagem Clássica2010 ucv-tema 10 - Linguagem Clássica
2010 ucv-tema 10 - Linguagem Clássica
 
A filosofia
A filosofiaA filosofia
A filosofia
 
Apresentação Reserva Carioca
Apresentação Reserva CariocaApresentação Reserva Carioca
Apresentação Reserva Carioca
 
FRIAS NETO Retrospectiva 2011
FRIAS NETO Retrospectiva 2011FRIAS NETO Retrospectiva 2011
FRIAS NETO Retrospectiva 2011
 
Parecer Técnico Nelore Jandaia
Parecer Técnico Nelore JandaiaParecer Técnico Nelore Jandaia
Parecer Técnico Nelore Jandaia
 
Salzburg
SalzburgSalzburg
Salzburg
 
Dados abertos do wikipedia ao governo
Dados abertos do wikipedia ao governoDados abertos do wikipedia ao governo
Dados abertos do wikipedia ao governo
 
Abipbox
AbipboxAbipbox
Abipbox
 
virus
virusvirus
virus
 
Alegoria da caverna
Alegoria da cavernaAlegoria da caverna
Alegoria da caverna
 
Escuridão Digital nas empresas do 3.º sector
Escuridão Digital nas empresas do 3.º sectorEscuridão Digital nas empresas do 3.º sector
Escuridão Digital nas empresas do 3.º sector
 
Agulha de ouro especial bebê n141
Agulha de ouro especial bebê n141Agulha de ouro especial bebê n141
Agulha de ouro especial bebê n141
 

Padrão Composto

  • 2. Padrão Composto Permite que você componha objetos em estrutura de árvore para representar hierarquias parte-todo. Com este padrão, os clientes podem tratar objetos individuais ou composições de objetos de maneira uniforme.
  • 4. public abstract classMenuCompostopublicvoid adicionar(MenuCompostomenuComposto)thrownewUnsupportedOperationException();publicvoid remover(MenuCompostomenuComposto)thrownewUnsupportedOperationException();publicMenuCompostogetFilho(int i)thrownewUnsupportedOperationException();public String getNome()thrownewUnsupportedOperationException();public String getDescricao()thrownewUnsupportedOperationException();publicdoublegetPreco()thrownewUnsupportedOperationException();publicbooleanisVegetariano()thrownewUnsupportedOperationException();publicvoid imprimir()thrownewUnsupportedOperationException();
  • 5. public class Menu extends MenuComposto { ArrayList<MenuComposto> menuCompostos = newArr..... String nome; String descricao; public Menu(String nome, String descricao) this.nome = nome; this.descricao = descricao; // Implementação dos métodos do MenuComposto..... @Override publicvoid imprimir() { System.out.print("" + getNome()); System.out.println(" , " + getDescricao()); System.out.println("______________"); Iterator<MenuComposto> iterator = menuCompostos.iterator(); while(iterator.hasNext()){ MenuCompostomenuComposto = iterator.next(); menuComposto.imprimir();
  • 6. Menu Composto Menu Menu Menu Item Menu Item Menu Item Menu Item
  • 7. public class MenuItem extends MenuComposto{ String nome; String descricao; booleanisVegetariano; doublepreco; publicMenuItem(String nome, String desc, booleanisVeg, doublepreco) this.nome = nome; this.descricao= ................. @Override publicvoid imprimir() System.out.print(" " + getNome()); If(this.isVegetariano()){ System.out.print(" (V) "); System.out.println(" , " + getPreco()); System.out.println("- " + getDescricao());
  • 8. publicclassGarconete { MenuCompostotodosMenus; publicGarconete(MenuCompostomenuCompos) this.todosMenus= menuCompos; publicvoid imprimir() todosMenus.imprimir();
  • 9. publicclassTestMenuComposto{ public static void main(String[] args) { MenuCompostomenuRod = new Menu("Menu do Rod", "Cafézinho"); MenuCompostomenuDouglas = new Menu("Menu do Douglas", "Cafézão"); MenuCompostomenuDoBolha = new Menu("Menu do Bolha", "Lixo"); MenuCompostomenuDoChina = new Menu("Menu do China", "Ehmmmmmmm...."); MenuCompostotodosMenus = new Menu("Todos menus", " uma perfeita combinação ."); todosMenus.adicionar(menuRod); todosMenus.adicionar(menuDouglas); todosMenus.adicionar(menuDoBolha); todosMenus.adicionar(menuDoChina); menuRod.adicionar(newMenuItem("Macarrao", "Uma deliciosa macarronada", false, 5.99)); menuRod.adicionar(newMenuItem("MacarraoII", "Uma deliciosa macarrona com molho dobro", false, 8.99)); menuDouglas.adicionar(newMenuItem("Café", "Maravilhoso", false, 4.33)); menuDouglas.adicionar(newMenuItem("CaféII", "MaravilhosoII", false, 5.33)); menuDoBolha.adicionar(newMenuItem("Frutas", "Saudaveis", true, 3.38)); menuDoBolha.adicionar(newMenuItem("FrutasII", "SaudaveisII", true, 7.38)); menuDoChina.adicionar(newMenuItem("Leite Desnatado", "Fresco", false, 3.69)); menuDoChina.adicionar(newMenuItem("Leite DesnatadoII", "FrescoII", false, 4.69)); Garconetegarconete = newGarconete(todosMenus); garconete.imprimir();
  • 10. Todos menus , uma perfeita combinação . ______________ Menu do Rod , Cafézinho ______________ Macarrao , 5.99 - Uma deliciosa macarronada MacarraoII , 8.99 - Uma deliciosa macarronada com molho em dobro Menu do Douglas , Cafézão ______________ Café , 4.33 - Maravilhoso CaféII , 5.33 - MaravilhosoII Menu do Bolha , Lixo ______________ Frutas (V) , 3.38 - Saudaveis FrutasII (V) , 7.38 - SaudaveisII Menu do China , Ehmmmmmmm.... ______________ Leite Desnatado , 3.69 - Fresco Leite DesnatadoII , 4.69 - FrescoII