Autor Tema: Aprendiendo a programar desde cero/Ejemplo de Herencia de Java (CU00687B)  (Leído 4879 veces)

manu37

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 32
    • Ver Perfil
Buenos días compañeros. He realizado el ejercicio del curso "Aprendiendo a Programar desde cero /Ejemplo de Herencia de Java (CU00687B) del tutorial de programación en pdf de esta web.

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

Archivo EmpresaAgroAlimentaria1

Código: [Seleccionar]
package AprenderProgramar;

public class EmpresaAgroAlimentaria1 {

//################ ATRIBUTOS ############################

private String nombre;
private String fechaCaducidad;
private String numeroLote;

//############### CONSTRUCTOR ###########################

public EmpresaAgroAlimentaria1(String nombre, String fechaCaducidad, String numeroLote) {

this.nombre = nombre;
this.fechaCaducidad = fechaCaducidad;
this.numeroLote = numeroLote;
}

//############ MÉTODO SETTER y GETTER ###################

public void setNombre ( String nombre) {

this.nombre = nombre;
}
public String getNombre() {return nombre;}


public void setFechaCaducidad(String fechaCaducidad) {

this.fechaCaducidad = fechaCaducidad;
}
public String getFechaCaducidad() {return fechaCaducidad;}


public void setNumeroLote(String numeroLote) {

this.numeroLote = numeroLote;
}

public String getNumeroLote() {return numeroLote;}


}

Archivo ProductoFresco

Código: [Seleccionar]
package AprenderProgramar;

public class ProductoFresco1 extends EmpresaAgroAlimentaria1 {

//################ ATRIBUTOS ############################

private String fechaEnvasado;
private String paisOrigen;

//############### CONSTRUCTOR ###########################

public ProductoFresco1(String nombre, String fechaCaducidad, String numeroLote, String fechaEnvasado, String paisOrigen) {

super(nombre, fechaCaducidad, numeroLote);
this.fechaEnvasado = fechaEnvasado;
this.paisOrigen = paisOrigen;

}

//################ MÉTODOS SETTER Y GETTER ###################

public void setFechaEnvasado(String fechaEnvasado) {

this.fechaEnvasado = fechaEnvasado;
}

public String getFechaEnvasado() {return fechaEnvasado;}

public void setPaisOrigen(String paisOrigen) {

this.paisOrigen = paisOrigen;
}

public String getPaisOrigen() {return paisOrigen;}

//############# PETICIÓN DE DATOS ###########################

public void imprimirProductoFresco() {

System.out.println("El nombre del producto: " + getNombre() + " fechaCaducidad: " + getFechaCaducidad() + " número de lote: " + getNumeroLote() + " fecha de envasado: " + getFechaEnvasado() + " país de origen: " + getPaisOrigen());
}

}

Archivo Producto Refrigerado

Código: [Seleccionar]
package AprenderProgramar;

public class ProductoRefrigerado1 extends EmpresaAgroAlimentaria1 {

//################ ATRIBUTOS ############################

private String codigoSupervision;
private String fechaEnvasado;
private int temperaturaMantenimiento;
private String paisOrigen;

//############### CONSTRUCTOR ###########################

public ProductoRefrigerado1(String nombre, String fechaCaducidad, String numeroLote, String codigoSupervision, String fechaEnvasado,
int temperaturaMantinimiento, String paisOrigen) {

super(nombre, fechaCaducidad, numeroLote);

this.codigoSupervision = codigoSupervision;
this.fechaEnvasado = fechaEnvasado;
this.temperaturaMantenimiento = temperaturaMantenimiento;
this.paisOrigen = paisOrigen;

}

//################ MÉTODOS SETTER Y GETTER ###################

public void setCodigoSupervision(String codigoSupervision) {

this.codigoSupervision = codigoSupervision;
}

public String getCodigoSupervision() {return codigoSupervision;}

public void setFechaEnvasado(String fechaEnvasado) {

this.fechaEnvasado = fechaEnvasado;
}
public String getFechaEnvasado() {return fechaEnvasado;}

public void setTemperaturaMantenimiento(int temperaturaMantenimiento) {

this.temperaturaMantenimiento = temperaturaMantenimiento;
}
public int getTemperaturaMantenimiento() {return temperaturaMantenimiento;}

public void setPaisOrigen(String paisOrigen) {

this.paisOrigen = paisOrigen;
}
public String getPaisOrigen() {return paisOrigen;}

////############# PETICIÓN DE DATOS ###########################

public void imprimirProductoRefrigerado() {

System.out.println("El nombre del producto: " + getNombre() + " fechaCaducidad: " + getFechaCaducidad() + " número de lote: " + getNumeroLote() + " código de Supervisión: " + getCodigoSupervision()
+ " fecha de envasado: " + getFechaEnvasado() + " temperatura de mantenimiento: " + getTemperaturaMantenimiento() + " pais de origen " + getPaisOrigen() );
}

}

Archivo Producto Congelado

Código: [Seleccionar]
package AprenderProgramar;

public class ProductoCongelado1 extends EmpresaAgroAlimentaria1 {

//################ ATRIBUTOS ############################

private String fechaEnvasado;
private String paisOrigen;
private int temperaturaMantenimiento;

//############### CONSTRUCTOR ###########################

public ProductoCongelado1(String nombre, String fechaCaducidad, String numeroLote, String fechaEnvasado, String paisOrigen, int temperaturaMantenimiento) {

super(nombre, fechaCaducidad, numeroLote);
this.fechaEnvasado = fechaEnvasado;
this.paisOrigen = paisOrigen;
this.temperaturaMantenimiento = temperaturaMantenimiento;
}

//################ MÉTODOS SETTER Y GETTER ###############

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

public void setPaisOrigen(String paisOrigen) {

this.paisOrigen = paisOrigen;
}
public String getPaisOrigen() {return paisOrigen;}

public void setTemperaturaMantenimiento(int temperaturaMantenimiento) {

this.temperaturaMantenimiento = temperaturaMantenimiento;
}
public int getTemperaturaMantenimiento() {return temperaturaMantenimiento;}

//############# PETICIÓN DE DATOS ##########################

public void imprimirProductoCongelado() {

System.out.println("El nombre del producto: " + getNombre() + " fechaCaducidad: " + getFechaCaducidad() + " número de lote: " + getNumeroLote() + 
" Fecha de envasado: " + getFechaEnvasado() + " pais de origen: " + getPaisOrigen() + " temperatura de mantenimiento: " + getTemperaturaMantenimiento());

}

}

Archivo Congelado por Agua

Código: [Seleccionar]
package AprenderProgramar;

//################## ATRIBUTOS ####################################

public class CongeladoPorAgua extends ProductoCongelado1 {

private double salinidadAgua;

//################# CONTRUCTOR ####################################

public CongeladoPorAgua(String nombre, String fechaCaducidad, String numeroLote, String fechaEnvasado, String paisOrigen, int temperaturaMantenimiento, double salinidadAgua) {

super(nombre, fechaCaducidad, numeroLote, fechaEnvasado, paisOrigen, temperaturaMantenimiento);
this.salinidadAgua = salinidadAgua;

}

//################ MÉTODOS SETTER Y GETTER #######################

public void setSalinidadAgua(Double salidadAgua) {

this.salinidadAgua = salinidadAgua;
}

public double getSalinidadAgua() {return salinidadAgua;}

//############# PETICIÓN DE DATOS ###########################

public void imprimirCongeladoPorAgua() {
System.out.println("El nombre del producto: " + getNombre() + " fechaCaducidad: " + getFechaCaducidad() + " número de lote: " + getNumeroLote() + 
" Fecha de envasado: " + getFechaEnvasado() + " pais de origen: " + getPaisOrigen() + " temperatura de mantenimiento: " + getTemperaturaMantenimiento() + " salinidad del agua: " + getSalinidadAgua());
}


}

Archivo Congelado por Aire

Código: [Seleccionar]
package AprenderProgramar;

public class CongeladoPorAire extends ProductoCongelado1 {

//########### ATRIBUTOS #####################################

private double nitrogeno;
private double oxigeno;
private double dioxidoCarbono;
private double vaporAgua;

//############ CONSTRUCTOR #################################

public CongeladoPorAire(String nombre, String fechaCaducidad, String numeroLote, String fechaEnvasado, String paisOrigen, int temperaturaMantenimiento,
double nitrogeno, double oxigeno, double dioxidoCarbono, double vaporAgua) {

super(nombre, fechaCaducidad, numeroLote, fechaEnvasado, paisOrigen, temperaturaMantenimiento);
this.nitrogeno = nitrogeno;
this.oxigeno = oxigeno;
this.dioxidoCarbono = dioxidoCarbono;
this.vaporAgua = vaporAgua;
// TODO Auto-generated constructor stub
}

//############# MÉTODOS SETTER ###########################
public void setNitrogeno(double nitrogeno) {

this.nitrogeno = nitrogeno;
}
public void setOxigeno(double oxigeno) {

this.oxigeno = oxigeno;
}
public void setDioxidoCarbono(double dioxidoCarbono) {

this.dioxidoCarbono = dioxidoCarbono;
}
public void setVaporAgua(double vaporAgua) {

this.vaporAgua = vaporAgua;
}

//########## MÉTODOS GETTER ##############################

public double getNitrogeno() {return nitrogeno;}
public double getOxigeno() {return oxigeno;}
public double getDioxidoCarbono() {return dioxidoCarbono;}
public double getVaporAgua() {return vaporAgua;}

//######### PETICIÓN DE DATOS ############################

public void imprimirCongeladoPorAire() {

System.out.println("El nombre del producto: " + getNombre() + " fechaCaducidad: " + getFechaCaducidad() + " número de lote: " + getNumeroLote() + 
" Fecha de envasado: " + getFechaEnvasado() + " pais de origen: " + getPaisOrigen() + " temperatura de mantenimiento: " + getTemperaturaMantenimiento() + ". Este producto ha sido congelado por aire, siendo en porcentaje de: " +" Nitrogeno: " + getNitrogeno() +
" Oxigeno: " + getOxigeno() + " Dioxido de Carbono: " + getDioxidoCarbono() + " vapor de agua: " + getVaporAgua());
}
}

Archivo Congelado por Nitrógeno

Código: [Seleccionar]
package AprenderProgramar;

public class CongeladoPorNitrogeno extends ProductoCongelado1 {

//################ ATRIBUTOS ################################

private String metodoCongelacion;
private int exposicionNitrogeno;

//############### CONSTRUCTOR ###############################

public CongeladoPorNitrogeno(String nombre, String fechaCaducidad, String numeroLote, String fechaEnvasado,
String paisOrigen, int temperaturaMantenimiento, String metodoCongelacion, int exposicionNitrogeno) {

super(nombre, fechaCaducidad, numeroLote, fechaEnvasado, paisOrigen, temperaturaMantenimiento);
this.metodoCongelacion = metodoCongelacion;
this.exposicionNitrogeno = exposicionNitrogeno;

}

//############## MÉTODOS SETTER Y GETTER ###################

public void setMetodoCongelacion(String metodoCongelacion) {

this.metodoCongelacion = metodoCongelacion;
}

public String getMetodoCongelacion() {return metodoCongelacion;}

public void setExposicionNitrogeno(int exposicionNitrogeno) {

this.exposicionNitrogeno = exposicionNitrogeno;
}

public int getExposicionNitrogeno() {return exposicionNitrogeno;}

//############# PETICIÓN DE DATOS ###########################

public void imprimirCongeladoPorNitrogeno() {

System.out.println("El nombre del producto: " + getNombre() + " fechaCaducidad: " + getFechaCaducidad() + " número de lote: " + getNumeroLote() + 
" Fecha de envasado: " + getFechaEnvasado() + " pais de origen: " + getPaisOrigen() + " temperatura de mantenimiento: " + getTemperaturaMantenimiento() +
" método de congelación: " + getMetodoCongelacion() + " exposición en segundos al nitrógeno: " + getExposicionNitrogeno());



}

}

Archivo testHerencia

Código: [Seleccionar]
package AprenderProgramar;

public class testHerencia3 {

public static void main(String[] args) {


ProductoFresco1 productoFresco1 = new ProductoFresco1("Pescado,", "15/03/2018,", "A356,", "15/12/2017,", "Noruega," );
ProductoFresco1 productoFresco2 = new ProductoFresco1("Pollo,", "10/02/2017,", "A358,", "01/01/2018,", "España,");

ProductoRefrigerado1 productoRefrigerado1 = new ProductoRefrigerado1("Huevos,", "15/03/2018,", "A359,", "A1,", "01/03/2018,", -2,"España,");
ProductoRefrigerado1 productoRefrigerado2 = new ProductoRefrigerado1("Fruta,", "15/01/2018,", "F001,", "B2,", "20/01/2018,", 5,"Italia,");
ProductoRefrigerado1 productoRefrigerado3 = new ProductoRefrigerado1("Helado,", "01/01/2018,", "H001,", "H3,", "30/03/20182,", -5, "España,");

CongeladoPorAgua congeladoPorAgua1 = new CongeladoPorAgua("Guisantes,", "01/02/2018,", "V001,", "20/11/2017,", "Francia,", -10, 6);
CongeladoPorAgua congeladoPorAgua2 = new CongeladoPorAgua("Espinacas,", "01/02/2018,","V002,", "20/11/2017,", "Francia,", -10, 6);

CongeladoPorAire congeladoPorAire1 = new CongeladoPorAire("Tarta,", "01/01/2018,", "T001,", "15/11/2017,", "España,", -5, 10, 15, 0.1, 3);
CongeladoPorAire congeladoPorAire2 = new CongeladoPorAire("Pasteles,", "01/01/2018,", "P002,", "15/11/2017,", "España,", -5, 1.10, 2.5, 3.3, 15);

CongeladoPorNitrogeno congeladoPorNitrogeno = new CongeladoPorNitrogeno("Croquetas,", "02/02/2018,", "C001,","30/05/2018,","España,", -5, "Nitrogeno,", 5);

//################ IMPRIMIR DATOS INTRODUCIDOS #######################################

productoFresco1.imprimirProductoFresco();
productoFresco2.imprimirProductoFresco();

productoRefrigerado1.imprimirProductoRefrigerado();
productoRefrigerado2.imprimirProductoRefrigerado();
productoRefrigerado3.imprimirProductoRefrigerado();

congeladoPorAgua1.imprimirCongeladoPorAgua();
congeladoPorAgua2.imprimirCongeladoPorAgua();

congeladoPorAire1.imprimirCongeladoPorAire();
congeladoPorAire2.imprimirCongeladoPorAire();

congeladoPorNitrogeno.imprimirCongeladoPorNitrogeno();

}

}
« Última modificación: 14 de Junio 2018, 18:31 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola, el código parece bien trabajado pero tiene distintas cosas a corregir que comento:

a) El nombre de la superclase EmpresaAgroalimentaria1 no es correcto: un nombre de clase debe indicar qué representa dicha clase. Si la clase representa un producto, no debe tener como nombre EmpresaAgroalimentaria, porque no representa una empresa agroalimentaria. En este hilo se comentan algunas cuestiones sobre cómo nombrar clases en Java: https://aprenderaprogramar.com/foros/index.php?topic=3035.msg13698#msg13698

b) No se está desarrollando el código aprovechando la herencia Java / reutilización de código de superclases hacia las subclases. Por ejemplo en public void imprimirProductoFresco() y void imprimirProductoRefrigerado() etc. se repite código cuando podría no repetirse. En programación se trata de evitar la repetición de código siempre que sea posible. ¿Cómo utilizar la herencia para favorecer la reutilización? El código de la superclase se reutiliza en las subclases. Puedes fijarte en este ejercicio como ejemplo: https://aprenderaprogramar.com/foros/index.php?topic=2959.0

Saludos
« Última modificación: 14 de Junio 2018, 18:31 por Alex Rodríguez »

Manuel Molina

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

Me he equivocado no es el ejercicio CU00688B, sino el anterior CU00687B, lo he modificado con el usuario Manuel Molina. Si lo puedes corregir te lo agradecería.

un saludo
« Última modificación: 14 de Junio 2018, 18:31 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Gracias por avisar. Ya he corregido el código de ejercicio y ya aparece CU00687B. Los comentarios que te he hecho sobre forma de nombrar clases, reutilización, etc. resultan igualmente válidos se trate de un ejercicio u otro.

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