Buenos Días,
Antes de dejar el ejercicio tengo una duda que os puede parecer una tontería pero no se como solucionarla:
A ver si se explicarla: ¿Existe alguna forma de saber si hay alguna clase (o método) en el API de Java que haga lo que nosotros queremos conseguir, pero, que no sea mirando clase por clase?
Y ahora el ejercicio:
Como las clases de todos los tipos de producto son las mismas del ejercicio del Tema "CU00687B ejercicio resuelto herencia extends super java tutorial programador" no las vuelvo a poner para ahorrar espacio.
A continuación las dos clases nuevas de este Tema:
Clase EnvioDeProductos:
import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;
/**
* EJERCICIO DEL USO DE HERECIAS Y POLIMORFISMO.<br>
* Esta Clase define una Subclase que "bebe" de la Superclase Producto_CU00687B para crear una Lista de Envio de Productos.<br>
* Clase 9 del Ejercicio del Tema "CU00688B concepto polimorfismo java variables jerarquia tipos ejemplos".
* @author Lorenzo Fernández Asensio
* @version 20151125.01
*/
public class EnvioDeProductos_CU00688B {
// Inicialización de la Colección
private List <Producto_CU00687B> listadoEnvio;
/**
* Constructor de la Colección Lista de Envio.
* @param listadoEnvio El parámetro listadoEnvio define la colección de la Lista de Envio de Productos
*/
public EnvioDeProductos_CU00688B() {
// Creación de la Colección
listadoEnvio = new ArrayList <Producto_CU00687B> ();
} // Cierre del Constructor
/**
* Método para añadir un objeto a la Colección
* @param productoNuevo El parámetro productoNuevo define el Producto que se añade a la Colección
*/
public void incluirProductoALista (Producto_CU00687B productoNuevo) {
listadoEnvio.add (productoNuevo);
} //Cierre del método para añadir un objeto a la Colección
/**
* Método para para obtener el Número de Productos en la Lista de Envio
* @return El Número de Productos en la Lista de Envio
*/
public int getNumPtosEnLista(){ return listadoEnvio.size(); }
/**
* Método para mostrar por pantalla la Información usando Iterator
*/
public void mostrarListaEnvioPtos() {
Iterator <Producto_CU00687B> it = listadoEnvio.iterator();
while(it.hasNext()){
it.next().mostrarInfoProducto();
System.out.println("");
}
} // Cierre de la clase
} // Cierre de la Clase
Clase Test Herencia4:
/**
* EJERCICIO DEL USO DE HERECIAS Y POLIMORFISMO.<br>
* Esta Clase define una clase test para probar Herencias y Polimorfismos.<br>
* Se crean y se muestra la información de varios Productos
* Clase 10 del Ejercicio del Tema "CU00688B concepto polimorfismo java variables jerarquia tipos ejemplos".
* @author Lorenzo Fernández Asensio
* @version 20151126.01
*/
public class TestHerencia4_CU00688B {
public static void main (String [ ] Args) {
// CREACIÓN DE LOS OBJETOS ASIGNADO LOS ATRIBUTOS DE LA SUPERCLASE Producto_CU00688B + LOS SUYOS PROPIOS (Si los tienen)
// Creación de 2 objetos de productos Frescos
Producto_CU00687B productoFresco1 = new PtoFresco_CU00687B ("23-11-2015", "21-5-2020", 55, "España");
Producto_CU00687B productoFresco2 = new PtoFresco_CU00687B ("8-4-2010", "8-4-2015", 31, "Malta");
// Creación de 3 objetos de productos Refrigerados
Producto_CU00687B productoRefrigerado1 = new PtoRefrigerado_CU00687B ("19-10-2014", "19-10-2025", 347, "EEUU", 10, "YK-358/91");
Producto_CU00687B productoRefrigerado2 = new PtoRefrigerado_CU00687B ("15-7-1954", "19-10-1955", 2, "Japón", 12, "JP-003-75/4");
Producto_CU00687B productoRefrigerado3 = new PtoRefrigerado_CU00687B ("1-1-2001", "11-11-2011", 11, "Argentina", 6, "AR-34/666");
// Creación de 2 objetos de productos Congelados por Aire
Producto_CU00687B productoCongelAire1 = new PtoCongelAire_CU00687B ("3-6-2007", "3-6-2017", 38, "Groenlandia", -15, 25, 10, 15, 50);
Producto_CU00687B productoCongelAire2 = new PtoCongelAire_CU00687B ("7-1-1964", "7-1-2004", 1, "Suiza", -12, 13, 33, 24, 30);
// Creación de 2 objetos de productos Congelados por Agua
Producto_CU00687B productoCongelAgua1 = new PtoCongelAgua_CU00687B ("24-9-2003", "24-9-2023", 136, "Mexico", -10, 18);
Producto_CU00687B productoCongelAgua2 = new PtoCongelAgua_CU00687B ("26-2-2010", "26-10-2035", 1047, "Alemania", -5, 26);
// Creación de 2 objetos de productos Congelados por Nitrogeno
Producto_CU00687B productoCongelNitro1 = new PtoCongelNitro_CU00687B ("24-12-2012", "24-12-2045", 666, "Italia", -10, "Inmersión", 150);
// Inicialización y Creación de un Objeto de la clase Envio de Productos
EnvioDeProductos_CU00688B productosEnviados = new EnvioDeProductos_CU00688B();
// Inicialización y Creación de una lista con los objetos de los Productos creados
Producto_CU00687B [] listaPtosEnviados = {productoFresco1, productoFresco2, productoRefrigerado1, productoRefrigerado2, productoRefrigerado3,
productoCongelAire1, productoCongelAire2, productoCongelAgua1, productoCongelAgua2, productoCongelNitro1};
// Se añaden los datos de los productos creados en la colección de Envio
for(Producto_CU00687B tmp:listaPtosEnviados){
productosEnviados.incluirProductoALista(tmp);
}
// Se limpia la pantalla de la Consola
System.out.println("\f");
// Se muestra en pantalla un mensaje de Comienzo
System.out.println("\t\tLISTADO DE LOS PRODUCTOS PERAPARADOS PARA SU ENVIO");
System.out.println("\t\t--------------------------------------------------");
System.out.println("");
// Se muestra en pantalla un mensaje con el número de Productos incluidos en la Colección
System.out.println("Envio compuesto por " + productosEnviados.getNumPtosEnLista() + " Productos");
System.out.println("");
System.out.println("DETALLE DEL ENVIO:");
// Se muestra en pantalla la información de los Productos
productosEnviados.mostrarListaEnvioPtos();
} // Cierre del Main
} //Cierre de la clase
Espero vuestros comentarios,
Un Saludo,