Autor Tema: Concepto de polimorfismo y variables polimórficas en Java ArrayList CU00688B  (Leído 2714 veces)

umadara

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 45
    • Ver Perfil
Buenos días, aquí os adjunto otro ejercicio, el CU00688B del manual práctico de programación en Java.

Código: [Seleccionar]
public class Productos {
   
    private double fCaducidad;
   
    private int nºLote;
   
    public Productos (double fCaducidad, int nºLote) {
       
        this.fCaducidad = fCaducidad;
       
       
        this.nºLote = nºLote;
       
    }
   
    public void fCaducidad (double fCaducidad) {
       
        this.fCaducidad = fCaducidad;
   
    }
   
    public void nºLote (int nºLote) {
       
        this.nºLote = nºLote;
   
    }
   
    public void mostrar(){}
   
    public double getCaducidad () {return fCaducidad;}
   
    public int getNºLote () { return nºLote;}
   
}

Código: [Seleccionar]
public class Pfrescos extends Productos {
   
    private double fenvasado;
   
    private String porigen;
   
    public Pfrescos (double fCaducidad, int nºLote, double fenvasado, String porigen) {
       
        super (fCaducidad, nºLote);
       
        this.fenvasado = fenvasado;
       
        this.porigen = porigen;

    }
   
    public void setfenvasado (double fenvasado) {
       
        this.fenvasado = fenvasado;
   
    }
   
    public void setporigen (String porigen) {
       
        this.porigen = porigen;
   
    }
   
    public double getfenvasado() {return fenvasado;}
   
    public String getporigen() {return porigen;}
   
    public void mostrar() {
       
        System.out.println ("el producto fresco fué envasado en fecha de " + getCaducidad() + "\n"+ " el número de lote es " + getNºLote() + "\n" + " la fecha de envasado es " + getfenvasado() + "\n" + "el país de origen del producto es " + getporigen());
   
    }

}

Código: [Seleccionar]
public class Prefrigerados extends Pcongelados {
   
    String cOrganismo;
   
    public Prefrigerados (double fCaducidad, int nºLote, double fenvasado, String porigen, double tªMantenimientoRecomendada, String cOrganismo) {
       
        super (fCaducidad, nºLote, fenvasado, porigen, tªMantenimientoRecomendada);
       
        this.cOrganismo = cOrganismo;

    }
   
    public void setCOrganismo ( String cOrganismo) {
       
        this.cOrganismo = cOrganismo;
   
    }

    public String getCOrganismo () {return cOrganismo;}
   
    public void mostrar() {
       
         System.out.println ("el producto congelado fué envasado en fecha de " + getCaducidad() + "\n"+ " el número de lote es " + getNºLote() + "\n" + " la temperatura de mantenimiento recomendada " + getTªMantenimientoRecomendada() +"\n"+ " la fecha de envasado es " + getfenvasado() +"\n"+ " el país de origen es " + getporigen()+"\n"+ "el código del organismo alimentario es " + getCOrganismo ()) ;
   
    }

}

Código: [Seleccionar]
public class Pcongelados extends Pfrescos  {
   
    private double tªMantenimientoRecomendada;
   
    public Pcongelados (double fCaducidad, int nºLote, double fenvasado, String porigen, double tªMantenimientoRecomendada) {
       
        super (fCaducidad, nºLote, fenvasado, porigen);
       
        this.tªMantenimientoRecomendada = tªMantenimientoRecomendada;
   
    }
   
    public void setTªMantenimientoRecomendada (double tªMantenimientoRecomendada) {
       
        this.tªMantenimientoRecomendada = tªMantenimientoRecomendada;
   
    }
   
    public double getTªMantenimientoRecomendada() {return tªMantenimientoRecomendada;}
   
    public void mostrar() {
       
        System.out.println ("el producto congelado fué envasado en fecha de " + getCaducidad() + "\n"+ " el número de lote es " + getNºLote() + "\n" + " la temperatura de mantenimiento recomendada " + getTªMantenimientoRecomendada() +"\n"+ " la fecha de envasado es " + getfenvasado() +"\n"+ " el país de origen es " + getporigen()) ;
   
    }

}

Código: [Seleccionar]
public class PCAire extends Pcongelados {
   
    private String composicion;
   
    public PCAire (double fCaducidad, int nºLote, double fenvasado, String porigen, double tªMantenimientoRecomendada, String composicion) {
 
        super (fCaducidad, nºLote, fenvasado, porigen, tªMantenimientoRecomendada);
       
        this.composicion = composicion;
    }
   
    public void setComposicion (String composicion) {
       
        this.composicion = composicion;
   
    }
   
    public String getComposicion() {return composicion;}
   
        public void mostrar() {
   
            System.out.println ("el producto congelado fué envasado en fecha de " + getCaducidad() + "\n"+ " el número de lote es " + getNºLote() + "\n" + " la temperatura de mantenimiento recomendada " + getTªMantenimientoRecomendada() +"\n"+ " la fecha de envasado es " + getfenvasado() +"\n"+ " el país de origen es " + getporigen() +"\n"+ "la composición del aire de congelación es " + getComposicion());
        }

}

Código: [Seleccionar]
public class PCAgua extends Pcongelados {
   
    private String salinidad;
   
    public PCAgua (double fCaducidad, int nºLote, double fenvasado, String porigen, double tªMantenimientoRecomendada, String salinidad) {
 
        super (fCaducidad, nºLote, fenvasado, porigen, tªMantenimientoRecomendada);
       
        this.salinidad = salinidad;
    }
   
    public void setSalinidad (String salinidad) {
       
        this.salinidad = salinidad;
   
    }
   
    public String getSalinidad() {return salinidad;}
   
        public void mostrar() {
   
            System.out.println ("el producto congelado fué envasado en fecha de " + getCaducidad() + "\n"+ " el número de lote es " + getNºLote() + "\n" + " la temperatura de mantenimiento recomendada " + getTªMantenimientoRecomendada() +"\n"+ " la fecha de envasado es " + getfenvasado() +"\n"+ " el país de origen es " + getporigen() +"\n"+ "la salinidad del agua de congelación es " + getSalinidad());
        }

}

Código: [Seleccionar]
public class PCNitrogeno extends Pcongelados {
   
    private String mCongelacion;
   
    private int tExposicion;
   
    public PCNitrogeno (double fCaducidad, int nºLote, double fenvasado, String porigen, double tªMantenimientoRecomendada, String mCongelacion, int tExposicion) {
 
        super (fCaducidad, nºLote, fenvasado, porigen, tªMantenimientoRecomendada);
       
        this.mCongelacion = mCongelacion;
       
        this.tExposicion = tExposicion;
    }
   
    public void setMCongelacion (String mCongelacion) {
       
         this.mCongelacion = mCongelacion;
   
    }
   
    public void setTExposicion (int tExposicion) {
       
        this.tExposicion = tExposicion;
   
    }
   
    public String getMCongelacion() {return mCongelacion;}
   
    public int getTExposicion() {return tExposicion;}
   
        public void mostrar() {
   
            System.out.println ("el producto congelado fué envasado en fecha de " + getCaducidad() + "\n"+ " el número de lote es " + getNºLote() + "\n" + " la temperatura de mantenimiento recomendada " + getTªMantenimientoRecomendada() +"\n"+ " la fecha de envasado es " + getfenvasado() +"\n"+ " el país de origen es " + getporigen() +"\n"+ "el método de congelación utilizado fué " + getMCongelacion() +"\n"+ "el tiempo de exposición al nitrógeno fue " + getTExposicion());
        }

}

Código: [Seleccionar]
import java.util.*;

import java.util.Iterator;

public class EnvioProductos {
   
    public static void main (String [] args) {
       
        Pfrescos producto1 = new Pfrescos (10.12 , 12, 9.11, "españa");
       
       
        Pfrescos producto2 = new Pfrescos (5.12, 45, 29.11, "españa");
       
        Prefrigerados producto3 = new Prefrigerados (10.12 , 12, 9.10, "españa", 5, "c25");
       
        Prefrigerados producto4 = new Prefrigerados (9.12 , 12, 8.10, "españa", 5, "c25");
       
        Prefrigerados producto5 = new Prefrigerados (11.12 , 12, 10.10, "españa", 5, "c25");
       
        PCAgua producto6 = new PCAgua (9.12 , 12, 5.5, "españa", 0, "1% nitrogeno, 2% oxígeno, 3% CO2, 4% H2O");
       
        PCAgua producto7 = new PCAgua (8.12 , 11, 4.5, "españa", 0, "1% nitrogeno, 2% oxígeno, 3% CO2, 4% H2O");
       
        PCAire producto8 = new PCAire (9.12 , 12, 5.5, "españa", 0, "30 g/l");
       
        PCAire producto9 = new PCAire (8.12 , 12, 4.5, "españa", 0, "30 g/l");
       
        PCNitrogeno producto10 = new PCNitrogeno (9.12 , 12, 5.5, "españa", 0, "lenta", 100);
       
   
        ArrayList <Productos> ListaProductos = new ArrayList<Productos>();
       
        //ListaProductos = Arrays.asList(producto1, producto2, producto3, producto4, producto5, producto6, producto7, producto8, producto9, producto10);
       
        ListaProductos.add(producto1);
       
        ListaProductos.add(producto2);
       
        ListaProductos.add(producto3);
       
        ListaProductos.add(producto4);
       
        ListaProductos.add(producto5);
       
        ListaProductos.add(producto6);
       
        ListaProductos.add(producto7);
       
        ListaProductos.add(producto8);
       
        ListaProductos.add(producto9);
       
        ListaProductos.add(producto10);
       
        Iterator <Productos> it1 = ListaProductos.iterator();
        int i=1;
        while (it1.hasNext()){
            Productos productoAux = it1.next();

            System.out.print(i);
           
            productoAux.mostrar();
           
            i++;
        }
       
    }
 
}

Sin más, un saludo y agradecer su colaboración
« Última modificación: 21 de Julio 2016, 12:25 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2662
    • Ver Perfil
Buenas umadara en este ejercicio tienes los mismos problemas que en el anterior y algunos más

Para nombrar las clases debes usar el singular, está una explicación en https://www.aprenderaprogramar.com/foros/index.php?topic=3035.msg13698#msg13698

En los productos congelados sería preferible que todos los atributos que se corresponden con valores que pueden ser numéricos y usarse para cálculos lleven un tipo de dato numérico.

Ejemplo:

En lugar de utilizar: private String salinidad; usar private double salinidad; ya que este valor es un valor numérico que puede ser utilizado para realizar cálculos.

En los congelados por aire en lugar de private String composicion; sería mejor declarar los atributos correspondientes al valor numérico de porcentaje de nitrógeno, oxígeno, dióxido de carbono y vapor de agua.

Además no has cumplido con lo que pedía el ejercicio relativo a que se creara una clase EnvioDeProductos que represente un envío de productos como colección de objetos que admite el polimorfismo y crear una clase testHerencia4 con el método main, sino que has hecho "una mezcla" de estas dos clases, pero no era eso lo que se pedía.

Puedes ver una solución a este ejercicio en - > https://www.aprenderaprogramar.com/foros/index.php?topic=2959.0

Salu2

umadara

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 45
    • Ver Perfil
Buenas Ogramar, en cuanto a las correcciones que vienen del ejercicio anterior me remito a ellas. En cuanto a lo que hice un mix de la clase Test y la clase EnvioProductos fue simplemente para ahorrarme tiempo, sé que quizá no sea la mejor opción y que el ejercicio pedia las 2, pero creo que cumple con lo que requería el enunciado pese a tener un mix de las 2 clases.
Muchas gracias por tu respuesta y lo tendré en cuenta para siguientes entregas.
Saludos.

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".