iterator observer

5
ITERATOR En programación, un iterator es un objeto que permite a un programador recorrer los elementos de una colección, sin tener en cuenta su implementación específica. Un iterator muchas veces es llamado "cursor", especialmente dentro del contexto de una base de datos. Un iterator es tipo de puntero que tiene dos operaciones principales: referenciar un elemento particular en una colección (llamado elemento de acceso), y modificarse a sí mismo para que apunte al siguiente elemento. Debería también haber una forma de crear un iterator para que apunte a algún primer elemento, como también una forma de determinar cuándo el iterator ha pasado por todos los elementos en la colección. Dependiendo del lenguaje de programación, los iteradores pueden proveer operaciones adicionales o mostrar diferentes comportamientos. El objetivo principal de un iterator, es permitir al usuario procesar cada elemento de una colección sin que el usuario sepa sobre la estructura interna de la misma. Esto permite a la colección almacenar elementos en cualquier forma, mientras permite al usuario tratarlo como si fuera una simple secuencia o lista de elementos. Un iterator es un puntero que es utilizado por un algoritmo para recorrer los elementos almacenados en un contenedor. Dado que los distintos algoritmos necesitan recorrer los contenedores de diversas maneras para realizar diversas operaciones, y los contenedores deben ser accedidos de formas distintas, existen diferentes tipos de iteradores. Cada contenedor de la Librería

Upload: johngomez

Post on 09-Nov-2015

215 views

Category:

Documents


1 download

DESCRIPTION

herramientas de programacion

TRANSCRIPT

ITERATOREn programacin, un iterator es un objeto que permite a un programador recorrer los elementos de una coleccin, sin tener en cuenta su implementacin especfica. Un iterator muchas veces es llamado "cursor", especialmente dentro del contexto de una base de datos.Un iterator es tipo de puntero que tiene dos operaciones principales: referenciar un elemento particular en una coleccin (llamado elemento de acceso), y modificarse a s mismo para que apunte al siguiente elemento. Debera tambin haber una forma de crear un iterator para que apunte a algn primer elemento, como tambin una forma de determinar cundo el iterator ha pasado por todos los elementos en la coleccin. Dependiendo del lenguaje de programacin, los iteradores pueden proveer operaciones adicionales o mostrar diferentes comportamientos. El objetivo principal de un iterator, es permitir al usuario procesar cada elemento de una coleccin sin que el usuario sepa sobre la estructura interna de la misma. Esto permite a la coleccin almacenar elementos en cualquier forma, mientras permite al usuario tratarlo como si fuera una simple secuencia o lista de elementos.Un iterator es un puntero que es utilizado por un algoritmo para recorrer los elementos almacenados en un contenedor. Dado que los distintos algoritmos necesitan recorrer los contenedores de diversas maneras para realizar diversas operaciones, y los contenedores deben ser accedidos de formas distintas, existen diferentes tipos de iteradores. Cada contenedor de la Librera Estndar puede generar un iterator con funcionalidad adecuada a la tcnica de almacenamiento que utiliza. Es precisamente el tipo de iterator requerido como argumento, lo que distingue qu algoritmos STL pueden ser utilizados con cada clase de contenedor. Por ejemplo, si un contenedor solo dispone de iteradores de acceso secuencial, no pueden utilizarse con algoritmos que exijan iteradores de acceso aleatorio.Los iteradores sirven para sealar elementos dentro de los contenedores de la STL, tambin se utilizan para sealar elementos dentro de otras estructuras: flujos (Streams) y bufers de flujo (Buffers streams). Adems se han definido de modo que cuando los elementos de matriz estn definidos mediante subndices son tambin iteradores. La consecuencia es que ciertos algoritmos pueden aplicarse tambin sobre las matrices (las matrices son un tipo de estructura de datos, y que el operador elemento de matriz [] se define como la indireccin de un puntero).

OBSERVERIntencin del patrn Define una dependencia uno a muchos entre objetos, para que, cuando un objeto cambie su estado, todos sus dependencias sean notificadas y actualizadas automticamente. Encapsula el componente central (o motor o ncleo) en unSubjectabstracto y los componentes variables (o interfaz de usuario u opcional) en una jerarqua deObserver. Es la parte "View" enModel-View-Controller.

Ejemplo de problemaUn diseo moltico de gran tamao no se ajusta bien a una nueva representacin grfica o se imponen requerimientos de seguimiento.DiscusinDefine un objeto que es el Keeper (guardin) del modelo de datos y/o lgica de negocios (el Subject). Delega toda la funcionalidad visual a distintos y desacoplados objetos Observer. Los Observers se registran por s mismos con el objeto Subject cuando es creado. Cada vez que Subject cambia, difunde a todos los objetos Observers registrados que ha cambiado y cada Observer consulta al objetoSubject por el subconjunto de datos del estado de Subject por el que es responsable monitorear.Esto permite que el nmero y tipo de objetosViewsean configurados dinmicamente en lugar de ser especificados estticamente en tiempo de compilacin.El protocolo descripto ms arriba especifica el modelo de interaccin "Pull". En lugar de queSubject"pushing" (avise) a cadaObserverque ha cambiado, cadaObserveres responsable de obtener su particular "ventana de inters" deSubject. El modelo "Push" compromete la reutilizacin, mientras que el modelo "Pull" es menos eficiente.Los temas que se discuten, pero que son dejados en consideracin del diseador, incluyenImplementacin de compresin de eventos (slo se enva una nica difusin de cambio luego de que una serie de cambios consecutivos han ocurrido), teniendo un nicoObservercontrolando mltiplesSubjectsy asegurndose que unSubjectnotifica a susObserverscuando est a punto de desaparecer.El patrnObservercaptura la mayor parte de la arquitecturaModel-View-Controllerque ha sido una parte de la comunidadSmalltalkdurante aos.Estructura

Subjectrepresenta la abstraccin principal.Observerrepresenta la abstraccin variable. ElSubjectprovoca que los objetosObserverrealicen lo suyo. CadaObserverpuede llamar nuevamente alSubjectsegn sea necesario.

EjemploEl patrnObserverdefine una relacin de uno a muchos, entonces, cuando un objeto cambia su estado, los otros son notificados y actualizados automticamente. Algunas subastas presentan este patrn. Cada licitador posee una paleta numerada que es usada para indicar una oferta. El subastador comienza la subasta y "observa" cuando una paleta es levantada para aceptar la oferta. La aceptacin de la misma cambia el precio mximo alcanzado y es avisado a todos los postores en la forma de una nueva oferta.