Padrão de Projeto
Iterator
Antonio Álvaro Oliveira da Silva
Instituto Federal de Educação, Ciência e Tecnologia - IFCE cam...
Objetivo
 Disponibilizar uma forma de acesso
sequencial aos elementos de um
agregado sem expor a sua representação
subjac...
Padrão de Projeto - Comportamental - Iterator 3
 Um objeto intermediário (iterator) é usado entre
o cliente e a coleção de objetos.
Padrão de Projeto - Comportamental - ...
Motivação
 Deve-se poder percorrer uma lista encadeada, por
exemplo, sem conhecer sua estrutura interna.
 Isolar o uso d...
Exemplos de Iterador
 Árvore pode ser caminhada "em ordem", "em pós-ordem” e em "pré-
ordem" . Árvore pode ter 3 tipos de...
Como criar um Iterador?
 Não podemos usar new de uma classe concreta diretamente, pois o
iterador a ser criado depende da...
Aplicabilidade
 Para acessar o conteúdo de uma coleção sem expor suas
representação interna.
 Para suportar múltiplas fo...
Iterador
 Qual a diferença entre:
for (int i = 0; i < c.getSize(); i++)
System.out.print(c.get(i));
 E:
Iterator it = c....
Estrutura
Padrão de Projeto - Comportamental - Iterator 10
Propriedades
 Iterador
• Define uma interface para acessar e percorrer os elementos.
 IteradorConcreto
• Implementa a in...
 O IteradorConcreto mantém uma referência para o
elemento atual do agregado e é capaz de calcular o
próximo elemento da v...
Consequências
 Suporta variações na varredura do agregado.
 Simplificam a interface do agregado.
 Suportam diferentes v...
Detalhes da implementação
 Iteradores internos versus iteradores externos
 Operadores do iterador
 Pode permitir ou não...
Upcoming SlideShare
Loading in …5
×

Padrao de projeto iterator

818 views

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
818
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
31
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Padrao de projeto iterator

  1. 1. Padrão de Projeto Iterator Antonio Álvaro Oliveira da Silva Instituto Federal de Educação, Ciência e Tecnologia - IFCE campus Crato Programação Orientada a Objetos II
  2. 2. Objetivo  Disponibilizar uma forma de acesso sequencial aos elementos de um agregado sem expor a sua representação subjacente. Padrão de Projeto - Comportamental - Iterator 2 Intenção: iterar sobre uma coleção de objetos sem expor sua representação. Obedecer o princípio do encapsulamento.
  3. 3. Padrão de Projeto - Comportamental - Iterator 3
  4. 4.  Um objeto intermediário (iterator) é usado entre o cliente e a coleção de objetos. Padrão de Projeto - Comportamental - Iterator 4
  5. 5. Motivação  Deve-se poder percorrer uma lista encadeada, por exemplo, sem conhecer sua estrutura interna.  Isolar o uso de uma coleção (estrutura de dados) de sua representação interna, de forma a poder mudar a estrutura sem afetar quem a usa.  Para determinadas estruturas, pode haver formas diferentes de caminhamento encapsuláveis.  Podem existir diferentes varreduras simultâneas. Padrão de Projeto - Comportamental - Iterator 5
  6. 6. Exemplos de Iterador  Árvore pode ser caminhada "em ordem", "em pós-ordem” e em "pré- ordem" . Árvore pode ter 3 tipos de Iteradores Específicos:  Escolhendo o iterador escolhemos a forma de percorrer a árvore.  Iterador com filtro  Só retorna certos elementos da coleção.  A idéia do Iterador é retirar da coleção a responsabilidade de acessar e caminhar por seus elementos  Essa responsabilidade é delegada a um novo objeto separado – o Iterator. Padrão de Projeto - Comportamental - Iterator 6
  7. 7. Como criar um Iterador?  Não podemos usar new de uma classe concreta diretamente, pois o iterador a ser criado depende da coleção a ser varrida.  Iterdor it = new Iterador(colecao);  Solução: A coleção tem um Factory Method para criar um iterador. Iterador it = colecao.criarIterador(); Padrão de Projeto - Comportamental - Iterator 7 Quando usar o Iterador?  Para navegar em uma coleção elemento por elemento.
  8. 8. Aplicabilidade  Para acessar o conteúdo de uma coleção sem expor suas representação interna.  Para suportar múltiplas formas de caminhamento.  Usando iteradores específicos .  Para prover uma interface única para varrer coleções diferentes.  Isto é, para suportar uma iteração polimórfica . Padrão de Projeto - Comportamental - Iterator 8
  9. 9. Iterador  Qual a diferença entre: for (int i = 0; i < c.getSize(); i++) System.out.print(c.get(i));  E: Iterator it = c.iterator(); // Iterador Generico while (it.hasNext()) System.out.print(it.next() + " "); Padrão de Projeto - Comportamental - Iterator 9
  10. 10. Estrutura Padrão de Projeto - Comportamental - Iterator 10
  11. 11. Propriedades  Iterador • Define uma interface para acessar e percorrer os elementos.  IteradorConcreto • Implementa a interface de Iterador. • Mantém o controle da posição corrente no percurso do agregado.  Agregado • Define uma interface para criação de um objeto Iterador.  AgregadoConcreto • Implementa a interface de criação do Iterator para retornar uma instancia do IteradorConcreto apropriado. Padrão de Projeto - Comportamental - Iterator 11
  12. 12.  O IteradorConcreto mantém uma referência para o elemento atual do agregado e é capaz de calcular o próximo elemento da varredura. Padrão de Projeto - Comportamental - Iterator 12
  13. 13. Consequências  Suporta variações na varredura do agregado.  Simplificam a interface do agregado.  Suportam diferentes varreduras simultâneas. Padrão de Projeto - Comportamental - Iterator 13
  14. 14. Detalhes da implementação  Iteradores internos versus iteradores externos  Operadores do iterador  Pode permitir ou não andar para trás, pular posições, etc.  Iteradores nulos são interessantes para prover condições limites. Padrão de Projeto - Comportamental - Iterator 14

×