Padrão de Projeto Iterator

Slides:



Advertisements
Apresentações semelhantes
LISTAS Dilvan Moreira, parcialmente baseado em material do prof. Ricardo Campello.
Advertisements

Padrão de Projeto Iterator
Listas Lineares Estrutura que permite representar um conjunto de dados de forma a preservar a relação de ordem linear. Uma lista linear é composta de nós,
Collections Marco Antonio, Arquiteto de Software – TJDF Atualizado Dezembro/2008.
Java - Interfaces Prof. Msc. Flávio Viotti.
Projeto de Sistemas de Software
Projeto de Sistemas de Software
Padrão de Projeto Interpreter
Projeto de Sistemas de Software Trabalho de Padrões de Projeto
Projeto de Sistemas de Software Fernando de Freitas Silva
Padrões de Projeto Prototype.
Kleinner Farias e Raphael do Vale
INE 5384 Estruturas de Dados Prof a. Patrícia Vilain
Singleton.
Eduardo Bezerra Padrões GoF Eduardo Bezerra
Listas lineares Listas Lineares Fila Dupla Pilha Fila Saída restrita
Árvores Introdução e Aplicações Árvores de Busca Binária Fundamentos
Walfredo Cirne walfredo.dsc.ufpb.br
Erros A Evitar Redundância de Programação public void insere( Priorizavel obj ) throws listaVaziaException; Lançamento de exceções.
Linguagem PHP Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Listas Encadeadas.
Classes e objetos Arrays e Sobrecarga
Professor: Hyggo Almeida
Pesquisa em Memória Primária
Padrão de Projeto Visitor
Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Computação e Estatística Servidor de Documentos XML Usando.
GEJAVA IV SCJA – Certificação Sun java associado exame cx
Programa Expresso de Capacitação Módulo J2ME Aula 5 – Record Management System.
Estudo de Caso: um editor de documentos
Os métodos equals() e hashCode()
Orientação a Objetos e Java Graduação em Ciência da Computação
LEONARDO SIMAS JUSSI BARROS WESLLEY VIEIRA Flyweight.
Pilhas Profa. Nádia Félix.
Estruturas de Dados Aula 11: TAD Pilha
Listas Simplesmente Encadeadas
Estruturas de Dados Aula 17: Estruturas Genéricas
Universidade Católica de Angola Prática de laboratório Fundamentos de Programação II Frei Joaquim José Hangalo.
2002/2003 Programação Orientada para Objectos 1 Aula 2 Noção de lista e de iterador Operações com listas e iteradores Classes embutidas.
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Aula Prática 4 Monitoria IP/CC (~if669).
Linguagem de Programação II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Curso de Linguagem Java
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota (com material da Qualiti Software Process)
Classes Abstratas e Interface
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Padrão de Projeto Iterator Projeto de Sistemas de Software Thiago Pinheiro de Araújo.
Módulo 9 Strings , Coleções e I/O
Vendo o código como um bolo... com várias camadas! Interface com o usuário (GUI) Comunicação Negócio Dados.
Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,
Prof. Hilton Cardoso Marins Junior
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Gerador de Tabela-Verdade
Coleções em Java - Parte 2
Vendo o código como um bolo... com várias camadas! Interface com o usuário (GUI) Comunicação Negócio Dados.
Aula Prática 5 Monitoria IP/CC (~if669). Roteiro 1. 1.Recursão 2. 2.Escopo de Variáveis 3. 3.Arrays 4. 4.Strings.
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Bruno Inojosa MCP .NET Framework
Modificadores Programação II.
April 05 Prof. Ismael H. F. Santos - 1 Módulo III Padrões GOF: Iterator Professores Eduardo Bezerra –
Vendo o código como um bolo... com várias camadas! Interface com o usuário (GUI) Comunicação Negócio Dados.
JAVA – Fila ATAI.
1 Padrão: Iterador (Iterator) Tipo - “Object behavioral” Objetivo - acessar um agregado sem expor a representação Outros nomes - Cursor.
1 Padrões: Composite (p. 163) Objetivo: compor objetos em estruturas de árvores para representar relações de parte/todo. “Composite” permite tratar objetos.
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo - Transparências baseadas nos originais da profa. Renata Galante.
Classes abstratas São classes das quais não se pode instanciar objetos. São classes das quais não se pode instanciar objetos. Seu objetivo é ser herdada.
Coleções em Java (Parte 1)
Vendo o código como um bolo... com várias camadas! Interface com o usuário (GUI) Comunicação Negócio Dados.
Capítulo 4. Conjuntos  Introdução  Principais operações de conjuntos  Principais interfaces de conjuntos  A interface Collection  A interface Iterator.
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Transcrição da apresentação:

Padrão de Projeto Iterator Raphael do Vale © LES/PUC-Rio

Agenda Motivação Aplicabilidade Estrutura Participantes Conseqüências Implementação Exemplo © LES/PUC-Rio

Iterator Motivação É preciso ter um meio de acessar os elementos de um objeto (como uma lista) sem expor a sua estrutura interna; Permitir diversas maneiras de se percorrer uma lista sem precisar criar um código especifico para isso; Poder ter mais de uma iteração concorrente na mesma listagem. Raphael do Vale

Iterator Motivação

Iterator Motivação Ao iterar por uma lista, não saberemos se ela é seqüencial ou hash.

Iterator Aplicabilidade Iterators são utilizados para Acessar o conteúdo de objetos agregados sem que para isso seja necessário conhecer a sua estrutura interna; Acessar o conteúdo desses objetos de diversas formas. Inclusive podendo filtrar por determinados tipos de dados; Para fornecer uma única interface de iteração que percorra diferentes objetos agregados (iteração polimórfica). Raphael do Vale

Iterator Estrutura A lista é a responsável por instanciar o iterator. Só possui métodos de iteração. Sem inclusão de itens ou operação de voltar. return new ConcreteIterator(this); Raphael do Vale

Iterator Participantes InterfaceIterator Define a interface para acessar e percorrer elementos ConcreteIterator Implementa a interface InterfaceIterator Mantém o controle da posição corrente no percurso do ConcreteAgregado InterfaceAgregado Define uma interface de criação do Iterator ConcreteAgregado Implementa a interface de criação do AbstractIterator para retornar uma instância do ConcreteIterator apropriado O InterfaceAgregado não define métodos para inclusão, remoção ou qualquer operação comum à uma lista. Ele só define o método para a criação de um Iterator.

Iterator Conseqüências Suporta variações no percurso de um Agregado. Caminhamento em árvores binárias. Simplificação da interface do agregado. Criação da interface do Iterator elimina métodos responsáveis pelo percurso do Agregado. Podem existir múltiplos percursos em um Agregado. Cada Iterator pode possuir um estado próprio e mantém o controle do percurso. Para cada Iterator instanciado, haverá um percurso em andamento.

Iterator Implementação public interface AbstractAgregado { public class ListaDeVetor implements AbstractAgregado { private Vector vetor; private int tamanho = 0; public ListaDeVetor( int tamanhoInicial ) { this.vetor = new Vector( tamanhoInicial ); } public ListaDeVetor() { this.vetor = new Vector(); public AbstractIterator criaIterator() { return new IteratorVetor( this ); public Object retornaValorIndice( int indice ) { if( indice < this.tamanho ) return vetor.get( indice ); return null; public void adiciona( Object valor ) { this.vetor.add( valor ); this.tamanho++; public void remove( int indice ) { this.vetor.remove( indice ); public int getTamanho() { return this.tamanho; Implementação public class IteratorVetor implements AbstractIterator { private int indiceAtual = 0; private Iterator.ListaDeVetor lista; public IteratorVetor( ListaDeVetor lista ) { this.lista = lista; } public Object itemAtual() { return lista.retornaValorIndice( indiceAtual ); public boolean possuiProximo() { if( indiceAtual >= lista.getTamanho() ) return false; return true; public void proximo() { if( this.possuiProximo() ) this.indiceAtual++; public void primeiro() { this.indiceAtual = 0; public interface AbstractAgregado { AbstractIterator criaIterator(); } public interface AbstractIterator { Object itemAtual(); boolean possuiProximo(); void proximo(); void primeiro(); }

Iterator Exemplo Framework para persistência de dados O sistema cliente não precisa saber como estão armazenados os dados que ele está percorrendo; XML, Tabelas de dados ou Webservices, não importa onde estão os dados, eles serão percorridos da mesma forma; O framework pode armazenar o resultado de uma consulta em um vetor antes de liberar o iterator ou pode apenas marcar o cursor no primeiro elemento. Para cada requisição de próximo, o cursor do banco de dados avança para o primeiro. Isso tudo sem conhecimento do cliente! Exemplo: Hybernate

Obrigado  © LES/PUC-Rio