SlideShare une entreprise Scribd logo
1  sur  10
Design Patterns
Padrão Iterator Fornece uma maneira de acessar seqüencialmente os elementos de um objeto agregado sem expor a sua representação subjacente.   Delega a tarefa de acesso seqüencial ao objeto iterador e não ao agregado, o que simplifica a interface e a implementação.
publicclassRestauranteDoLui { ArrayList<MenuItem> menuItens; publicRestauranteDoLui() { menuItens = newArrayList<MenuItem>(); addItem("Nhoque", false, 13.59); addItem("Peixe grelhado", false, 3.59); 		addItem("Frango a milanesa", false, 3.59); privatevoidaddItem(_,_,_)  MenuItem item = newMenuItem(_,_,_); menuItens.add(item);
publicclassRestauranteDoRodrigo { static final intMAX_ITENS = 6; intquantidadeDeItens = 0; MenuItem[] menuItens; publicRestauranteDoRodrigo()  this.menuItens = newMenuItem[MAX_ITENS]; addItem("Arroz a grega", false, 4.99); addItem("Feijoada", false, 14.99); addItem("Peixe grelhado", false, 17.50); privatevoidaddItem(String descricao, booleanisVegetariano, doublepreco)  MenuItemmenuItem = newMenuItem(descricao, isVegetariano, preco); if(this.quantidadeDeItens >= MAX_ITENS){ 			System.err.println("Desculpe, O menu já está cheio de itens."); 		}else{ menuItens[this.quantidadeDeItens] = menuItem; this.quantidadeDeItens++;
publicclassGarconete { publicvoidimprimirTodosItensDoMenu(){ RestauranteDoLuirestDoLui = newRestauranteDoLui(); ArrayList<MenuItem> itensDoLui = restDoLui.getMenuItens(); 	for (int i = 0; i < itensDoLui.size(); i++)  MenuItemitemDoLui = itensDoLui.get(i); 		System.out.println("Descrição: "+itemDoLui.getDescricao()+" é 	vegetariano: "+ itemDoLui.isVegetarianoString() + " preço: R$ "); RestauranteDoRodrigorestDoRod = newRestauranteDoRodrigo(); MenuItem[] itensDoRod = restDoRod.getMenuItens(); 	for (int i = 0; i < itensDoRodrigo.length; i++) { MenuItemitemDoRodrigo = itensDoRodrigo[i]; 		System.out.println("Descrição: "+itemDoRodrigo.getDescricao()+" é 	vegetariano: "+ itemDoRodrigo.isVegetarianoString() + " preço: R$ ");
public interface Iterador { booleanhasNext(); Objectnext(); 	}
public class IteradorRod implements Iterador MenuItem[] itens; intposicao = 0; publicIteradorRod(MenuItem[] itens)  this.itens = itens; 	@Override publicbooleanhasNext()  if(posicao >= itens.length || itens[posicao] == null){ returnfalse; 		}else{ returntrue; 	@Override publicObjectnext()  MenuItemmenuItem = itens[posicao]; posicao++; returnmenuItem;
public class IteradorLui implements Iterador { ArrayList<MenuItem> itens; intposicao = 1; publicIteradorLui(ArrayList<MenuItem> menuItens)  this.itens = menuItens; 	@Override publicbooleanhasNext()  if(posicao >= itens.size() || itens.get(posicao) == null){ returnfalse; }else{ returntrue; @Override publicObjectnext()  MenuItemmenuItem = itens.get(posicao); posicao++; returnmenuItem;
publicclassGarconeteMelhorada { RestauranteDoLuirestauranteDoLui; RestauranteDoRodrestauranteDoRod; publicGarconeteMelhorada(RestauranteDoLui, RestauranteDoRod) { 		.........; publicvoidimprimirMenu(){ IteradoriteradorDoLui = restauranteDoLui.criarIterador(); IteradoriteradorDoRod = restauranteDoRod.criarIterador(); 		System.out.println("Menu do Lui"); imprimirMenu(iteradorDoLui); 		System.out.println("Menu do Rod"); imprimirMenu(iteradorDoRod); privatevoidimprimirMenu(Iteradoriterador) { while (iterador.hasNext()) { MenuItem item = (MenuItem) iterador.next(); 			System.out.println("Descrição: "+item.getDescricao()+" é vegetariano: "+ 			item.isVegetarianoString() + " preço: R$ "+item.getPreco());
 Obrigado !

Contenu connexe

Tendances (6)

Java AWT
Java AWTJava AWT
Java AWT
 
Evento Front End SP - Organizando o Javascript
 Evento Front End SP - Organizando o Javascript Evento Front End SP - Organizando o Javascript
Evento Front End SP - Organizando o Javascript
 
Java gui
Java guiJava gui
Java gui
 
Hooks, o condimento mágico e escondido do WordPress
Hooks, o condimento mágico e escondido do WordPressHooks, o condimento mágico e escondido do WordPress
Hooks, o condimento mágico e escondido do WordPress
 
Java12
Java12Java12
Java12
 
Bloco 5.3
Bloco 5.3Bloco 5.3
Bloco 5.3
 

Padrão Iterator

  • 2. Padrão Iterator Fornece uma maneira de acessar seqüencialmente os elementos de um objeto agregado sem expor a sua representação subjacente. Delega a tarefa de acesso seqüencial ao objeto iterador e não ao agregado, o que simplifica a interface e a implementação.
  • 3. publicclassRestauranteDoLui { ArrayList<MenuItem> menuItens; publicRestauranteDoLui() { menuItens = newArrayList<MenuItem>(); addItem("Nhoque", false, 13.59); addItem("Peixe grelhado", false, 3.59); addItem("Frango a milanesa", false, 3.59); privatevoidaddItem(_,_,_) MenuItem item = newMenuItem(_,_,_); menuItens.add(item);
  • 4. publicclassRestauranteDoRodrigo { static final intMAX_ITENS = 6; intquantidadeDeItens = 0; MenuItem[] menuItens; publicRestauranteDoRodrigo() this.menuItens = newMenuItem[MAX_ITENS]; addItem("Arroz a grega", false, 4.99); addItem("Feijoada", false, 14.99); addItem("Peixe grelhado", false, 17.50); privatevoidaddItem(String descricao, booleanisVegetariano, doublepreco) MenuItemmenuItem = newMenuItem(descricao, isVegetariano, preco); if(this.quantidadeDeItens >= MAX_ITENS){ System.err.println("Desculpe, O menu já está cheio de itens."); }else{ menuItens[this.quantidadeDeItens] = menuItem; this.quantidadeDeItens++;
  • 5. publicclassGarconete { publicvoidimprimirTodosItensDoMenu(){ RestauranteDoLuirestDoLui = newRestauranteDoLui(); ArrayList<MenuItem> itensDoLui = restDoLui.getMenuItens(); for (int i = 0; i < itensDoLui.size(); i++) MenuItemitemDoLui = itensDoLui.get(i); System.out.println("Descrição: "+itemDoLui.getDescricao()+" é vegetariano: "+ itemDoLui.isVegetarianoString() + " preço: R$ "); RestauranteDoRodrigorestDoRod = newRestauranteDoRodrigo(); MenuItem[] itensDoRod = restDoRod.getMenuItens(); for (int i = 0; i < itensDoRodrigo.length; i++) { MenuItemitemDoRodrigo = itensDoRodrigo[i]; System.out.println("Descrição: "+itemDoRodrigo.getDescricao()+" é vegetariano: "+ itemDoRodrigo.isVegetarianoString() + " preço: R$ ");
  • 6. public interface Iterador { booleanhasNext(); Objectnext(); }
  • 7. public class IteradorRod implements Iterador MenuItem[] itens; intposicao = 0; publicIteradorRod(MenuItem[] itens) this.itens = itens; @Override publicbooleanhasNext() if(posicao >= itens.length || itens[posicao] == null){ returnfalse; }else{ returntrue; @Override publicObjectnext() MenuItemmenuItem = itens[posicao]; posicao++; returnmenuItem;
  • 8. public class IteradorLui implements Iterador { ArrayList<MenuItem> itens; intposicao = 1; publicIteradorLui(ArrayList<MenuItem> menuItens) this.itens = menuItens; @Override publicbooleanhasNext() if(posicao >= itens.size() || itens.get(posicao) == null){ returnfalse; }else{ returntrue; @Override publicObjectnext() MenuItemmenuItem = itens.get(posicao); posicao++; returnmenuItem;
  • 9. publicclassGarconeteMelhorada { RestauranteDoLuirestauranteDoLui; RestauranteDoRodrestauranteDoRod; publicGarconeteMelhorada(RestauranteDoLui, RestauranteDoRod) { .........; publicvoidimprimirMenu(){ IteradoriteradorDoLui = restauranteDoLui.criarIterador(); IteradoriteradorDoRod = restauranteDoRod.criarIterador(); System.out.println("Menu do Lui"); imprimirMenu(iteradorDoLui); System.out.println("Menu do Rod"); imprimirMenu(iteradorDoRod); privatevoidimprimirMenu(Iteradoriterador) { while (iterador.hasNext()) { MenuItem item = (MenuItem) iterador.next(); System.out.println("Descrição: "+item.getDescricao()+" é vegetariano: "+ item.isVegetarianoString() + " preço: R$ "+item.getPreco());