Autor Tema: Ejercicios de java aplicación práctica de la herencia con supertipos CU00686B  (Leído 2855 veces)

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
Solución propuesta para el ejercicio CU00686B del tutorial de programación en lenguaje Java desde cero:

Clase principal main
Código: [Seleccionar]
package testherencia2;

public class TestHerencia2 {

    public static void main(String[] args) {
        ProductoFresco productoFresco = new ProductoFresco("20/09/2016", "000012345");
        productoFresco.setFechaEnvasado("01/11/2015");
        productoFresco.setPaisOrigen("Paraguay");
        productoFresco.mostrarProductoFresco();

        ProductoRefrigerado productoRefrigerado = new ProductoRefrigerado("30/12/2016", "00098878");
        productoRefrigerado.setOrgSupAlimentaria("xz0083");
        productoRefrigerado.mostrarProductoRefrigerado();

        ProductoCongelado productoCongelado = new ProductoCongelado("10/10/2016", "00055443");
        productoCongelado.setTemperaturaRecomendada("-4º");
        productoCongelado.mostrarProductoCongelado();

    }

}

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

public class Producto {

    private String fechaCaducidad;
    private String numeroLote;

    //public Producto() {
    //}
    public Producto(String fechaCaducidad, String numeroLote) {
        this.fechaCaducidad = fechaCaducidad;
        this.numeroLote = numeroLote;
    }

    public String getFechaCaducidad() {
        return fechaCaducidad;
    }

    public void setFechaCaducidad(String fechaCaducidad) {
        this.fechaCaducidad = fechaCaducidad;
    }

    public String getNumeroLote() {
        return numeroLote;
    }

    public void setNumeroLote(String numeroLote) {
        this.numeroLote = numeroLote;
    }

}

Clase producto fresco
Código: [Seleccionar]
package testherencia2;

public class ProductoFresco extends Producto {

    private String fechaEnvasado;
    private String paisOrigen;

    public ProductoFresco(String fechaCaducidad, String numeroLote) {
        super(fechaCaducidad, numeroLote);
        fechaEnvasado = "Unknown";
        paisOrigen = "Unknown";

    }

    public String getFechaEnvasado() {
        return fechaEnvasado;
    }

    public void setFechaEnvasado(String fechaEnvasado) {
        this.fechaEnvasado = fechaEnvasado;
    }

    public String getPaisOrigen() {
        return paisOrigen;
    }

    public void setPaisOrigen(String paisOrigen) {
        this.paisOrigen = paisOrigen;
    }

    public void mostrarProductoFresco() {
        System.out.println("Producto fresco de fecha de vencimiento " + getFechaCaducidad() + " con numero de lote " + getNumeroLote() + ""
                + " con fecha de envasado " + getFechaEnvasado() + " paìs de origen " + getPaisOrigen());
    }

}

Clase producto refrigerado
Código: [Seleccionar]
package testherencia2;

public class ProductoRefrigerado extends Producto {

    private String orgSupAlimentaria;

    public ProductoRefrigerado(String fechaCaducidad, String numeroLote) {
        super(fechaCaducidad, numeroLote);
        orgSupAlimentaria = "Unknown";
    }

    public String getOrgSupAlimentaria() {
        return orgSupAlimentaria;
    }

    public void setOrgSupAlimentaria(String orgSupAlimentaria) {
        this.orgSupAlimentaria = orgSupAlimentaria;
    }

    public void mostrarProductoRefrigerado() {
        System.out.println("Producto fresco de fecha de vencimiento " + getFechaCaducidad() + " con numero de lote " + getNumeroLote() + ""
                + " código del organismo de supervisión alimentaria " + getOrgSupAlimentaria());
    }
}

Clase producto congelado
Código: [Seleccionar]
package testherencia2;

public class ProductoCongelado extends Producto {

    private String temperaturaRecomendada;

    public ProductoCongelado(String fechaCaducidad, String numeroLote) {
        super(fechaCaducidad, numeroLote);
        temperaturaRecomendada = "Unknown";
    }

    public String getTemperaturaRecomendada() {
        return temperaturaRecomendada;
    }

    public void setTemperaturaRecomendada(String temperaturaRecomendada) {
        this.temperaturaRecomendada = temperaturaRecomendada;
    }

    public void mostrarProductoCongelado() {
        System.out.println("Producto fresco de fecha de vencimiento " + getFechaCaducidad() + " con numero de lote " + getNumeroLote() + ""
                + " temperatura de congelación recomendada " + getTemperaturaRecomendada());
    }

}

Una pregunta que significa "Unknown" en un constructor.
« Última modificación: 23 de Mayo 2016, 17:21 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola Unknown significa "desconocido" en inglés. Si lo ponemos en un constructor, simplemente significará que ese atributo comienza teniendo como contenido inicial Unknown. En lugar de esto es más habitual inicializar con la cadena vacía, simplemente ""

Sobre el ejercicio en líneas generales bien planteado.

Cosas a tener en cuenta:

En la clase ProductoCongelado tienes  private String temperaturaRecomendada;

No es lógico que una temperatura se exprese como String (cadena de texto). La temperatura es un valor numérico decimal, por tanto preferible declararla como valor númerico double (ó float).

También tienes un error (en este y otras clases):

    public void mostrarProductoCongelado() {
        System.out.println("Producto fresco de fecha de vencimiento "

El método es para producto congelado, pero en el texto pones que es un producto fresco.

Saludos

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
Gracia por tu ayuda si se me paso eso es que yo hice uno nomas y después copie y modifique los otro para imprimir por pantalla y no modifique todo el texto.

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
Gracia por aclararme las duda sobre "Unknown"  :) :) :)

 

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