• Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
341
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
13
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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. 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. Padrão de Projeto - Comportamental - Iterator 3
  • 4.  Um objeto intermediário (iterator) é usado entre o cliente e a coleção de objetos. Padrão de Projeto - Comportamental - Iterator 4
  • 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. 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. 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. 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. 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. Estrutura Padrão de Projeto - Comportamental - Iterator 10
  • 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.  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. 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. 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