Buenas, qué tal? Aquí les dejo la resolución del ejercicio propuesto (CU00688B) del tutorial pdf de programación Java de aprenderaprogramar.
Se me complicó un poco el colocar un título a cada producto que se imprime (producto fresco, congelado, etc). Se me ocurren varias formas, pero creo que existe un método más rápido que quizás no se me ocurre en este momento y espero puedan decirme la forma.
O sea, yo quería que al imprimir, hiciera esto:
####### Productos Frescos #######
todos los productos frescos...
y así con los demás.
En fin, aquí les dejo la resolución del ejercicio, gracias.
Clase Producto
public class Producto {
private String fecha_envasado;
private String fecha_caducidad;
private String pais;
private int num_lote;
Producto(String envasado, String caducidad, String pais, int num_lote){
this.fecha_envasado = envasado;
this.fecha_caducidad = caducidad;
this.pais = pais;
this.num_lote = num_lote;
}
public String getEnvasado() { return fecha_envasado; }
public void setEnvasado(String envasado) { this.fecha_envasado = envasado; }
public String getCaducidad() { return fecha_caducidad; }
public void setCaducidad(String caducidad) { this.fecha_caducidad = caducidad; }
public String getPais() { return pais; }
public void setPais(String pais) { this.pais = pais; }
public int getNum_lote() { return num_lote; }
public void setNum_lote(int num_lote) { this.num_lote = num_lote; }
public void mostrarInformacion() {
System.out.println("Fecha de envasado: " + this.getEnvasado() + "; Fecha de caducidad: " + this.getCaducidad());
System.out.println("Pais de origen: " + this.getPais() + "; Nro. Lote: " + this.getNum_lote());
}
}
Clase ProductosFrescos
public class ProductosFrescos extends Producto {
ProductosFrescos(String envasado, String caducidad, String pais, int num_lote){
super(envasado, caducidad, pais, num_lote);
}
public void mostrarInformacion() {
super.mostrarInformacion();
}
}
Clase ProductosRefrigYCongel (abstracción)
public class ProductosRefriYCongel extends Producto{
private double tempRecomend;
public ProductosRefriYCongel(String envasado, String caducidad, String pais, int num_lote, double tempRecomend) {
super(envasado, caducidad, pais, num_lote);
this.tempRecomend = tempRecomend;
}
public double getTempRecomend() { return tempRecomend; }
public void setTempRecomend(double tempRecomend) { this.tempRecomend = tempRecomend; }
public void mostrarInformacion() {
super.mostrarInformacion();
System.out.println("Temperatura recomendada: " + this.getTempRecomend() + "%");
}
}
Clase ProductosRefrigerados
public class ProductosRefrigerados extends ProductosRefriYCongel {
private String codigo_organismo;
public ProductosRefrigerados(String envasado, String caducidad, String pais, int num_lote, double tempRecomend, String codigoOrganis) {
super(envasado, caducidad, pais, num_lote, tempRecomend);
this.codigo_organismo = codigoOrganis;
}
public String getCodigo_organismo() { return codigo_organismo; }
public void setCodigo_organismo(String codigo_organismo) { this.codigo_organismo = codigo_organismo; }
public void mostrarInformacion() {
super.mostrarInformacion();
System.out.println("Código de organismo: " + this.getCodigo_organismo());
}
}
Clase ProductosCongelados
public class ProductosCongelados extends ProductosRefriYCongel {
public ProductosCongelados(String envasado, String caducidad, String pais, int num_lote, double tempRecomend) {
super(envasado, caducidad, pais, num_lote, tempRecomend);
}
public void mostrarInformacion() {
super.mostrarInformacion();
}
}
Clase CongeladoPorAgua
public class PorAgua extends ProductosCongelados {
private double salinidadAgua;
public PorAgua(String envasado, String caducidad, String pais, int num_lote, double tempRecomend, double salinidad) {
super(envasado, caducidad, pais, num_lote, tempRecomend);
this.salinidadAgua = salinidad;
}
public double getSalinidadAgua() { return salinidadAgua; }
public void setSalinidadAgua(double salinidadAgua) { this.salinidadAgua = salinidadAgua; }
public void mostrarInformacion() {
super.mostrarInformacion();
System.out.println("Salinidad de agua: " + this.getSalinidadAgua());
}
}
Clase CongeladoPorAire
public class PorAire extends ProductosCongelados{
private double nitrogeno;
private double oxigeno;
private double dioxCarb;
private double vaporAgua;
public PorAire(String envas, String caduc, String pais, int numLot, double tempRecomend, double nitrog,
double oxig, double dioxCarb, double vaporAgua) {
super(envas, caduc, pais, numLot, tempRecomend);
this.nitrogeno = nitrog;
this.oxigeno = oxig;
this.dioxCarb = dioxCarb;
this.vaporAgua = vaporAgua;
}
public double getNitrogeno() { return nitrogeno; }
public void setNitrogeno(double nitrogeno) { this.nitrogeno = nitrogeno; }
public double getOxigeno() { return oxigeno; }
public void setOxigeno(double oxigeno) { this.oxigeno = oxigeno; }
public double getDioxCarb() { return dioxCarb; }
public void setDioxCarb(double dioxCarb) { this.dioxCarb = dioxCarb; }
public double getVaporAgua() { return vaporAgua; }
public void setVaporAgua(double vaporAgua) { this.vaporAgua = vaporAgua; }
public void mostrarInformacion() {
super.mostrarInformacion();
System.out.println("Nitrogeno: " + this.getNitrogeno() + "%; Oxigeno: " + this.getOxigeno() + "%");
System.out.println("Dioxido de carbono: " + this.getDioxCarb() + "%; Vapor de agua: " + this.getVaporAgua() + "%");
}
}
Clase CongeladoPorNitrogeno
public class PorNitrogeno extends ProductosCongelados {
private String metodCongelacion;
private int tiempExposicNitrogeno;
public PorNitrogeno(String envas, String caduc, String pais, int numLot, double tempRecomend,
String metodCongelac, int tiempExposicNitrogeno) {
super(envas, caduc, pais, numLot, tempRecomend);
this.metodCongelacion = metodCongelac;
this.tiempExposicNitrogeno = tiempExposicNitrogeno;
}
public String getMetodCongelacion() { return metodCongelacion; }
public void setMetodCongelacion(String metodCongelacion) { this.metodCongelacion = metodCongelacion; }
public int getTiempExposicNitrogeno() { return tiempExposicNitrogeno; }
public void setTiempExposicNitrogeno(int tiempExposicNitrogeno) { this.tiempExposicNitrogeno = tiempExposicNitrogeno; }
public void mostrarInformacion() {
super.mostrarInformacion();
System.out.println("Metodo de congelación: " + this.getMetodCongelacion() + "\nTiempo de exposición por Nitrogeno: "
+ this.getTiempExposicNitrogeno());
}
}
Clase EnvioDeProductos
public class EnvioDeProductos {
private ArrayList<Producto> productos;
public EnvioDeProductos() {
this.productos = new ArrayList<>();
}
public ArrayList<Producto> getProductos() { return productos; }
public void setProductos(ArrayList<Producto> productos) { this.productos = productos; }
public void agregarProducto(Producto producto) {
this.productos.add(producto);
}
public void mostrarProductos() {
Iterator<Producto> it = this.productos.iterator();
int contador = 0;
while( it.hasNext() ) {
it.next().mostrarInformacion();
contador++;
}
System.out.println("Total de productos enviados: " + contador);
}
}
Método main
public static void main(String[] args) {
EnvioDeProductos envio = new EnvioDeProductos();
envio.agregarProducto(new ProductosFrescos("12-04-18", "12-05-19", "Perú", 2422333));
envio.agregarProducto(new ProductosFrescos("12-04-18", "12-05-19", "España", 1293291));
envio.agregarProducto(new ProductosRefrigerados("12-03-17", "12-04-18", "Suecia", 23210, 5.0, "XZEP211"));
envio.agregarProducto(new ProductosRefrigerados("12-03-17", "12-04-18", "Bélgica", 19302, 7.0, "PDMS231"));
envio.agregarProducto(new ProductosRefrigerados("12-03-17", "12-04-18", "Australia", 98421, 4.0, "EWK21ME"));
envio.agregarProducto(new PorAgua("12-03-14", "12-04-15", "Perú", 32423, -5.2, 24.5));
envio.agregarProducto(new PorAgua("23-04-13", "23-03-14", "Siria", 45122, -2.0, 24.5));
envio.agregarProducto(new PorAire("12-03-14", "12-04-15", "Bélgica", 14342, -7.2, 12.0, 10.4, 5.3, 10.0));
envio.agregarProducto(new PorAire("23-04-11", "14-02-13", "España", 14342, -2.3, 12.0, 10.4, 5.3, 10.0));
envio.agregarProducto(new PorNitrogeno("13-02-15", "25-02-18", "México", 23211, -10.2, "Criogénico", 23223));
envio.mostrarProductos();
}
Gracias y si me tienen que corregir, háganlo por favor, es la única forma de aprender. Ah, y por favor, revisen mi otra publicación
