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 Productopublic 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
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
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
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
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
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
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
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
}
}