A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Projeto de Sistemas de Software Trabalho de Padrões de Projeto

Apresentações semelhantes


Apresentação em tema: "Projeto de Sistemas de Software Trabalho de Padrões de Projeto"— Transcrição da apresentação:

1 Projeto de Sistemas de Software Trabalho de Padrões de Projeto
Padrão Iterator Luiz Rodolfo Caldeira

2 Propósito do Padrão Prover um meio de acessar os elementos de uma coleção sequencialmente sem se preocupar com a implementação da coleção.

3 Motivação Uma coleção deve disponibilizar uma maneira de percorrer seus objetos, sem expor sua estrutura interna. Deve prover vários meios de ser percorrida. Poder ser percorrida concorrentemente. Mas não queremos escrever todos esses métodos na interface da coleção. Exemplo: Iterador de uma árvore Pré-orderm: raiz, árvore esquerda, árvore direita. Em ordem: árvore esquerda, raiz, árvore direita. Pós-ordem: árvore esquerda, árvore direita, raiz. A responsabilidade por iterar na coleção fica com o iterador: Cada coleção instância um iterador apropriado.

4 Aplicabilidade Acessar e percorrer o conteúdo de uma coleção sem se preocupar com sua representação interna. Prover diferentes formas de percorrer os elementos de coleções. Definir uma interface uniforme para percorrer elementos de uma coleção(polimorfismo).

5 Estrutura

6 Participantes Iterator IteratorImpl Collection CollectionImpl
Define um interface para acessar e percorrer os elementos da coleção. IteratorImpl Implementa a interface Iterator Collection Define uma interface para criar um Iterator CollectionImpl Implementa a interface de criação de um Iterator para retornar um Iterator adequado para esta coleção. Agrupa objetos de um determinado tipo.

7 Colaborações O IteratorImpl mantém a referência para o objeto corrente da CollectionImpl e é capaz de saber qual o próximo objeto a ser acessado.

8 Conseqüências Variações nas formas de percorrer a coleção
Para mudar a forma como os itens da coleção são percorridos basta mudar o iterador Mas a interface continua a mesma Simplifica a interface da coleção A interface necessária para percorrer a coleção fica no iterador Mais de uma iteração pode estar ativa ao mesmo tempo Como cada iterador mantém a informação de qual elemento é o corrente, mais de um iterador pode estar ativo ao mesmo tempo sobre uma coleção.

9 Exemplo de Código public interface Iterator<E>{
public void next(); public void first(); public boolean isDone(); public E current(); } public class InOrderTreeIterator<E extends Node> implements Iterator<E>{ private int currentIndex; private Vector<Node> vector; public InOrderTreeIterator( BSTree<E> tree ){ this.currentIndex = 0; ... public E current(){ return (E)this.vector. get(this.currentIndex); public void first(){ this.currentIndex = 0 ; } public boolean isDone(){ return this.currentIndex == this.vector.size(); public void next(){ this.currentIndex++;

10 Exemplo de Código public interface Tree<E extends Node>{
public Iterator<E> createIterator(); ... } public class BSTree<E extends Node> implements Tree<E>{ public Iterator<E>createIterator(){ return new InOrderTreeIterator<E>( this ); ... public static void main(String[] args) { Tree<Node> tree = new BSTree<Node>(); tree.insert( 5 ); tree.insert( 2 ); tree.insert( 6 ); tree.insert( 1 ); tree.insert( 4 ); Iterator<Node> iterator = tree.createIterator(); for(iterator.first(); !iterator.isDone(); iterator.next()) { System.out.println( iterator.current().getData() ); }

11 FIM Perguntas ?


Carregar ppt "Projeto de Sistemas de Software Trabalho de Padrões de Projeto"

Apresentações semelhantes


Anúncios Google