El ejemplo es muy sencillo y está relacionado con la implementación
de una clase Lista
y dos recorridos sobre ella: Recorrido hacia adelante y recorrido
hacia atrás.
El diagrama de estructura estática es el siguiente:
1. Interface de la Lista:
Hay una clase List la cual permite crear una lista de enteros de 10 posiciones y tiene unos métodos Count, Get y Read, los cuales devuelven el número de elementos de la lista, que en este caso sencillo es 10, y devuelven el elemento para un índice dado.
3. Clase ListIterator:
Hereda de la clase Iterator e implementa los métodos necesarios
para el recorrido hacia adelante en una lista. Además mantiene un
atributo _current el cual mantiene apuntando al elemento actual
de la lista.
Los métodos funcionan así: First coloca a _current
apuntando al primer elemento de la lista, Next coloca a _current
una posición más adelante de la actual, IsDone
comprueba si _current se refiere a algún elemento dentro
de la lista y CurrentItem devuelve el elemento apuntado por _current
Hereda de la clase Iterator e implementa los métodos necesarios
para el recorrido hacia adelante en una lista. Además mantiene un
atributo _current el cual mantiene apuntando al elemento actual
de la lista.
Los métodos funcionan así: First coloca a _current
apuntando al último elemento de la lista, Next coloca
a _current una posición anterior a la actual, IsDone
comprueba si _current se refiere a algún elemento dentro
de la lista y CurrentItem devuelve el elemento apuntado por _current
for (iter->First();!iter->IsDone();iter->Next())
{
// Aquí se realizan las operaciones que se deseen
}
Los archivos y el makefile para ejecutar el ejemplo se encuentran en
Ejemplo2