Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tema4 PDF
Tema4 PDF
Genericidad en Java.
Colecciones en Java.
Genericidad en C++.
Colecciones en C++.
private T contenido;
this.contenido = contenido;
}
public T getContenido() {
return contenido;
}
}
Contenedor<String> contenedor =
new Contenedor<String>();
contenedor.setContenido("hola");
Contenedor<Integer> contenedor =
new Contenedor<Integer>();
contenedor.setContenido(10);
int valor = contenedor.getContenido();
Restringir la genericidad.
Contenedor<Deposito>
Deposito
No hay relacin
DepositoEstructurado Contenedor<DepositoEstructurado>
Contenedor<Deposito> cDeposito;
Contenedor<DepositoEstructurado> cEstructurado;
cDeposito = cEstructurado; // No compila
Siendo:
Clase Contenedor<T>
Clase CarteraAhorro<T extends Deposito>
double posicion = 0;
for (Deposito deposito : depositos) {
posicion += deposito.getCapital();
}
return posicion;
}
// No compila
if (contenedor instanceof Contenedor<Deposito>) { }
// S compila
if (contenedor instanceof Contenedor) { }
this.contenido = contenido;
}
return contenido;
}
}
Contenedor contenedor =
new Contenedor ();
contenedor.setContenido("hola");
Deposito d = (Deposito)contenedor.getContenido();
// Error de casting en tiempo de ejecucin.
devuelve
AbstractList AbstractSet
extends
HashSet TreeSet implements
interface
ArrayList AbstractSequentialList
class
LinkedList
Curso 2010/2011 Programacin Orientada a Objetos 23
Interfaz Collection<T>
Define las operaciones comunes a todas las colecciones
de Java.
LinkedList<T>
Implementacin basada en listas doblemente enlazadas
Inserciones y modificaciones rpidas, especialmente en el
principio y el final:
addFirst, addLast, removeFirst, removeLast
Acceso aleatorio a elementos ineficiente
Acceso eficiente al principio y al final de la lista:
getFirst y getLast
import java.util.List;
import java.util.LinkedList;
if (! pasivo.containsKey(cliente)) {
productos = new LinkedList<ProductoFinanciero>();
pasivo.put(cliente, productos);
}
else productos = pasivo.get(cliente);
productos.add(producto);
return cjtoProductos;
}
return 1;
return -1;
else return 0;
}
}
/**
* Aade una cuenta a la coleccin de la persona que es titular
* @param cta Cuenta a aadir en la coleccin
* @return true si la cuenta se ha aadido y false en caso contrario
*/
public boolean addCuenta(Cuenta cta){
return misCuentas.add(cta);
}
}
}
}
Iterator<T> iterator();
}
boolean hasNext();
T next();
void remove();
}
Asociaciones:
Almacenan pares de valores <clave, valor>.
Podra verse como una array en el que el ndice no tiene
por qu ser un entero.
Adecuados para accesos aleatorios mediante claves.
map, set
class Cuenta {
public:
list<double>* getOperaciones() const;
private:
list<double>* operaciones;
void anotarOperacion(double cantidad);
};
movimientos = cuenta->getOperaciones();
list<double>::const_iterator it;
it = movimientos->begin();
for (; it != movimientos->end() ;++it)
cout << (*it) << endl;
exit(0);
}
movimientos = cuenta->getOperaciones();
exit(0);
}
Curso 2010/2011 Programacin Orientada a Objetos 60
Prueba con vectores
Los vectores se utilizan como arrays de tamao
fijo.