Autor Tema: Java plantear relaciones de herencia agrupando atributos y métodos CU00686B  (Leído 4194 veces)

matru

  • Sin experiencia
  • *
  • Mensajes: 41
    • Ver Perfil
Respuesta al ejercicio CU00686B del tutorial java desde cero:

Código: [Seleccionar]
public class Producto{

    private String nombreDeProducto, fechaDeCaducidad;
    private int numeroDeLote;
   
   
    public Producto(String nombreDeProducto, String fechaDeCaducidad, int numeroDeLote){
   
        this.nombreDeProducto = nombreDeProducto;
        this.fechaDeCaducidad = fechaDeCaducidad;
        this.numeroDeLote = numeroDeLote;
       
    }
    public Producto(){}

     public void setNombreDeProducto(String nombreDeProducto){
   
        this.nombreDeProducto = nombreDeProducto;
    }
   
    public String getNombreDeProducto(){return nombreDeProducto;}
   
    public void setFechaDeCaducidad(String fechaDeCaducidad){
   
        this.fechaDeCaducidad = fechaDeCaducidad;
    }
   
    public String getFechaDeCaducidad(){return fechaDeCaducidad;}
   
    public void setNumeroDeLote(int numeroDeLote){
   
        this.numeroDeLote = numeroDeLote;
    }
   
    public int getNumeroDeLote(){return numeroDeLote;}
}

Código: [Seleccionar]

public class ProductoFresco extends Producto{


    private String fechaEnvasado;
    private String paisOrigen;
   
   
    public ProductoFresco(String nombre, String fechaCaducidad, int numeroLote, String fechaEnvasado, String paisOrigen){
       super(nombre, fechaCaducidad, numeroLote);
       this.fechaEnvasado = fechaEnvasado;
       this.paisOrigen= paisOrigen;
    }
   
    public ProductoFresco(String nombre, String fechaCaducidad, int numeroLote){
   
        super(nombre, fechaCaducidad, numeroLote);
    }
   
    public ProductoFresco(){
      super();
    }
   
    public void setFechaEnvasado(String fechaEnvasado){
   
        fechaEnvasado = fechaEnvasado;
    }
   
    public String getFechaEnvasado(){return fechaEnvasado;}
   
    public void setPaisDeOrigen(String paisOrigen){
   
        paisOrigen = paisOrigen;
    }
   
    public String getPaisOrigen(){return paisOrigen;}
   
    public void mostrarProFresco(){
   
        System.out.println("Contenido del Producto Fresco\nNombre: "+getNombreDeProducto()+"\nNumero de lote: "+ getNumeroDeLote() +
        "\nPais de Origen: "+ getPaisOrigen()+"\nFecha de Envasado: "+ getFechaEnvasado()+"\nFecha de Caducidad: " + getFechaDeCaducidad()+"\n");
       
        }

}

Código: [Seleccionar]
public class ProductoRefigerado extends ProductoFresco
{
    private  String codigoSupervisionAlimentaria;
   
    public ProductoRefigerado(){
    super();}
   
    public ProductoRefigerado(String nombre, String fechaDeCaducidad, int numero, String codigo){
   
        super( nombre, fechaDeCaducidad, numero);
        codigoSupervisionAlimentaria = codigo;   
    }
   
    public ProductoRefigerado(String nombre, String fechaDeCaducidad, int numero){
   
        super(nombre, fechaDeCaducidad, numero);
    }
   
    public void setCodigoSupervisionAlimentaria(String codigoSupervisionAlimentaria){
   
        codigoSupervisionAlimentaria = codigoSupervisionAlimentaria;
    }
   
    public String getCodigoSupervisionAlimentaria(){return codigoSupervisionAlimentaria;}
   
    public void mostrarProRefigerado(){
   
        System.out.println("Contenido del producto refigerado\n"+ "Nombre: "+ getNombreDeProducto() +"\nFecha de caducidad: "+getFechaDeCaducidad()+"\nNumero de Lote: "+getNumeroDeLote()+"\nCodigo de Supervision Alimentaria: "+getCodigoSupervisionAlimentaria()+"\n");
    }
}


Código: [Seleccionar]
public class ProductoCongelado extends  ProductoRefigerado
{
   
    private int temperaturaRecomendada;
   
    public ProductoCongelado(){}
   
    public ProductoCongelado(String nombre, String fechaDeCaducidad, int numeroDeLote, int temperatura){
       super(nombre, fechaDeCaducidad, numeroDeLote);
        temperaturaRecomendada = temperatura;
    }
   
    public void setTemperaturaRecomendada(int temperaturaRecomendada){
   
        temperaturaRecomendada = temperaturaRecomendada;
    }
   
    public int getTemperaturaRecomendada(){return temperaturaRecomendada;}
   
    public void mostrarProductos(){
   
        System.out.println("Contenido del producto congelado\nNombre: " +getNombreDeProducto()+"\nFecha de Caducidad: "+ getFechaDeCaducidad() + "\nNumero de Lote: " + getNumeroDeLote() +"\nTemperatura de Congelado: "+ getTemperaturaRecomendada()+" grado\n");
    }
}

Código: [Seleccionar]
public class TestHerencia
{
    // instance variables - replace the example below with your own
    public static void main(){
   
        //creacion del objeto producto fresco con nombre productoF
        ProductoFresco productoF = new ProductoFresco("Fresa","21/08/2016",825,"21/03/2016","Rep. Dominicana");
        //creacion del objeto producto refigerado con nombre productoR
        ProductoRefigerado productoR = new ProductoRefigerado("Jugo de Naranja","12/09/2016",698,"FC-2016-17");
        //creacion del objeto producto congelado con nombre productoC
        ProductoCongelado productoC = new ProductoCongelado("camarones","24/05/2016",125, -1);
   
       //metodo para mostrar el contenido de los productos frescos
       productoF.mostrarProFresco();   
       //metodo para mostrar el contenido de los productos refigerados
       productoR.mostrarProRefigerado();
       //metodo para mostrar el contenido de los productos congelados
       productoC.mostrarProductos();
}
}
« Última modificación: 26 de Marzo 2016, 21:47 por Alex Rodríguez »

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Re:EJERCICIO (CU00686B) Herencias - java desde cero
« Respuesta #1 en: 22 de Marzo 2016, 10:55 »
Buenos días, matru.

Primero, comentarte que las subclases "ProductoFresco", "ProductoRefrigerado" y "ProductoCongelado" deberían de heredar de la superclase "Producto" y no uno del otro. En el ejericicio se dice:

Citar
Todos los productos llevan esta información común: fecha de caducidad y número de lote.

Por lo tanto, lo lógico es que todos hereden de una misma clase.

Después, en varios códigos pasas como parámetros variables que luego tienen el mismo nombre que las variables declaradas en la clase, como por ejemplo en la subclase "ProductoFresco":

Código: [Seleccionar]
public void setFechaEnvasado(String fechaEnvasado){
        fechaEnvasado = fechaEnvasado;
    }

Eso no es correcto, porque el compilador a la hora de compilar no sabe que variable pertenece a la clase y cual es el parámetro. Deberías de haber puesto:

Código: [Seleccionar]
public void setFechaEnvasado(String fechaEnvasado){
        this.fechaEnvasado = fechaEnvasado;
    }

o también:

Código: [Seleccionar]
public void setFechaEnvasado(String valor_fechaEnvasado){
        fechaEnvasado = valor_fechaEnvasado;
    }

Te recomiendo que mires más soluciones en el foro.

Un saludo.

 

matru

  • Sin experiencia
  • *
  • Mensajes: 41
    • Ver Perfil
Re:EJERCICIO (CU00686B) Herencias - java desde cero
« Respuesta #2 en: 22 de Marzo 2016, 23:08 »
Al parecer mal interprete esta parte del ejercicio que dice:

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.

sacame de la duda!
« Última modificación: 26 de Marzo 2016, 21:46 por Alex Rodríguez »

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Re:EJERCICIO (CU00686B) Herencias - java desde cero
« Respuesta #3 en: 23 de Marzo 2016, 01:40 »
Hola, Matru.

La relación de la herencia debería ser como se muestra en https://www.aprenderaprogramar.com/foros/index.php?topic=2342.0.

A mi también me costó entenderlo. Y realmente puede prestar confusión, un poco, el ejericico pero lo que deberías interpretar es que la herencia sea desde "Producto" hacia "ProductoFresco", desde "Producto" hacia "ProductoRefrigerado" y desde "Producto" hacia "ProductoCongelado".

Y las propiedades comunes de: "ProductoFresco", "ProductoRefrigerado" y "ProductoCongelado" se deberán heredar de la clase "Producto" (cada subclase desde la superclase) y no en escala.

Espero que te haya ayudado y aclarado la duda.

« Última modificación: 26 de Marzo 2016, 21:46 por Alex Rodríguez »

matru

  • Sin experiencia
  • *
  • Mensajes: 41
    • Ver Perfil
Re:EJERCICIO (CU00686B) Herencias - java desde cero
« Respuesta #4 en: 24 de Marzo 2016, 01:01 »
Hola dimiste muchas gracias por la correccion ahora me queda bien claro, iba a cometer el mismo error en el sioguiente ejercicio corregire eso ahora mismo
« Última modificación: 26 de Marzo 2016, 21:45 por Alex Rodríguez »

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Re:EJERCICIO (CU00686B) Herencias - java desde cero
« Respuesta #5 en: 24 de Marzo 2016, 13:17 »
Todos los compañeros estamos aquí para eso, para ayudarnos mutuamente :)

De todas maneras, te recomiendo que mires más soluciones en el foro.

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