Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: DRANXZ88 en 18 de Mayo 2016, 23:26

Título: Ejercicios de java aplicación práctica de la herencia con supertipos CU00686B
Publicado por: DRANXZ88 en 18 de Mayo 2016, 23:26
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.
Título: Re:Ejercicios de java aplicación práctica de la herencia con supertipos CU00686B
Publicado por: Alex Rodríguez en 23 de Mayo 2016, 17:22
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
Título: Re:Ejercicios de java aplicación práctica de la herencia con supertipos CU00686B
Publicado por: DRANXZ88 en 23 de Mayo 2016, 18:56
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.
Título: Re:Ejercicios de java aplicación práctica de la herencia con supertipos CU00686B
Publicado por: DRANXZ88 en 23 de Mayo 2016, 18:57
Gracia por aclararme las duda sobre "Unknown"  :) :) :)