Autor Tema: Herencia simple extends y super en Java. Constructores con herencia CU00687B  (Leído 2983 veces)

HumbertoAli

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 21
    • Ver Perfil
Aquí la entrega del siguiente ejercicio de herencia CU00687B del curso aprender a programar en Java con BlueJ. Si algún experto me puede corregir sería excelente.

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, la fecha de envasado, la temperatura de mantenimiento recomendada y el país de origen. Los productos congelados deben llevar la fecha de envasado, el país de origen y la temperatura de mantenimiento recomendada.

Hay tres tipos de productos congelados: congelados por aire, congelados por agua y congelados por nitrógeno. Los productos congelados por aire deben llevar la información de la composición del aire con que fue congelado (% de nitrógeno, % de oxígeno, % de dióxido de carbono y % de vapor de agua). Los productos congelados por agua deben llevar la información de la salinidad del agua con que se realizó la congelación en gramos de sal por litro de agua. Los productos congelados por nitrógeno deben llevar la información del método de congelación empleado y del tiempo de exposición al nitrógeno expresada en segundos.

Crear el código de las clases Java implementando una relación de herencia siguiendo estas indicaciones:

a) En primer lugar realizar un esquema con papel y bolígrafo donde se represente cómo se van a organizar las clases cuando escribamos el código. Estudiar los atributos de las clases y trasladar a la superclase todo atributo que pueda ser trasladado.

b) Crear superclases intermedias (aunque no se correspondan con la descripción dada de la empresa) para agrupar atributos y métodos cuando sea posible. Esto corresponde a “realizar abstracciones” en el ámbito de la programación, que pueden o no corresponderse con el mundo real.

c) 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 cuando sea procedente.

Crear una clase testHerencia3 con el método main donde se creen: dos productos frescos, tres productos refrigerados y cinco productos congelados (2 de ellos congelados por agua, otros 2 por aire y 1 por nitrógeno). Mostrar la información de cada producto por pantalla.

la superclase Producto
Código: [Seleccionar]
public class Producto {
    String fechaCaducidad, numeroLote, fechaDeEnvasado, paisDeOrigen;
   
    public Producto(String fechaCaducidad, String numeroLote, String fechaDeEnvasado, String paisDeOrigen){
        this.fechaCaducidad = fechaCaducidad;
        this.numeroLote = numeroLote;
        this.fechaDeEnvasado = fechaDeEnvasado;
        this.paisDeOrigen = paisDeOrigen;
       
    }
   
    public void setFechaCaducidad(String fecha){
        fechaCaducidad = fecha;
    }
   
    public void setNumeroLote(String num){
        numeroLote = num;
    }
    public void setFechaDeEnvasado(String fecha){
        fechaDeEnvasado = fecha;
    }
    public void setPaisDeOrigen(String pais){
        paisDeOrigen = pais;
    }
   
    public String getFechaCaducidad(){
        return fechaCaducidad;
    }
   
    public String getNumeroLote(){
        return numeroLote;
    }
    public String getFechaDeEnvasado(){
        return fechaDeEnvasado;
    }
    public String getPaisDeOrigen(){
        return paisDeOrigen;
    }
   
    public void imprimirInfo(){
        System.out.println("Fecha Caducidad: " + getFechaCaducidad() + "\nNumero de Lote: " + getNumeroLote());
        System.out.println(" Fecha de Envasado: " + getFechaDeEnvasado() + "\nPais de Origen: " + getPaisDeOrigen());
    }
}

subclase ProductoCongelado
Código: [Seleccionar]
public class ProductoCongelado extends Producto {
    private double tempCongelacionRecomendada;
   
    public ProductoCongelado(String fechaCaducidad, String numeroLote, String fechaDeEnvasado, String paisDeOrigen){
        super(fechaCaducidad, numeroLote, fechaDeEnvasado, paisDeOrigen);
        tempCongelacionRecomendada = 0;
    }
   
    public void setTemperaturaRecomendada(double temperatura){
        tempCongelacionRecomendada = temperatura;
    }
   
    public double getTemperaturaRecomendada(){
        return tempCongelacionRecomendada;
    }
   
   
    public void imprimirDatos(){
        System.out.println(" PRODUCTO CONGELADO....... ");
        imprimirInfo();
        System.out.println("Temperatura Recomendada: " + getTemperaturaRecomendada());
    }
}

subclase ProductoCongeladoPorAgua
Código: [Seleccionar]
public class ProductoCongeladoPorAgua extends ProductoCongelado {
    private String salinidadDelAgua;
   
    public ProductoCongeladoPorAgua(String fechaCaducidad, String numeroLote, String fechaDeEnvasado, String paisDeOrigen){
        super(fechaCaducidad, numeroLote, fechaDeEnvasado, paisDeOrigen);
        salinidadDelAgua = "Desconocido";
    }
    public void setSalinidadDelAgua(String agua){
        this.salinidadDelAgua = agua;
    }
    public String getSalinidadDelAgua(){
        return salinidadDelAgua;
    }
    public void imprimirDatosCA(){
        System.out.println(" PRODUCTO CONGELADO POR AGUA....... ");
        imprimirInfo();
        System.out.println("Información de la salinidad del Agua: " + getSalinidadDelAgua());
    }
}
subclase ProductoCongeladoPorAire
Código: [Seleccionar]
public class ProductoCongeladoPorAire extends ProductoCongelado {
    private String composicionDelAire;
   
    public ProductoCongeladoPorAire(String fechaCaducidad, String numeroLote, String fechaDeEnvasado, String paisDeOrigen){
        super(fechaCaducidad, numeroLote, fechaDeEnvasado, paisDeOrigen);
        composicionDelAire = "Desconocido";
    }
    public void setComposicionDelAire(String aire){
        this.composicionDelAire = aire;
    }
    public String getComposicionDelAire(){
        return composicionDelAire;
    }
    public void imprimirDatosCAi(){
        System.out.println(" PRODUCTO CONGELADO POR AIRE....... ");
        imprimirInfo();
        System.out.println("Composicion del aire con que fue congelado: " + getComposicionDelAire());
    }
}
subclase ProductoCongeladoPorNitrogeno
Código: [Seleccionar]
public class ProductoCongeladoPorNitrogeno extends ProductoCongelado {
    private String metodoDeCongelacion, tiempoDeExposicionAlNitrogeno;
   
    public ProductoCongeladoPorNitrogeno(String fechaCaducidad, String numeroLote, String fechaDeEnvasado, String paisDeOrigen){
        super(fechaCaducidad, numeroLote, fechaDeEnvasado, paisDeOrigen);
        metodoDeCongelacion = "Desconocido";
        tiempoDeExposicionAlNitrogeno = "Desconocido";
    }
    public void setMetodoDeCongelacion(String metodo){
        this.metodoDeCongelacion = metodo;
    }
    public String getMetodoDeCongelacion(){
        return metodoDeCongelacion;
    }
    public void setTiempoDeExposicionAlNitrogeno(String t){
        this.tiempoDeExposicionAlNitrogeno = t;
    }
    public String getTiempoDeExposicionAlNitrogeno(){
        return tiempoDeExposicionAlNitrogeno;
    }
    public void imprimirDatosCN(){
        System.out.println(" PRODUCTO CONGELADO POR NITROGENO....... ");
        imprimirInfo();
        System.out.println("Metodo de Congelacion: " + getMetodoDeCongelacion());
        System.out.println("Tiempo de Exposicion al Nitrogeno: " + getTiempoDeExposicionAlNitrogeno());
    }
}
Subclase ProductoFresco
Código: [Seleccionar]
public class ProductoFresco extends Producto {
   
    public ProductoFresco(String fechaCaducidad, String numeroLote, String fechaDeEnvasado, String origen){
        super(fechaCaducidad, numeroLote, fechaDeEnvasado, origen);
       
    }
   
   
    public void imprimirDatos(){
        System.out.println(" PRODUCTO FRESCO....... ");
        imprimirInfo();
    }
}
subclase ProductoRefrigerado
Código: [Seleccionar]
public class ProductoRefrigerado extends Producto{
    private String codigoSupervisionAlimentaria;
    private String temperaturaDeMantenimientoRecomendada;
   
   
    public ProductoRefrigerado(String fechaCaducidad, String numeroLote, String fechaDeEnvasado, String paisDeOrigen){
        super(fechaCaducidad, numeroLote, fechaDeEnvasado,  paisDeOrigen);
        codigoSupervisionAlimentaria = "Desconocido";
        temperaturaDeMantenimientoRecomendada = "Desconocido";
    }
   
    public void setCodigoSupervisionAlimentaria(String codigo){
        codigoSupervisionAlimentaria = codigo;
    }
    public void setTemperaturaDeMantenimientoRecomendada(String temp){
        this.temperaturaDeMantenimientoRecomendada = temp;
    }
   
    public String getCodigoSupervisionAlimentaria(){
        return codigoSupervisionAlimentaria;
    }
    public String getTemperaturaDeMantenimientoRecomendada(){
        return temperaturaDeMantenimientoRecomendada;
    }
   
   
    public void imprimirDatos(){
        System.out.println(" PRODUCTO REFRIGERADO....... ");
        imprimirInfo();
        System.out.println("Codigo de Supervision Alimentaria: " + getCodigoSupervisionAlimentaria());
        System.out.println("Temperatura de Mantenimiento Recomendada: " + getTemperaturaDeMantenimientoRecomendada());
       
    }
}
y por ultimo el main
Código: [Seleccionar]
public class TestProgramaProductos {
    public static void main(String[] args) {
        ProductoFresco lechuga = new ProductoFresco("16-10-2016","L1603004","15-06-2008", "Venezuela");
        ProductoFresco fresa = new ProductoFresco("16-05-2016","L1603005","15-05-2008", "Venezuela");
        ProductoRefrigerado jugo = new ProductoRefrigerado("16-05-2016","L1603006","15-05-2008", "Brazil");
        jugo.setCodigoSupervisionAlimentaria("abcedef");
        ProductoRefrigerado malta = new ProductoRefrigerado("16-05-2016","L1603007","15-05-2008", "Brazil");
        malta.setCodigoSupervisionAlimentaria("abcedef");
        ProductoRefrigerado refresco = new ProductoRefrigerado("16-05-2016","L1603008","15-05-2008", "Brazil");
        refresco.setCodigoSupervisionAlimentaria("abcedef");
        ProductoCongeladoPorAgua pescado = new ProductoCongeladoPorAgua("16-05-2016","L1603009","15-05-2008", "Argentina");
        pescado.setSalinidadDelAgua("35,5 ppt");
        ProductoCongeladoPorAgua carne = new ProductoCongeladoPorAgua("16-05-2016","L1603010","15-05-2008", "Argentina");
        carne.setSalinidadDelAgua("35,7 ppt");
        ProductoCongeladoPorAire jamon = new ProductoCongeladoPorAire("16-05-2016","L1603011","15-05-2008", "Ecuador");
        jamon.setComposicionDelAire("10% de nitrogeno, 70% de oxigeno, 15% de Dioxido de Carbono y 5% de vapor de agua");
        ProductoCongeladoPorAire queso = new ProductoCongeladoPorAire("16-05-2016","L1603012","15-05-2008", "Ecuador");
        queso.setComposicionDelAire("10% de nitrogeno, 70% de oxigeno, 15% de Dioxido de Carbono y 5% de vapor de agua");
        ProductoCongeladoPorNitrogeno productox = new ProductoCongeladoPorNitrogeno("16-10-2016","L1603013","15-06-2008", "Peru");
        productox.setMetodoDeCongelacion("ultracongelación");
        productox.setTiempoDeExposicionAlNitrogeno("5000 segundos");
       
        System.out.println("     Mostrando la informacion de los productos de la empresa agroalimentaria");
        System.out.println();
        lechuga.imprimirDatos();
        System.out.println();
        fresa.imprimirDatos();
        System.out.println();
        jugo.imprimirDatos();
        System.out.println();
        malta.imprimirDatos();
        System.out.println();
        refresco.imprimirDatos();
        System.out.println();
        pescado.imprimirDatosCA();
        System.out.println();
        carne.imprimirDatosCA();
        System.out.println();
        jamon.imprimirDatosCAi();
        System.out.println();
        queso.imprimirDatosCAi();
        System.out.println();
        productox.imprimirDatosCN();
       
       
        // TODO code application logic here
    }
}

 
« Última modificación: 05 de Junio 2017, 17:55 por Ogramar »

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Hola HumbertoAli.

Veo el ejercicio bastante bien, así que solo recomendarte que veas esta otra solución de otro usuario del foro donde realiza lo que se pedía en el apartado b del enunciado, crea una clase intermedia para agrupar atributos, además contiene comentarios interesantes que pueden venirte bien.

https://www.aprenderaprogramar.com/foros/index.php?topic=2342.msg11163#msg11163

Saludos. ;D

 

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