Iterador - PowerPoint PPT Presentation

About This Presentation
Title:

Iterador

Description:

No Slide Title ... Iterador ATAI – PowerPoint PPT presentation

Number of Views:41
Avg rating:3.0/5.0
Slides: 13
Provided by: Vitor1
Category:
Tags: iterador | system

less

Transcript and Presenter's Notes

Title: Iterador


1
  • Iterador

ATAI
2
Introdução
  • Desejamos criar uma classe para converter
    estrutura de dados. Exemplo copiar o conteúdo de
    uma estrutura linear para uma árvore ou
    vice-versa
  • Cada estrutura de dados oferece interface e
    protocolo diferentes para o acesso aos seus
    elementos
  • Algumas estruturas restringem o acesso aos seus
    elementos, como em Filas e Pilhas
  • Não é possível caminhar por seus elementos sem
    modificar as estruturas. (Como aceder o elemento
    do meio de uma pilha sem retirar os que estão
    sobre ele?)
  • Seria necessário ter acesso à implementação para
    burlar o protocolo de acesso
  • Isso quebra um dos pilares da OO o
    encapsulamento

3
Objectivo
  • Proporcionar uma forma de aceder sequencialmente
    os elementos de um objecto agregado (uma
    colecção) sem expor sua representação interna.
  • Motivação
  • Deseja-se isolar o uso de uma estrutura de dados
    da sua representação interna.
  • Isso permite mudar a estrutura sem afectar quem a
    utiliza.
  • Às vezes é necessário permitir que mais de um
    cliente faça o percurso da estrutura
    simultaneamente.

4
Como Percorrer uma Estrutura
  • Para determinadas estruturas, pode haver formas
    diferentes de percorrer e queremos encapsular a
    forma exacta de percorrer a estrutura.
  • Por exemplo
  • Uma fila pode ser percorrida nos sentidos
    frentegtfundo ou fundogtfrente
  • Uma pilha pode ser percorrida do topo para a base
    e da da base para o topo
  • Pode ser necessário criar um filtro" que só
    retorne certos elementos

5
Permissas do Iterator
  • Um iterador deve ter um interface suficientemente
    genérica e simples de forma que possa ser usado
    para percorrer todos os TADs
  • Criar o iterador
  • O iterador depende do TADs a ser percorrido,
    sendo necessário que seja criado pelo mesmo
  • Aplicabilidade
  • O padrão Iterator deve ser usado
  • Para aceder o conteúdo de um objecto agregado sem
    expor a sua representação interna
  • Para suportar múltiplas formas de varrimento
  • Para proporcionar uma interface única para
    percorrer TADs diferentes

6
Diagrama UML
7
Diagrama UML Actores
  • Iterator
  • Define uma interface para aceder e percorrer os
    elementos
  • IteradorConcreto
  • Implementa a interface Iterador
  • Mantém a posição corrente (e qualquer outro
    estado) no percurso do TAD
  • Colecção
  • Define uma interface para criar um objecto
    Iterador
  • ColecçãoConcreta
  • Implementa a interface que cria o Iterador para
    retornar o IteradorConcreto apropriado

8
Iterador
  • java.util.Iterator (5.0) suporta os seguintes
    métodos
  • boolean hasNext()
  • Retorna true se existirem mais elementos no
    Iterador.
  • Object next()Retorna o próximo elemento no
    Iterador.
  • void remove()- opcional
  • Remove o último elemento devolvido pelo Iterador
  • Podemos definir o nosso interface
  • public interface Iterator
  • boolean hasNext()
  • Object next()

9
Diagrama UML
10
Iterador numa Estrutura Linear EstáticaUso de
classe local
  • public class EstruturaLinearEstatica implements
    estruturaLinear
  • private Object tab
  • private int tamanho
  • private class IteratorEst implements Iterator
  • int pos 0
  • public boolean hasNext()
  • return (pos lt tamanho )
  • public Object next()
  • return tabpos
  • public Iterator getIterator()
  • return new IteratorEst ()
  • //implementação de todos os métodos da Interface
    estruturaLinear

11
Iterador numa Estrutura Linear DinâmicaUso de
classe local
  • public class EstruturaLinearDinamica implements
    estruturaLinear
  • private No cabeca
  • private int tamanho
  • private class ListaEncadeadaIterator implements
    Iterator
  • No pos cabeca
  • public boolean hasNext()
  • return (pos ! null )
  • public Object next()
  • Object cur pos.getElemento()
  • pos pos.getProximo()
  • return cur

12
Iterador numa Estrura Linear
  • public static void main (String args)
  • Iterator ai, ai2
  • EstruturaLinear s
  • s new EstruturaLinearDinamica ()
  • for( int i 0 i lt 10 i )
  • s.inserir( new Integer(i) )
  • ai s.getIterator()
  • while (ai.hasNext())
  • System.out.println("\n1 Iterador
    "ai.next())
  • System.out.print(" 2 Iterador")
  • for (ai2 s.getIterator()
    ai2.hasNext())
  • System.out.print(" "ai2.next())
Write a Comment
User Comments (0)
About PowerShow.com