Autor Tema: CU00686B tutorial ejemplo herencia java extends super constructores poo  (Leído 2950 veces)

Jarper

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 20
    • Ver Perfil
Buenos días,

El programa funciona, pero me gustaría saber si lo que he realizado es lo que se pedía y si hay cosas mejorables.

 EJERCICIO

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.

Clase Productos:
Código: [Seleccionar]
public class Productos
{
    private String fechaDeCaducidad;
    private int numeroDeLote;
    public Productos(String valorFechaDeCaducidad, int valorNumeroDeLote){
        fechaDeCaducidad = valorFechaDeCaducidad;
        numeroDeLote = valorNumeroDeLote;
    }
    public void setFechaDeCaducidad(String valorFechaDeCaducidad){
        fechaDeCaducidad = valorFechaDeCaducidad;
    }
    public void setNumeroDeLote(int valorNumeroDeLote){
        numeroDeLote = valorNumeroDeLote;
    }
    public String getFechaDeCaducidad(){
        return fechaDeCaducidad;
    }
    public int getNumeroDeLote(){
        return numeroDeLote;
    }
    public void mostrarProducto(){
    System.out.println("La información del producto es:\nFecha de caducidad: " + getFechaDeCaducidad() + "\nNumero de lote: "+getNumeroDeLote());
    }
}

Clase Frescos:
Código: [Seleccionar]
public class Frescos extends Productos
{
    private String fechaDeEnvasado;
    private String paisOrigen;
    public Frescos(String valorFechaDeCaducidad, int valorNumeroDeLote,String valorFechaDeEnvasado, String valorPaisOrigen){
        super(valorFechaDeCaducidad,valorNumeroDeLote);
        fechaDeEnvasado = valorFechaDeEnvasado;
        paisOrigen = valorPaisOrigen;
    }
    public void setFechaDeEnvasado(String valorFechaDeEnvasado){
        fechaDeEnvasado = valorFechaDeEnvasado;
    }
    public void setPaisOrigen(String valorPaisOrigen){
        paisOrigen = valorPaisOrigen;
    }
    public String getFechaDeEnvasado(){
        return fechaDeEnvasado;
    }
    public String getPaisOrigen(){
        return paisOrigen;
    }
    public void mostrarFrescos(){
        System.out.println("Producto fresco con número de lote: " + getNumeroDeLote() + "\nFecha de caducidad: "+getFechaDeCaducidad()+"\nFecha de envasado: "+getFechaDeEnvasado()+"\nPaís de origen: "+getPaisOrigen());
    }
}

Clase Refriegerados:
Código: [Seleccionar]
public class Refrigerados extends Productos
{
    private String codigoSupervisionAlimentaria;
    public Refrigerados(String valorFechaDeCaducidad, int valorNumeroDeLote, String valorCodigoSupervisionAlimentaria){
        super(valorFechaDeCaducidad,valorNumeroDeLote);
        codigoSupervisionAlimentaria = valorCodigoSupervisionAlimentaria;
    }
    public void setCodigoSupervisionAlimentaria(String valorCodigoSupervisionAlimentaria){
        codigoSupervisionAlimentaria = valorCodigoSupervisionAlimentaria;
    }
    public String getCodigoSupervisionAlimentaria(){
        return codigoSupervisionAlimentaria;
    }
    public void mostrarRefrigerados(){
     System.out.println("Producto refrigerado con número de lote: " + getNumeroDeLote() + "\nFecha de caducidad: "+getFechaDeCaducidad()+"\nCodigo de supervisión alimentaria: "+getCodigoSupervisionAlimentaria());
    }
}

Clase Congelados:
Código: [Seleccionar]
public class Congelados extends Productos
{
    private int temperaturaRecomendada;
    public Congelados(String valorFechaDeCaducidad, int valorNumeroDeLote, int valorTemperaturaRecomendada){
        super(valorFechaDeCaducidad, valorNumeroDeLote);
        temperaturaRecomendada = valorTemperaturaRecomendada;
    }
    public void setTemperaturaRecomendada(int valorTemperaturaRecomendada){
        temperaturaRecomendada = valorTemperaturaRecomendada;
    }
    public int getTemperaturaRecomendada(){
        return temperaturaRecomendada;
    }
    public void mostrarCongelados(){
        System.out.println("Producto congelado con número de lote: " + getNumeroDeLote() + "\nFecha de caducidad: "+getFechaDeCaducidad()+"\nTemperatura de congelación recomendada: "+getTemperaturaRecomendada());
    }
}

Clase TestHerencia2:
Código: [Seleccionar]
public class TestHerencia2
{
  public static void main(String[] args){
    Frescos productoFresco = new Frescos("30-01-2015",123456,"01-01-2015","España");
    Refrigerados productoRefrigerado = new Refrigerados("30-02-2015",100001,"Aquí va el código de supervision alimentaria");
    Congelados productoCongelado = new Congelados("30-12-2015",654321,-14);
    productoFresco.mostrarFrescos();
    productoRefrigerado.mostrarRefrigerados();
    productoCongelado.mostrarCongelados();
    }
}

Muchísimas gracias por vuestro tiempo y correcciones, son un alivio para mi leerlas.
Atentamente.

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Hola Jarper

Ejercicio perfecto.
Todas las clases con su relación de herencia. Bien
Y cada una con sus métodos estandard y el método solicitado de mostrar los datos del producto

Fuera del ejercicio, solo comentar que al bautizar las clases, le has puesto a todas nombre en plural.
Frescos, Congelados, etc.

Aunque los nombre son válidos, has de convenir que cada clase almacena los atributos de un producto (no de varios). Cada vez que creas un objeto de esa clase creas un producto, no varios a la vez.

Así sería más correcto butizarlas como: Fresco, Congelado, etc.
O bien: ProdFresco, ProdCongelado, etc.

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