Está en la página 1de 4

ITERATOR

En 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).

OBSERVER
Intencin 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 unSubject abstracto y los


componentes variables (o interfaz de usuario u opcional) en una jerarqua
de Observer.

Es la parte "View" en Model-View-Controller.

Ejemplo de problema
Un diseo moltico de gran tamao no se ajusta bien a una nueva representacin grfica o
se imponen requerimientos de seguimiento.
Discusin
Define 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 objetos View sean 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 cada Observer que ha cambiado, cada Observer es
responsable de obtener su particular "ventana de inters" de Subject. 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,

incluyen Implementacin de compresin de eventos (slo se enva una nica difusin de


cambio luego de que una serie de cambios consecutivos han ocurrido), teniendo un
nico Observer controlando mltiples Subjects y asegurndose que un Subject notifica a
sus Observers cuando est a punto de desaparecer.
El patrn Observer captura la mayor parte de la arquitectura Model-View-Controller que ha
sido una parte de la comunidad Smalltalk durante aos.
Estructura

Subject representa la abstraccin principal. Observer representa la abstraccin variable.


ElSubject provoca que los objetos Observer realicen lo suyo. Cada Observer puede llamar
nuevamente al Subject segn sea necesario.

Ejemplo
El patrn Observer define 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.

También podría gustarte