Autor Tema: Ejercicio resuelto ejemplo de herencia simple, extends y super en Java CU00687B  (Leído 2724 veces)

umadara

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 45
    • Ver Perfil
Buenas, aquí dejo otro ejercicio, el CU00687B del tutorial básico de programación en Java.

Código: [Seleccionar]
public class TestHerencia {
   
    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");
       
        producto1.mostrarPf();
       
        producto2.mostrarPf();

        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");

        producto3.mostrarPr();
       
        producto4.mostrarPr();
       
        producto5.mostrarPr();
       
        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");
       
        producto6.mostrarPCAgua();
       
        producto7.mostrarPCAgua();
       
        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");
       
        producto8.mostrarPCAire();
       
        producto9.mostrarPCAire();
       
        PCNitrogeno producto10 = new PCNitrogeno (9.12 , 12, 5.5, "españa", 0, "lenta", 100);
       
        producto10.mostrarPCNitrogeno();

    }

}

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 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 mostrarPf() {
       
        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 mostrarPr() {
       
         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 mostrarpCongelados() {
       
        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 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 mostrarPCNitrogeno() {
   
            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]
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 mostrarPCAgua() {
   
            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 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 mostrarPCAire() {
   
            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());
        }

}

Decir que soy consciente de que me podía haber ahorrado la clase productos, pero ya que estaba la dejé.

Un saludo.
« Última modificación: 21 de Julio 2016, 12:19 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Buenas umadara

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

La clase Producto (la que tú has llamado Productos) es una clase que es conveniente que esté para agrupar todas las cosas comunes a los distintos tipos de producto. Así se saca partido al uso de la herencia en Java, agrupando en las superclases las características comunes.

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.

El ejercicio decía que se crearan superclases intermedias y no veo que hayas creado superclases intermedias

En este hilo puedes ver una solución completa para este ejercicio - > https://www.aprenderaprogramar.com/foros/index.php?topic=2342.0

Salu2

umadara

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 45
    • Ver Perfil
Buenas agramar y gracias por tu respuesta. En cuanto a lo de que las clases hay que llamarlas en singular, sinceramente no lo tuve en cuenta, lo tendré en cuenta en siguientes ejercicios. También tengo que decir que en cuanto al llamar atributos como String en vez de double, en ese caso pensé que era lo mejor, pero como tu dices, si luego los utilizas habría que catalogarlos como valores numéricos. Por último en cuanto a las clases, considere a las clases intermedias como superclases, que se podría hacer de otra forma, entiendo que si, pero yo opté por esta opción que me ahorraba de hacer más clases y cumplir con lo requerido por el ejercicio.

Un saludo y muchas gracias por tu respuesta.

 

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".