Patrón Iterator Santiago García Sánchez Rebeca Marcos Salcedo Mª Cristina Zapatero Gironda.

Slides:



Advertisements
Presentaciones similares
Curso de java básico (scjp)
Advertisements

DESARROLLO DE SOLUCIONES EMPRESARIALES MOVILES USANDO TECNOLOGIA SUN APLICACIONES MOVILES CON J2ME RMS Ing. Ronald Criollo.
Observador (observer) Visita (Visitor) Singleton
FACHADA COMPOSITOR MEMENTO
POLIMORFISMO UNIDAD 4.
Lenguaje de programación Java
ÁRBOLES EN C UNIVERSIDAD “ALONSO DE OJEDA” Facultad de Ingeniería
Entendiendo la definición de clases
Arquitectura CLARO-TECNOTREE
Igor Santos Grueiro. Muchos objetos tienen CLAVE.
Modelos de Datos Modelado y Diseño de Bases de Datos
Capitulo 3 Java util.
Aplicación del paradigma orientado a objetos
Diseño y programación de
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
Encapsulamiento y Abstracción
Abstracción de Datos La abstracción es un recurso fundamental en la programación orientada a objetos y está además fuertemente ligado a reusabilidad.
Marzo 2007 Lenguajes Visuales Clase III.
Tecnología de la Programación Javier Nieves Acedo Standar Template Library (STL)
PROGRAMACIÓN EN JAVA Curso-taller inicial de programación en JAVA Facultad de Estadística e Informática TEMA II.
El patrón de diseño Proxy Raúl Heras Alberto Blasco José Manuel Arévalo.
Igor Santos Grueiro. De este tipo de pilas NO vamos a hablar.
Tema 6: Clases Antonio J. Sierra.
Tema 10: Interfaces Antonio J. Sierra.
Técnicas avanzadas de programación Interfaces
Tema 9 Estructuras.
Diseño de Sistemas. Patrones de Diseño. Geronimo Manso.
FACTORY METHOD Edmundo Álvarez Jiménez Antonio Fernández Alonso
Patrón Observador Un patrón de diseño es una descripción de clases y objetos comunicándose entre si adaptada para resolver un problema de diseño general.
Tema 4: Diseño.
(c) P. Gomez-Gil, INAOE DISEÑO DE COMPONENTES DE SOFTWARE * NOTAS DEL CURSO Ingeniería de Software I DRA. MARIA DEL PILAR GÓMEZ GIL INAOEP.
Patrones Creacionales
ANDRES FELIPE BORRERO SALAZAR COD ALEXANDRA CARREÑO SALAS COD LUCIO ANIBAL CRIOLLO COD ALEJANDRO RUIZ IDROBO COD
Lenguajes de Programación Tema 3
Presentado por Alfredo de la Mora Díaz Catedrático Dr. Jesús Favela
Patrones de diseño DECORATOR Mario Rodríguez Martín
Patrones de Diseño: Command
Modelos de Bases de Datos
Luis Pereda Calvo1 Comportamiento de Objetos Estrategia (Strategy) *Política (Policy)
MEMENTO Patrón de Comportamiento Ana María Mateo Jorge P. Andrés
Patrones de Diseño Carolina Perozo Julio Padrón Anthony Accardi.
Laboratorio Análisis y Diseño de Algoritmos 2 Biblioteca estándar de templates de C++ Standard Template Library (STL)‏ Motivación Ejemplo: Lista + Iterador.
PATRON PROTOTYPE Cristina Merino Héctor Carbajo Alicia Arroyo.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6
DOM Document Object Model Fernando Rodrìguez. Que es DOM Dom es una plataforma o interfaz neutral que permite a los programas y scripts accesar o modificar.
Metodología de Programación Ayudantía 5 lelagos.ublog.cl 2009.
PATRÓN ADAPTER (Adaptador) Elena Moreno Ramírez Laura Sánchez Romero Aroa Solana Ruiz.
Interfaces y Clases Internas ELO329: Diseño y Programación Orientados a Objetos.
Interfaces ELO329: Diseño y Programación Orientados a Objetos.
1 Interfaces y Clases Internas ELO-329: Diseño y programación orientados a objetos Agustín J. González.
Herencia. Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando.
Presentado por: PABLO ANDRES DIAZ SAIN HASSAM CAICEDO
COLEGIO DE BACHILLERES PLANTEL 13 XOCHIMILCO-TEPEPAN MATERIA:TIC EQUIPO:21 PRESENTACION: BASE DE DATOS ALUMNAS: Adán Millán Sánchez.
Detalles Generales sobre Java
Punteros, referencias Listas enlazadas Arboles
PATRON OBSERVADOR DEIRY ALI NIETO. El patrón observador lo podemos clasificar como un ejemplo claro de patrones de comportamiento, debido a que este posee.
Algoritmos y estructura de datos en I.O.
Patrones de diseño equipo n.1
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
UML Casos de Uso (repaso) y Diagramas de Clase

Programación Orientada a Objetos: CLASES Y OBJETOS
Listas Dinámicas.
Fundamentos de Ingeniería de Software
Factorías e Iterables Introducción del concepto de patrón de diseño Construcción de tipos para recorridos con for extendido Fundamentos de Programación.
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
Presentación De UML Lenguaje estándar para escribir planos de software Se usa para visualizar, especificar, construir y documentar los artefactos de un.
Las interfaces Predicate y Function Versión Unidad Didáctica 17 Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos.
Iterables virtuales Concepto, Metodología de desarrollo y Ejemplos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión.
Arrays, Cadenas y Vectores Tipos Genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 5 Versión
Transcripción de la presentación:

Patrón Iterator Santiago García Sánchez Rebeca Marcos Salcedo Mª Cristina Zapatero Gironda

Iterator Pertenece a la categoría de patrones de comportamiento la cual tiene que ver con el modo en que las clases y objetos interactúan y se reparten responsabilidades. También es conocido como Cursor.

Propósito Este patrón proporciona un modo de acceder a los elementos de un agregado sin mostrar su estructura interna.

Motivación El patrón Iterator define una interfaz mediante la cual se ofrece un acceso secuencial a un agregado. Un agregado se puede recorrer de diferentes modos y además permite realizar varios recorridos de forma simultánea.

Motivación Es posible definir iteradores con diferentes políticas de recorrido sin necesidad de enumerarlos en el agregado. Ya que el cliente se ajusta a una interfaz determinada se pueden implementar subclases de iteradores con la misma interfaz para lograr iteradores polimórficos.

Motivación Cada objeto agregado concreto se encarga de crear sus propios iteradores mediante un método factoría. De este modo el cliente, para obtener un iterador válido, solo necesita solicitarlo al agregado. Siguiendo este enfoque se crean dos jerarquías de clases, una para los agregados y otra para los iteradores.

Aplicabilidad El patrón Iterator se usa para: acceder al contenido de un objeto agregado sin exponer su representación interna. permitir varios recorridos sobre objetos agregados. proporcionar una interfaz uniforme para recorrer diferentes estructuras agregadas (iteración polimórfica).

Estructura

Participantes Iterador: Define una interfaz para recorrer los agregados. IteradorConcreto: Implementa la interfaz Iterador. Agregado: Define la interfaz para crear un objeto iterador. AgregadoConcreto: Implementa la interfaz de creación de un iterador para devolver un IteradorConcreto

Colaboraciones Un IteradorConcreto almacena la posición del objeto actual en el agregado de modo que sabe cual es el objeto siguiente en el recorrido.

Consecuencias Permite variaciones en el recorrido de un agregado. Los iteradores simplifican la interfaz Agregado. Se puede hacer mas de un recorrido a la vez sobre un agregado.

Implementación Hay dos modos de implementar los iteradores: externos e internos. En los externos el cliente es el que controla el avance del recorrido mientras que en los internos el recorrido se hace de manera automática. El algoritmo de recorrido puede estar en el agregado, guardando en el iterador solo el índice del objeto actual (el iterador sería un cursor), o puede estar en el iterador siendo mas sencillo recorrer el agregado de diferentes formas.

Implementación Un iterador robusto garantiza que las inserciones y borrados no interferirán con el recorrido y lo hace sin copiar el agregado. La mayoría se basan en registrar el iterador con el agregado.

Implementación Se pueden definir en la interfaz Iterador operaciones adicionales para aumentar su funcionalidad, como por ejemplo anterior (posiciona el iterador en el elemento anterior), e irA (posiciona el iterador en un objeto que cumpla el criterio especificado).

Implementación Cuando se recorre un árbol es útil tener un IteradorNulo. El iterador pide recursivamente los iteradores a sus nodos hijos hasta que se alcanzan los nodos hoja que devuelven el IteradorNulo cuya condición de haTerminado se evalúa siempre a verdadero.

Código de Ejemplo public interface Iterator{ public void primero(); public void siguiente(); public boolean haTerminado(); public Object elementoActual(); }

Código de Ejemplo public interface Agregado{ Iterator crearIterador(); int tamaño(); Object get(int index); void add(Object object); void remove(int index); }

Código de Ejemplo public class IteradorLista implements Iterator{ private Agregado agregado; private int actual; IteradorLista (Agregado agregado){ this.agregado = agregado; actual = 0; } public void primero(){ actual = 0; } public void siguiente(){ actual = actual + 1; } public boolean haTerminado(){ return actual >= agregado.tamaño(); } public Object actual (){ return agregado.get(actual); }

Ejemplo

Ejemplo