Buenas tardes, Mario.
Tienes razón, había creado 5 listas en vez de 1.
Y tampoco había recorrido los objetos mediante iterator, sino con un for each.
Procedo a colgar, de nuevo, los códigos.
El código de la clase "Producto":
public class Producto{
private String fechaCaducidad;
private int numeroLote;
private String fechaEnvase;
private String paisOrigen;
public Producto(String fechaCaducidad, int numeroLote, String fechaEnvase, String paisOrigen){
this.fechaCaducidad = fechaCaducidad;
this.numeroLote = numeroLote;
this.fechaEnvase = fechaEnvase;
this.paisOrigen = paisOrigen;
}
public void setFechaCaducidad(String fechaCaducidad){
this.fechaCaducidad = fechaCaducidad;
}
public void setNumeroLote(int numeroLote){
this.numeroLote = numeroLote;
}
public void setFechaEnvase(String fechaEnvase){
this.fechaEnvase = fechaEnvase;
}
public void setPaisOrigen(String paisOrigen){
this.paisOrigen = paisOrigen;
}
public String getFechaCaducidad(){return fechaCaducidad;}
public int getNumeroLote(){return numeroLote;}
public String getFechaEnvase(){return fechaEnvase;}
public String getPaisOrigen(){return paisOrigen;}
public void mostrarInfoProducto(){
System.out.print("El producto: "+getNumeroLote()+" con fecha de envase: "+getFechaEnvase()+" y fecha de caducidad: "+getFechaCaducidad()+" proviene de: "+getPaisOrigen());
}
}
El código de la clase "ProductoFresco":
public class ProductoFresco extends Producto{
public ProductoFresco(String fechaCaducidad, int numeroLote, String fechaEnvase, String paisOrigen){
super(fechaCaducidad, numeroLote, fechaEnvase, paisOrigen);
}
public void mostrarInfoProducto(){
System.out.println("PRODUCTO FRESCO:");
super.mostrarInfoProducto();
System.out.println();
}
}
El código de la clase "ProductoRefrigeradoOCongelado":
public class ProductoRefrigeradoOCongelado extends Producto{
private float temperaturaMantenemientoRecom;
public ProductoRefrigeradoOCongelado(String fechaCaducidad, int numeroLote, String fechaEnvase, String paisOrigen, float temperaturaMantenemientoRecom){
super(fechaCaducidad, numeroLote, fechaEnvase, paisOrigen);
this.temperaturaMantenemientoRecom = temperaturaMantenemientoRecom;
}
public void setTemperaturaMantenemientoRecom(float temperaturaMantenemientoRecom){
this.temperaturaMantenemientoRecom = temperaturaMantenemientoRecom;
}
public float getTemperaturaMantenemientoRecom(){return temperaturaMantenemientoRecom;}
public void mostrarInfoProducto(){
super.mostrarInfoProducto();
System.out.print(" y tiene una temperatura de mantenemiento recomendad de: "+getTemperaturaMantenemientoRecom()+"C");
}
}
El código de la clase "ProductoRefrigerado":
public class ProductoRefrigerado extends ProductoRefrigeradoOCongelado{
private int codigoOrganismoSupervision;
public ProductoRefrigerado(String fechaCaducidad, int numeroLote, String fechaEnvase, String paisOrigen, float temperaturaMantenemientoRecom, int codigoOrganismoSupervision){
super(fechaCaducidad, numeroLote, fechaEnvase, paisOrigen, temperaturaMantenemientoRecom);
this.codigoOrganismoSupervision = codigoOrganismoSupervision;
}
public void setCodigoOrganismoSupervision(int codigoOrganismoSupervision){
this.codigoOrganismoSupervision = codigoOrganismoSupervision;
}
public int getCodigoOrganismoSupervision(){return codigoOrganismoSupervision;}
public void mostrarInfoProducto(){
System.out.println("PRODUCTO REFRIGERADO:");
super.mostrarInfoProducto();
System.out.print(" y un código de Organismo de Supervisión: "+getCodigoOrganismoSupervision()+"\n");
}
}
El código de la clase "ProductoCongelado":
public class ProductoCongelado extends ProductoRefrigeradoOCongelado{
public ProductoCongelado(String fechaCaducidad, int numeroLote, String fechaEnvase, String paisOrigen, float temperaturaMantenemientoRecom){
super(fechaCaducidad, numeroLote, fechaEnvase, paisOrigen, temperaturaMantenemientoRecom);
}
public void mostrarInfoProducto(){
super.mostrarInfoProducto();
System.out.println();
}
}
El código de la clase "ProductoCongeladoPorAire":
public class ProductoCongeladoPorAire extends ProductoCongelado{
private float nitrogeno;
private float oxigeno;
private float co2;
private float vaporAgua;
public ProductoCongeladoPorAire(String fechaCaducidad, int numeroLote, String fechaEnvase, String paisOrigen, float temperaturaMantenemientoRecom, float nitrogeno, float oxigeno, float co2, float vaporAgua){
super(fechaCaducidad, numeroLote, fechaEnvase, paisOrigen, temperaturaMantenemientoRecom);
this.nitrogeno = nitrogeno;
this.oxigeno = oxigeno;
this.co2 = co2;
this.vaporAgua = vaporAgua;
}
public void setNitrogeno(float nitrogeno){
this.nitrogeno = nitrogeno;
}
public void setOxigeno(float oxigeno){
this.oxigeno = oxigeno;
}
public void setCo2(float co2){
this.co2 = co2;
}
public void setVaporAgua(float vaporAgua){
this.vaporAgua = vaporAgua;
}
public float getNitrogeno(){return nitrogeno;}
public float getOxigeno(){return oxigeno;}
public float getCo2(){return co2;}
public float getVaporAgua(){return vaporAgua;}
public void mostrarInfoProducto(){
System.out.println("PRODUCTO CONGELADO POR AIRE:");
super.mostrarInfoProducto();
System.out.print(" y tiene una composición de aire como sigue: ");
System.out.println("Nitrógeno: "+getNitrogeno()+"%");
System.out.println("Oxígeno: "+getOxigeno()+"%");
System.out.println("Dióxido de carbono: "+getCo2()+"%");
System.out.println("Vapor de agua: "+getVaporAgua()+"%");
}
}
El código de la clase "ProductoCongeladoPorAgua":
public class ProductoCongeladoPorAgua extends ProductoCongelado{
private float salinidadAgua;
public ProductoCongeladoPorAgua(String fechaCaducidad, int numeroLote, String fechaEnvase, String paisOrigen, float temperaturaMantenemientoRecom ,float salinidadAgua){
super(fechaCaducidad, numeroLote, fechaEnvase, paisOrigen, temperaturaMantenemientoRecom);
this.salinidadAgua = salinidadAgua;
}
public void setSalinidadAgua(float salinidadAgua){
this.salinidadAgua = salinidadAgua;
}
public float getSalinidadAgua(){return salinidadAgua;}
public void mostrarInfoProducto(){
System.out.println("PRODUCTO CONGELADO POR AGUA:");
super.mostrarInfoProducto();
System.out.print(" y tiene un porcentaje de salinidad: "+getSalinidadAgua()+"gr sal por litro de agua\n");
}
}
El código de la clase "ProductoCongeladoPorNitrogeno":
public class ProductoCongeladoPorNitrogeno extends ProductoCongelado{
private String metodoCongelacion;
private int tiempoExposicion;
public ProductoCongeladoPorNitrogeno(String fechaCaducidad, int numeroLote, String fechaEnvase, String paisOrigen, float temperaturaMantenemientoRecom, String metodoCongelacion, int tiempoExposicion){
super(fechaCaducidad, numeroLote, fechaEnvase, paisOrigen, temperaturaMantenemientoRecom);
this.metodoCongelacion = metodoCongelacion;
this.tiempoExposicion = tiempoExposicion;
}
public void setMetodoCongelacion(String metodoCongelacion){
this.metodoCongelacion = metodoCongelacion;
}
public void setTiempoExposicion(int tiempoExposicion){
this.tiempoExposicion = tiempoExposicion;
}
public String getMetodoCongelacion(){return metodoCongelacion;}
public int getTiempoExposicion(){return tiempoExposicion;}
public void mostrarInfoProducto(){
System.out.println("PRODUCTO CONGELADO POR NITROGENO:");
super.mostrarInfoProducto();
System.out.print(" y tuvo un método de congelación: "+getMetodoCongelacion()+" y estuvo expuesto al nitrógeno: "+getTiempoExposicion()+"s\n");
}
}
El código de la clase "EnvioDeProductos":
import java.util.ArrayList;
import java.util.Iterator;
public class EnvioDeProductos{
//Definimos una variable de clase "ArrayList" de tipo "Producto"
private ArrayList<Producto> listaPedido;
//Inicializamos la variable como un objeto nuevo de clase "ArrayList" de tipo "Producto"
public EnvioDeProductos(){
listaPedido = new ArrayList<Producto>();
}
//Creación y inclusión de los objetos objetos
public void crearPedido(){
listaPedido.add(new ProductoFresco("23-06-2016",1234, "05-01-2016","Argentina"));
listaPedido.add(new ProductoFresco("22-06-2016",987,"09-10-2016","España"));
listaPedido.add(new ProductoRefrigerado("10-10-2016",345,"01-03-2016","Ecuador",5, 3452));
listaPedido.add(new ProductoRefrigerado("11-10-2016",346,"02-03-2016","Colombia",5, 5421));
listaPedido.add(new ProductoRefrigerado("12-10-2016",347,"03-03-2016","Marruecos",5, 1231));
listaPedido.add(new ProductoCongeladoPorAgua("13-06-2016",908,"12-05-2016","Argentina",-18,40));
listaPedido.add(new ProductoCongeladoPorAgua("13-08-2016",988,"11-06-2016","España",-15,35));
listaPedido.add(new ProductoCongeladoPorAire("11-08-2016",354,"02-03-2016","Puerto Rico",-22,20,20,30,30));
listaPedido.add(new ProductoCongeladoPorAire("11-11-2016",428,"08-08-2016","Francia",-10,10,20,30,40));
listaPedido.add(new ProductoCongeladoPorNitrogeno("10-08-2016",846,"05-05-2016","Suiza",-20,"Tradicional",200));
}
//Invocación de los métodos de cada objeto.
public void imprimirPedido(){
Iterator<Producto> it = listaPedido.iterator();
while(it.hasNext()){
it.next().mostrarInfoProducto();
}
}
}
El código de la clase "TestHerencia4":
import java.util.Calendar;
import java.util.GregorianCalendar;
public class TestHerencia4{
public static void main(String []Args){
//Creamos un objeto de tipo "EnvioDeProductos"
EnvioDeProductos envioDeProductos = new EnvioDeProductos();
//Creamos el pedido (los objetos) mediante la invocación del método crearPedido() del objeto "envioDeProductos" de tipo "EnvioDeProductos"
envioDeProductos.crearPedido();
//Invocamos el método "imprimirPedido()" para mostrar por pantalla el pedido completo
envioDeProductos.imprimirPedido();
//Mediante el objeto "Calendar" de Java y con el método "getTime()" hacemos visible la hora actual.
Calendar hora = GregorianCalendar.getInstance();
System.out.println();
System.out.println("La hora y el día en el cual fue hecho el pedido: "+hora.getTime());
}
}
Miré la solución de "pedro,," que me recomendaste.
Gracias.