Cátedra: Fontela
Fecha: Primer Oportunidad - Segundo Cuatrimestre 2006
Día: 14/12/2006
Explique todas las ventajas que conozca de los métodos incrementales (o iterativos) sobre el desarrollo en cascada. Nombre dos procesos de desarrollo iterativo.
El uso de concurrencia en una aplicación asegura que la misma va a ejecutarse más rápidamente. ¿Verdadero o falso? Justifique.
import java.util.Iterator; import java.util.LinkedList; public class CircularList<T> extends LinkedList<T>{ public CircularList(){ super(); } public Iterator<T> iterator(){ return new CircularIterator(); } private Iterator<T> superIterator(){ return super.iterator(); } public boolean add(T t){ return super.add(t); } class CircularIterator implements Iterator<T>{ private Iterator<T> it; public CircularIterator(){ it = superIterator(); } public boolean hasNext() { if (size() > 0) return true; return false; } public T next() { if (!(it.hasNext())) it = superIterator(); return it.next(); } public void remove() { it.remove(); } } }
La razón por la cual se utiliza herencia es que esa relación permite la reutilización de todos los métodos de LinkedList. Dado que el único método que es necesario reescribir es iterator, se evita la implementación de los demás, los cuales sólo deberían delegar en los de la clase padre. Además, conceptualmente una ListaCircular “es una” LinkedList.
import java.util.Collection; import java.util.Iterator; public class CollectionDisplayer { public static void showCollection(Collection collection){ int max = collection.size(); Iterator it = collection.iterator(); for (int i = 1; i <= max; ++i){ System.out.println(it.next()); //El método toString es llamado implícitamente } } }