Design Patterns<br />
Padrão Iterator<br />Fornece uma maneira de acessar seqüencialmente os elementos de um objeto agregado sem expor a sua rep...
publicclassRestauranteDoLui {<br />ArrayList<MenuItem> menuItens;<br />publicRestauranteDoLui() {<br />menuItens = newArra...
publicclassRestauranteDoRodrigo {<br />static final intMAX_ITENS = 6;<br />intquantidadeDeItens = 0;<br />MenuItem[] menuI...
publicclassGarconete {<br />publicvoidimprimirTodosItensDoMenu(){<br />RestauranteDoLuirestDoLui = newRestauranteDoLui();<...
public interface Iterador {<br />booleanhasNext();<br />Objectnext();<br />	}<br />
public class IteradorRod implements Iterador<br />MenuItem[] itens;<br />intposicao = 0;<br />publicIteradorRod(MenuItem[]...
public class IteradorLui implements Iterador {<br />ArrayList<MenuItem> itens;<br />intposicao = 1;<br />publicIteradorLui...
publicclassGarconeteMelhorada {<br />RestauranteDoLuirestauranteDoLui;<br />RestauranteDoRodrestauranteDoRod;<br />publicG...
 Obrigado !<br />
Upcoming SlideShare
Loading in …5
×

Padrão Iterator

2,273 views
2,194 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,273
On SlideShare
0
From Embeds
0
Number of Embeds
98
Actions
Shares
0
Downloads
30
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Padrão Iterator

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

×