Autor Tema: Ejercicio resuelto herencia en java superclases y subclases hijas (CU00686B)  (Leído 42000 veces)

Dan_SB

  • Avanzado
  • ****
  • Mensajes: 273
  • *<DanielsCK>*
    • Ver Perfil
Buenas noches!

Vengo a resolver el ejercicio del capitulo 86° del curso. El enunciado es el siguiente:

Se plantea desarrollar un programa Java que permita la gestión de una empresa agroalimentaria que trabaja con tres tipos de productos: productos frescos, productos refrigerados y productos congelados. Todos los productos llevan esta información común: fecha de caducidad y número de lote. A su vez, cada tipo de producto lleva alguna información específica. Los productos frescos deben llevar la fecha de envasado y el país de origen. Los productos refrigerados deben llevar el código del organismo de supervisión alimentaria. Los productos congelados deben llevar la temperatura de congelación recomendada. Crear el código de las clases Java implementando una relación de herencia desde la superclase Producto hasta las subclases ProductoFresco, ProductoRefrigerado y ProductoCongelado. Cada clase debe disponer de constructor y permitir establecer (set) y recuperar (get) el valor de sus atributos y tener un método que permita mostrar la información del objeto. Crear una clase testHerencia2 con el método main donde se cree un objeto de cada tipo y se muestren los datos de cada uno de los objetos creados.

Curiosidad: Miren como marca netbeans las super clases:


Asi me dare cuenta quienes son en futuros proyectos, jajaja!


Okay, aqui vamos presentando cada clase. La primera, la superclase Producto:

Código: [Seleccionar]
package comidaHerencia;

public class Producto {
    String fechaCaducidad, numeroLote;
   
    public Producto(String fechaCaducidad, String numeroLote){
        this.fechaCaducidad = fechaCaducidad;
        this.numeroLote = numeroLote;
    }
   
    public void setFechaCaducidad(String fecha){
        fechaCaducidad = fecha;
    }
   
    public void setNumeroLote(String num){
        numeroLote = num;
    }
   
    public String getFechaCaducidad(){
        return fechaCaducidad;
    }
   
    public String getNumeroLote(){
        return numeroLote;
    }
}


Clase ProductoCongelado:

Código: [Seleccionar]
package comidaHerencia;

public class ProductoCongelado extends Producto {
    private double tempCongelacionRecomendada;
   
    public ProductoCongelado(String fechaCaducidad, String numeroLote){
        super(fechaCaducidad, numeroLote);
        tempCongelacionRecomendada = 0;
    }
   
    public void setTemperaturaRecomendada(double temperatura){
        tempCongelacionRecomendada = temperatura;
    }
   
    public double getTemperaturaRecomendada(){
        return tempCongelacionRecomendada;
    }
}


Clase ProductoFresco:

Código: [Seleccionar]
package comidaHerencia;

public class ProductoFresco extends Producto {
    private String fechaEnvasado, paisDeOrigen;
   
    public ProductoFresco(String fechaCaducidad, String numeroLote){
        super(fechaCaducidad, numeroLote);
        fechaEnvasado = "Desconocido";
        paisDeOrigen = "Desconocido";
    }
   
    public void setFechaEnvasado(String fecha){
        fechaEnvasado = fecha;
    }
   
    public void setPaisDeOrigen(String pais){
        paisDeOrigen = pais;
    }
   
    public String getFechaEnvasado(){
        return fechaEnvasado;
    }
   
    public String getPaisDeOrigen(){
        return paisDeOrigen;
    }
}


Clase ProductoRefrigerado:

Código: [Seleccionar]
package comidaHerencia;

public class ProductoRefrigerado extends Producto{
    private String codigoSupervisionAlimentaria;
   
    public ProductoRefrigerado(String fechaCaducidad, String numeroLote){
        super(fechaCaducidad, numeroLote);
        codigoSupervisionAlimentaria = "Desconocido";
    }
   
    public void setCodigoSupervisionAlimentaria(String codigo){
        codigoSupervisionAlimentaria = codigo;
    }
   
    public String getCodigoSupervisionAlimentaria(){
        return codigoSupervisionAlimentaria;
    }
}


Clase testHerencia2:

Código: [Seleccionar]
package comidaHerencia;

public class testHerencia2 {
    public static void main(String[]args){
        ProductoCongelado nuggets = new ProductoCongelado("16-10-2016","L1603004");
        ProductoFresco lechuga = new ProductoFresco("20-10-2016","L1610005");
        ProductoRefrigerado jugo = new ProductoRefrigerado("25-10-2016","L1609006");
        System.out.println("Sin datos. \nProducto Congelado: ");
        System.out.println("Fecha de caducidad: " + nuggets.getFechaCaducidad() + "\nNumero de Lote: " + nuggets.getNumeroLote()
                           + "\nTemperatura Recomendada: " + nuggets.getTemperaturaRecomendada() + "C°");
        System.out.println();
        System.out.println("Producto Fresco: ");
        System.out.println("Fecha de caducidad: " + lechuga.getFechaCaducidad() + "\nNumero de Lote: " + lechuga.getNumeroLote()
                           + "\nFecha de envasado: " + lechuga.getFechaEnvasado() + "\nPais de Origen: " + lechuga.getPaisDeOrigen());
        System.out.println();
        System.out.println("Producto Refrigerado: ");
        System.out.println("Fecha de caducidad: " + jugo.getFechaCaducidad() + "\nNumero de Lote: " + jugo.getNumeroLote()
                           + "\nCodigo de supervision alimentaria: " + jugo.getCodigoSupervisionAlimentaria());
        nuggets.setTemperaturaRecomendada(-18);
        lechuga.setFechaEnvasado("03-10-2015");
        lechuga.setPaisDeOrigen("Panamá");
        jugo.setCodigoSupervisionAlimentaria("B#6745");
        System.out.println();
        System.out.println("Con datos. \nProducto Congelado: ");
        System.out.println("Fecha de caducidad: " + nuggets.getFechaCaducidad() + "\nNumero de Lote: " + nuggets.getNumeroLote()
                           + "\nTemperatura Recomendada: " + nuggets.getTemperaturaRecomendada() + "C°");
        System.out.println();
        System.out.println("Producto Fresco: ");
        System.out.println("Fecha de caducidad: " + lechuga.getFechaCaducidad() + "\nNumero de Lote: " + lechuga.getNumeroLote()
                           + "\nFecha de envasado: " + lechuga.getFechaEnvasado() + "\nPais de Origen: " + lechuga.getPaisDeOrigen());
        System.out.println();
        System.out.println("Producto Refrigerado: ");
        System.out.println("Fecha de caducidad: " + jugo.getFechaCaducidad() + "\nNumero de Lote: " + jugo.getNumeroLote()
                           + "\nCodigo de supervision alimentaria: " + jugo.getCodigoSupervisionAlimentaria());
    }
}


Aquí la prueba, su ejecución:


Esperare sus comentarios y sus debidas correcciones

Saludos!
« Última modificación: 18 de Abril 2015, 22:38 por Alex Rodríguez »
"Luchar por tus sueños y cumplirlos... eso es vivir.."

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Re:Ejercicio (CU00686B), Herencia en java.
« Respuesta #1 en: 18 de Abril 2015, 17:12 »
Hola Dan

La estructura de las clases es correcta.
Pero no se aprovecha la relación de herencia al no disponer las clases de un método para mostrar la información de cada producto como se pide en el enunciado.

Este método es el que se usará para mostrar los datos en lugar de los getters de cada producto (tarea más farragosa)

En los métodos de las clases hijas usando la palabra clave 'super' invocaremos el método para mostrar información de la clase padre.

Saludos

Dan_SB

  • Avanzado
  • ****
  • Mensajes: 273
  • *<DanielsCK>*
    • Ver Perfil
aaaah!! verdad toni, enseguida lo arreglo!
"Luchar por tus sueños y cumplirlos... eso es vivir.."

Dan_SB

  • Avanzado
  • ****
  • Mensajes: 273
  • *<DanielsCK>*
    • Ver Perfil
Ahora si!

Clase Producto:
Código: [Seleccionar]
package comidaHerencia;

public class Producto {
    String fechaCaducidad, numeroLote;
   
    public Producto(String fechaCaducidad, String numeroLote){
        this.fechaCaducidad = fechaCaducidad;
        this.numeroLote = numeroLote;
    }
   
    public void setFechaCaducidad(String fecha){
        fechaCaducidad = fecha;
    }
   
    public void setNumeroLote(String num){
        numeroLote = num;
    }
   
    public String getFechaCaducidad(){
        return fechaCaducidad;
    }
   
    public String getNumeroLote(){
        return numeroLote;
    }
   
    public void imprimirInfo(){
        System.out.println("Fecha Caducidad: " + getFechaCaducidad() + "\nNumero de Lote: " + getNumeroLote());
    }
}

Clase ProductoCongelado:
Código: [Seleccionar]
package comidaHerencia;

public class ProductoCongelado extends Producto {
    private double tempCongelacionRecomendada;
   
    public ProductoCongelado(String fechaCaducidad, String numeroLote){
        super(fechaCaducidad, numeroLote);
        tempCongelacionRecomendada = 0;
    }
   
    public void setTemperaturaRecomendada(double temperatura){
        tempCongelacionRecomendada = temperatura;
    }
   
    public double getTemperaturaRecomendada(){
        return tempCongelacionRecomendada;
    }
   
    public void imprimirDatos(){
        imprimirInfo();
        System.out.println("Temperatura Recomendada: " + getTemperaturaRecomendada() + "\n");
    }
}

ProductoRefrigerado
Código: [Seleccionar]
package comidaHerencia;

public class ProductoRefrigerado extends Producto{
    private String codigoSupervisionAlimentaria;
   
    public ProductoRefrigerado(String fechaCaducidad, String numeroLote){
        super(fechaCaducidad, numeroLote);
        codigoSupervisionAlimentaria = "Desconocido";
    }
   
    public void setCodigoSupervisionAlimentaria(String codigo){
        codigoSupervisionAlimentaria = codigo;
    }
   
    public String getCodigoSupervisionAlimentaria(){
        return codigoSupervisionAlimentaria;
    }
   
    public void imprimirDatos(){
        imprimirInfo();
        System.out.println("Codigo de Supervision Alimentaria: " + getCodigoSupervisionAlimentaria());
    }
}

Clase ProductoFresco:
Código: [Seleccionar]
package comidaHerencia;

public class ProductoFresco extends Producto {
    private String fechaEnvasado, paisDeOrigen;
   
    public ProductoFresco(String fechaCaducidad, String numeroLote){
        super(fechaCaducidad, numeroLote);
        fechaEnvasado = "Desconocido";
        paisDeOrigen = "Desconocido";
    }
   
    public void setFechaEnvasado(String fecha){
        fechaEnvasado = fecha;
    }
   
    public void setPaisDeOrigen(String pais){
        paisDeOrigen = pais;
    }
   
    public String getFechaEnvasado(){
        return fechaEnvasado;
    }
   
    public String getPaisDeOrigen(){
        return paisDeOrigen;
    }
   
    public void imprimirDatos(){
        imprimirInfo();
        System.out.println("Fecha de envasado: " + getFechaEnvasado() + "\nPais de origen: " + getPaisDeOrigen() + "\n");
    }
}

Clase TestHerencia:
Código: [Seleccionar]
package comidaHerencia;

public class testHerencia2 {
    public static void main(String[]args){
        ProductoCongelado nuggets = new ProductoCongelado("16-10-2016","L1603004");
        ProductoFresco lechuga = new ProductoFresco("20-10-2016","L1610005");
        ProductoRefrigerado jugo = new ProductoRefrigerado("25-10-2016","L1609006");
        nuggets.setTemperaturaRecomendada(-18);
        lechuga.setFechaEnvasado("03-10-2015");
        lechuga.setPaisDeOrigen("Panamá");
        jugo.setCodigoSupervisionAlimentaria("B#6745");
        System.out.println("Producto Congelado: ");
        nuggets.imprimirDatos();
        System.out.println("Producto Fresco: ");
        lechuga.imprimirDatos();
        System.out.println("Producto Refrigerado: ");
        jugo.imprimirDatos();
    }
}



Disculpas! y gracias!
"Luchar por tus sueños y cumplirlos... eso es vivir.."

 

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