Hola. Esta es mi solucion al ejercicio CU00687Bd del tutorial de programación Java desde cero.
Nota: En donde dice crear dos productos congelados por agua y otros dos por agua, asumí que se refería a dos por agua y dos por aire.
Clase ProductoFresco
import java.util.Date;
public class ProductoFresco{
private Date fecha_envasado;
private String país_orígen;
private Date fecha_caducidad;
private int numero_lote;
public ProductoFresco(Date fecha_e, Date fecha_c, String orígen, int lote){
fecha_caducidad = fecha_c;
fecha_envasado = fecha_e;
país_orígen = orígen;
numero_lote = lote;
}
public void setFechaCaducidad(Date fecha){ fecha_caducidad = fecha; }
public void setNúmeroLote(int lote){ numero_lote = lote; }
public void setFechaEnvasado(Date fecha){ fecha_envasado = fecha; }
public void setPaísOrígen(String país){ país_orígen = país; }
public String getPaísOrígen(){ return país_orígen; }
public Date getFechaEnvasado(){ return fecha_envasado; }
public Date getFechaCaducidad(){ return fecha_caducidad; }
public int getNúmeroLote(){ return numero_lote; }
public void showInfo(){
System.out.println("Número de lote: " + getNúmeroLote() + "\nFecha de caducidad: " + fecha_caducidad.toString() + "\nPáis de orígen: " + getPaísOrígen() + "\nFecha de envasado: " + fecha_envasado.toString());
}
}
Clase ProductoCongelado
import java.util.Date;
public class ProductoCongelado extends ProductoFresco{
private double temp_recomendada;
public ProductoCongelado(Date fecha_e, Date fecha_c, String orígen, int lote, double temperatura){
super(fecha_e, fecha_c, orígen, lote);
temp_recomendada = temperatura;
}
public void setTemperaturaRecomendada(double temp){ temp_recomendada = temp; }
public double getTemperaturaRecomendada(){ return temp_recomendada; }
public void showInfo(){
super.showInfo();
System.out.println("Temperatura de mantenimiento recomendada: " + getTemperaturaRecomendada() + "ºC");
}
}
Clase ProductoRefrigerado
import java.util.Date;
public class ProductoRefrigerado extends ProductoCongelado{
private int código_sv;
public ProductoRefrigerado(Date fecha_e, Date fecha_c, String orígen,int lote, double temp, int código_sv){
super(fecha_e, fecha_c, orígen, lote, temp);
this.código_sv = código_sv;
}
public void setCódigoSV(int código){ código_sv = código; }
public int getCódigoSV(){ return código_sv; }
public void showInfo(){
super.showInfo();
System.out.println("Código del organismo de supervisión alimentaria: " + getCódigoSV());
}
}
Clase CPAgua //"Congelado por agua"
import java.util.Date;
public class CPAgua extends ProductoCongelado{
private double salinidad;
public CPAgua(Date fecha_e, Date fecha_c, String orígen, int lote, double temp, double sali){
super(fecha_e, fecha_c, orígen, lote, temp);
salinidad = sali;
}
public void setSalinidad(double sali){ salinidad = sali; }
public double getSalinidad(){ return salinidad; }
public void showInfo(){
super.showInfo();
System.out.println("Salinidad: " + getSalinidad() + "gNaCl/L");
}
}
Clase CPAire
import java.util.Date;
public class CPAire extends ProductoCongelado{
private double N2;
private double O2;
private double CO2;
private double H2O;
public CPAire(Date fecha_e, Date fecha_c, String orígen, int lote, double temperatura, double N2, double O2, double CO2, double H2O){
super(fecha_e, fecha_c, orígen, lote, temperatura);
if(N2+O2+CO2+H2O <= 100){
this.N2 = N2; this.O2 = O2; this.CO2 = CO2; this.H2O = H2O;
}
else{
System.out.println("Los valores de concentración de gas son inválidos, se creará un objeto con valores por defecto.");
this.N2 = 78; this.O2 = 21; this.CO2 = 0.5; this.H2O = 0.5;
}
}
public void setConcentraciónGaseosa(double N2, double O2, double CO2, double H2O){
if(N2+O2+CO2+H2O <= 100){
this.N2 = N2; this.O2 = O2; this.CO2 = CO2; this.H2O = H2O;
}
else{
System.out.println("Los valores de concentración de gas indroducidos son inválidos, por lo tanto no fueron establecidos.");
}
}
public double getC_N2(){ return N2; }
public double getC_O2(){ return O2; }
public double getC_CO2(){ return CO2; }
public double getC_H2O(){ return H2O; }
public void showInfo(){
super.showInfo();
System.out.println("Concentración de gas nitrógeno: " + N2 + "%\nConcentración de gas oxígeno: " + O2 + "%\nConcentración de dióxido de carbono: " + CO2 + "%\nConcentración de vapor de agua: " + H2O + "%");
}
}
Clase CPN2 //"Congelado por nitrógeno"
import java.util.Date;
public class CPN2 extends ProductoCongelado{
private String infoMétodo;
private int tiempoExposición;
public CPN2(Date fecha_e, Date fecha_c, String orígen, int lote, double temp, String info, int expo){
super(fecha_e, fecha_c, orígen, lote, temp);
infoMétodo = info;
tiempoExposición = expo;
}
public void setInfoMétodo(String info){ infoMétodo = info; }
public void setTiempoExposición(int segundos){ tiempoExposición = segundos; }
public String getInfoMétodo(){ return infoMétodo; }
public int getTiempoExposición(){ return tiempoExposición; }
public void showInfo(){
super.showInfo();
System.out.println("Método de congelación empleado: " + infoMétodo + "\nTiempo de exposición al nitrógeno: " + tiempoExposición + "s");
}
}
Clase test
import java.util.Calendar;
import java.util.ArrayList;
import java.util.Iterator;
public class TestHerencia{
public static void main(String [] args){
ArrayList<ProductoFresco> ListaProductos = new ArrayList<ProductoFresco>();
Calendar fecha1 = Calendar.getInstance();
Calendar fecha2 = Calendar.getInstance();
fecha2.set(2017, 5, 22);
ListaProductos.add(new ProductoFresco(fecha1.getTime(), fecha2.getTime(), "Arg", 1));
fecha2.set(2017, 6, 30);
ListaProductos.add(new ProductoFresco(fecha1.getTime(), fecha2.getTime(), "Arg", 2));
fecha2.set(2017, 9, 15);
ListaProductos.add(new ProductoRefrigerado(fecha1.getTime(), fecha2.getTime(), "Bra", 3, 0.0, 666));
fecha2.set(2018,3,26);
ListaProductos.add(new ProductoRefrigerado(fecha1.getTime(),fecha2.getTime(),"Bra", 4, -0.5,667));
fecha2.set(2018,2,21);
ListaProductos.add(new ProductoRefrigerado(fecha1.getTime(),fecha2.getTime(),"Bra", 5, -1,668));
fecha2.set(2017,11,30);
ListaProductos.add(new CPAire(fecha1.getTime(),fecha2.getTime(),"México", 6,-5,67.5,23.5,5,4));
fecha2.set(2018,5,24);
ListaProductos.add(new CPAire(fecha1.getTime(),fecha2.getTime(),"México", 7,-4,68,12.5,15.5,4));
fecha2.set(2018,6,12);
ListaProductos.add(new CPAgua(fecha1.getTime(),fecha2.getTime(),"Chile", 8,-1,4));
fecha2.set(2018,3,15);
ListaProductos.add(new CPAgua(fecha1.getTime(),fecha2.getTime(),"Chile", 9,-1,5));
fecha2.set(2019,4,17);
ListaProductos.add(new CPN2(fecha1.getTime(),fecha2.getTime(),"NorCorea", 10,-15,"Inmersión", 15));
Iterator<ProductoFresco> it = ListaProductos.iterator();
ProductoFresco tmp;
while(it.hasNext()){
tmp = it.next(); tmp.showInfo(); System.out.println("");
}
}
}
Cabe destacar que es obvio que un producto congelado no es un producto fresco, pero los organizé de esa manera por los atributos que llevaban y teniendo en cuenta que en el curso repiten que las clases no tienen que corresponderse con el mundo real necesariamente.
Saludos y gracias por leerme.