Padrão Composto

11

Click here to load reader

Transcript of Padrão Composto

Page 1: Padrão Composto

Design Patterns

Page 2: Padrão Composto

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.

Page 3: Padrão Composto

Estrutura Árvore

Page 4: Padrão Composto

PUBLIC ABSTRACT CLASS MENUCOMPOSTO PUBLIC VOID ADICIONAR(MENUCOMPOSTO MENUCOMPOSTO)

THROW NEW UNSUPPORTEDOPERATIONEXCEPTION();

PUBLIC VOID REMOVER(MENUCOMPOSTO MENUCOMPOSTO)THROW NEW UNSUPPORTEDOPERATIONEXCEPTION();

PUBLIC MENUCOMPOSTO GETFILHO(INT I)THROW NEW UNSUPPORTEDOPERATIONEXCEPTION();

PUBLIC STRING GETNOME() THROW NEW UNSUPPORTEDOPERATIONEXCEPTION();

PUBLIC STRING GETDESCRICAO()THROW NEW UNSUPPORTEDOPERATIONEXCEPTION();

PUBLIC DOUBLE GETPRECO()THROW NEW UNSUPPORTEDOPERATIONEXCEPTION();

PUBLIC BOOLEAN ISVEGETARIANO()THROW NEW UNSUPPORTEDOPERATIONEXCEPTION();

PUBLIC VOID IMPRIMIR()THROW NEW UNSUPPORTEDOPERATIONEXCEPTION();

Page 5: Padrão Composto

public class Menu extends MenuComposto {

ArrayList<MenuComposto> menuCompostos = new Arr.....

String nome;

String descricao;

public Menu(String nome, String descricao)

this.nome = nome;

this.descricao = descricao;

// Implementação dos métodos do MenuComposto.....

@Override

public void imprimir() {

System.out.print("\n" + getNome());

System.out.println(" , " + getDescricao());

System.out.println("______________");

Iterator<MenuComposto> iterator = menuCompostos.iterator();

while(iterator.hasNext()){

MenuComposto menuComposto = iterator.next();

menuComposto.imprimir();

Page 6: Padrão Composto

MenuCompos

to

Menu Menu

Menu Item

Menu Item

Menu Item

Menu Item

Page 7: Padrão Composto

public class MenuItem extends MenuComposto {String nome;String descricao;boolean isVegetariano;double preco;

public MenuItem(String nome, String desc, boolean isVeg, double preco) this.nome = nome;this.descricao = .................

@Overridepublic void imprimir()

System.out.print(" " + getNome());If(this.isVegetariano()){System.out.print(" (V) ");

System.out.println(" , " + getPreco());System.out.println("- " + getDescricao());

Page 8: Padrão Composto

public class Garconete {MenuComposto todosMenus;

public Garconete(MenuComposto menuCompos) this.todosMenus = menuCompos;

public void imprimir()todosMenus.imprimir();

Page 9: Padrão Composto

public class TestMenuComposto {

public static void main(String[] args) {

MenuComposto menuRod = new Menu("Menu do Rod", "Cafézinho");

MenuComposto menuDouglas = new Menu("Menu do Douglas", "Cafézão");

MenuComposto menuDoBolha = new Menu("Menu do Bolha", "Lixo");

MenuComposto menuDoChina = new Menu("Menu do China", "Ehmmmmmmm....");

MenuComposto todosMenus = new Menu("Todos menus", " uma perfeita combinação .");

todosMenus.adicionar(menuRod);

todosMenus.adicionar(menuDouglas);

todosMenus.adicionar(menuDoBolha);

todosMenus.adicionar(menuDoChina);

menuRod.adicionar(new MenuItem("Macarrao", "Uma deliciosa macarronada", false, 5.99));

menuRod.adicionar(new MenuItem("MacarraoII", "Uma deliciosa macarrona com molho dobro", false, 8.99));

menuDouglas.adicionar(new MenuItem("Café", "Maravilhoso", false, 4.33));

menuDouglas.adicionar(new MenuItem("CaféII", "MaravilhosoII", false, 5.33));

menuDoBolha.adicionar(new MenuItem("Frutas", "Saudaveis", true, 3.38));

menuDoBolha.adicionar(new MenuItem("FrutasII", "SaudaveisII", true, 7.38));

menuDoChina.adicionar(new MenuItem("Leite Desnatado", "Fresco", false, 3.69));

menuDoChina.adicionar(new MenuItem("Leite DesnatadoII", "FrescoII", false, 4.69));

Garconete garconete = new Garconete(todosMenus);

garconete.imprimir();

Page 10: Padrão Composto

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

Page 11: Padrão Composto

Obrigado !