56
« en: 11 de Septiembre 2017, 16:40 »
Hola a todos !! Paso a dejar la respuesta al ejercicio propuesto CU00688B del curso de programación básica con Java. Desde ya muchas gracias. Saludos. Luis
EJERCICIO
Amplía el código del programa Java que planteamos como ejercicio en la entrega CU00687 de este curso, relativo a la gestión de una empresa agroalimentaria, teniendo en cuenta que la empresa gestiona envíos a través de diferentes medios, y un envío puede contener cierto número de productos frescos, refrigerados o congelados. Añade al código:
a) Una clase EnvioDeProductos que represente un envío de productos como colección de objetos que admite el polimorfismo.
b) Crear una clase testHerencia4 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). Crear un envío que represente la agrupación de los anteriores productos. Mostrar por pantalla la información del número de productos que componen el envío y recorrer los productos del envío usando iterator para mostrar la información (valor de los atributos) de cada uno de ellos.
Clase principal
import java.util.*; //Importación del código de la clase Scanner desde la biblioteca Java
public class TestHerencia4 {
public static void main (String [ ] args) {
TipoDeProducto tipoProducto=TipoDeProducto.FRESCO;
TipoDeCongelado tipoCongelado=TipoDeCongelado.AIRE;
Calendar fechaEnvasado;
Calendar fechaCaducidad;
fechaEnvasado=Calendar.getInstance();
fechaCaducidad=Calendar.getInstance();
int dia=0;
int mes=0;
int anio=0;
//
EnvioDeProductos lista = new EnvioDeProductos("Lista de productos");
fechaEnvasado=Calendar.getInstance();
fechaCaducidad=Calendar.getInstance();
dia=8; mes=8; anio=2017;
fechaEnvasado.set(Calendar.DAY_OF_MONTH,dia);
fechaEnvasado.set(Calendar.MONTH,mes-1);
fechaEnvasado.set(Calendar.YEAR,anio);
dia=28; mes=8; anio=2017;
fechaCaducidad.set(Calendar.DAY_OF_MONTH,dia);
fechaCaducidad.set(Calendar.MONTH,mes-1);
fechaCaducidad.set(Calendar.YEAR,anio);
ProductoFresco prodFres1 = new ProductoFresco("PROD. FRESCO 1", 11, "ARGENTINA", tipoProducto.FRESCO, fechaEnvasado, fechaCaducidad);
lista.addLista(prodFres1.getNombreProducto(),prodFres1.getNroLote(),prodFres1.getPaisOrigen(),prodFres1.getTipoDeProducto(),prodFres1.getFechaEnvasado(),prodFres1.getFechaCaducidad());
fechaEnvasado=Calendar.getInstance();
fechaCaducidad=Calendar.getInstance();
dia=9; mes=8; anio=2017;
fechaEnvasado.set(Calendar.DAY_OF_MONTH,dia);
fechaEnvasado.set(Calendar.MONTH,mes-1);
fechaEnvasado.set(Calendar.YEAR,anio);
dia=29; mes=8; anio=2017;
fechaCaducidad.set(Calendar.DAY_OF_MONTH,dia);
fechaCaducidad.set(Calendar.MONTH,mes-1);
fechaCaducidad.set(Calendar.YEAR,anio);
ProductoFresco prodFres2 = new ProductoFresco("PROD. FRESCO 2", 12, "CHILE", tipoProducto.FRESCO, fechaEnvasado, fechaCaducidad);
lista.addLista(prodFres2.getNombreProducto(),prodFres2.getNroLote(),prodFres2.getPaisOrigen(),prodFres2.getTipoDeProducto(),prodFres2.getFechaEnvasado(),prodFres2.getFechaCaducidad());
fechaEnvasado=Calendar.getInstance();
fechaCaducidad=Calendar.getInstance();
dia=10; mes=9; anio=2017;
fechaEnvasado.set(Calendar.DAY_OF_MONTH,dia);
fechaEnvasado.set(Calendar.MONTH,mes-1);
fechaEnvasado.set(Calendar.YEAR,anio);
dia=22; mes=10; anio=2017;
fechaCaducidad.set(Calendar.DAY_OF_MONTH,dia);
fechaCaducidad.set(Calendar.MONTH,mes-1);
fechaCaducidad.set(Calendar.YEAR,anio);
ProductoRefrigerado prodRefr1 = new ProductoRefrigerado("PROD. REFRIGERADO 1", 21, "URUGUAY", tipoProducto.REFRIGERADO, fechaEnvasado, fechaCaducidad, 1.5, "ORG.SUPERVISION 1");
lista.addLista(prodRefr1.getNombreProducto(),prodRefr1.getNroLote(),prodRefr1.getPaisOrigen(),prodRefr1.getTipoDeProducto(),prodRefr1.getFechaEnvasado(),prodRefr1.getFechaCaducidad());
fechaEnvasado=Calendar.getInstance();
fechaCaducidad=Calendar.getInstance();
dia=11; mes=9; anio=2017;
fechaEnvasado.set(Calendar.DAY_OF_MONTH,dia);
fechaEnvasado.set(Calendar.MONTH,mes-1);
fechaEnvasado.set(Calendar.YEAR,anio);
dia=31; mes=10; anio=2017;
fechaCaducidad.set(Calendar.DAY_OF_MONTH,dia);
fechaCaducidad.set(Calendar.MONTH,mes-1);
fechaCaducidad.set(Calendar.YEAR,anio);
ProductoRefrigerado prodRefr2 = new ProductoRefrigerado("PROD. REFRIGERADO 2", 22, "BOLIVIA", tipoProducto.REFRIGERADO, fechaEnvasado, fechaCaducidad, 1.6, "ORG.SUPERVISION 2");
lista.addLista(prodRefr2.getNombreProducto(),prodRefr2.getNroLote(),prodRefr2.getPaisOrigen(),prodRefr2.getTipoDeProducto(),prodRefr2.getFechaEnvasado(),prodRefr2.getFechaCaducidad());
fechaEnvasado=Calendar.getInstance();
fechaCaducidad=Calendar.getInstance();
dia=5; mes=9; anio=2017;
fechaEnvasado.set(Calendar.DAY_OF_MONTH,dia);
fechaEnvasado.set(Calendar.MONTH,mes-1);
fechaEnvasado.set(Calendar.YEAR,anio);
dia=25; mes=10; anio=2017;
fechaCaducidad.set(Calendar.DAY_OF_MONTH,dia);
fechaCaducidad.set(Calendar.MONTH,mes-1);
fechaCaducidad.set(Calendar.YEAR,anio);
ProductoRefrigerado prodRefr3 = new ProductoRefrigerado("PROD. REFRIGERADO 3", 23, "PARAGUAY", tipoProducto.REFRIGERADO, fechaEnvasado, fechaCaducidad, 1.7, "ORG.SUPERVISION 3");
lista.addLista(prodRefr3.getNombreProducto(),prodRefr3.getNroLote(),prodRefr3.getPaisOrigen(),prodRefr3.getTipoDeProducto(),prodRefr3.getFechaEnvasado(),prodRefr3.getFechaCaducidad());
fechaEnvasado=Calendar.getInstance();
fechaCaducidad=Calendar.getInstance();
dia=7; mes=8; anio=2017;
fechaEnvasado.set(Calendar.DAY_OF_MONTH,dia);
fechaEnvasado.set(Calendar.MONTH,mes-1);
fechaEnvasado.set(Calendar.YEAR,anio);
dia=27; mes=12; anio=2017;
fechaCaducidad.set(Calendar.DAY_OF_MONTH,dia);
fechaCaducidad.set(Calendar.MONTH,mes-1);
fechaCaducidad.set(Calendar.YEAR,anio);
ProductoCongeladoPorAgua prodCongAgua1 = new ProductoCongeladoPorAgua("PROD. CONG x AGUA 1", 31, "PERU", tipoProducto.CONGELADO, fechaEnvasado, fechaCaducidad, -10.5, tipoCongelado.AGUA, 20);
lista.addLista(prodCongAgua1.getNombreProducto(),prodCongAgua1.getNroLote(),prodCongAgua1.getPaisOrigen(),prodCongAgua1.getTipoDeProducto(),prodCongAgua1.getFechaEnvasado(),prodCongAgua1.getFechaCaducidad());
fechaEnvasado=Calendar.getInstance();
fechaCaducidad=Calendar.getInstance();
dia=9; mes=8; anio=2017;
fechaEnvasado.set(Calendar.DAY_OF_MONTH,dia);
fechaEnvasado.set(Calendar.MONTH,mes-1);
fechaEnvasado.set(Calendar.YEAR,anio);
dia=29; mes=1; anio=2018;
fechaCaducidad.set(Calendar.DAY_OF_MONTH,dia);
fechaCaducidad.set(Calendar.MONTH,mes-1);
fechaCaducidad.set(Calendar.YEAR,anio);
ProductoCongeladoPorAgua prodCongAgua2 = new ProductoCongeladoPorAgua("PROD. CONG x AGUA 2", 32, "ECUADOR", tipoProducto.CONGELADO, fechaEnvasado, fechaCaducidad, -10.6, tipoCongelado.AGUA, 21);
lista.addLista(prodCongAgua2.getNombreProducto(),prodCongAgua2.getNroLote(),prodCongAgua2.getPaisOrigen(),prodCongAgua2.getTipoDeProducto(),prodCongAgua2.getFechaEnvasado(),prodCongAgua2.getFechaCaducidad());
fechaEnvasado=Calendar.getInstance();
fechaCaducidad=Calendar.getInstance();
dia=3; mes=8; anio=2017;
fechaEnvasado.set(Calendar.DAY_OF_MONTH,dia);
fechaEnvasado.set(Calendar.MONTH,mes-1);
fechaEnvasado.set(Calendar.YEAR,anio);
dia=31; mes=12; anio=2017;
fechaCaducidad.set(Calendar.DAY_OF_MONTH,dia);
fechaCaducidad.set(Calendar.MONTH,mes-1);
fechaCaducidad.set(Calendar.YEAR,anio);
ProductoCongeladoPorAire prodCongAire1 = new ProductoCongeladoPorAire("PROD. CONG x AIRE 1", 41, "BRASIL", tipoProducto.CONGELADO, fechaEnvasado, fechaCaducidad, -10.7, tipoCongelado.AIRE, 1, 2, 3, 4);
lista.addLista(prodCongAire1.getNombreProducto(),prodCongAire1.getNroLote(),prodCongAire1.getPaisOrigen(),prodCongAire1.getTipoDeProducto(),prodCongAire1.getFechaEnvasado(),prodCongAire1.getFechaCaducidad());
fechaEnvasado=Calendar.getInstance();
fechaCaducidad=Calendar.getInstance();
dia=4; mes=8; anio=2017;
fechaEnvasado.set(Calendar.DAY_OF_MONTH,dia);
fechaEnvasado.set(Calendar.MONTH,mes-1);
fechaEnvasado.set(Calendar.YEAR,anio);
dia=24; mes=12; anio=2017;
fechaCaducidad.set(Calendar.DAY_OF_MONTH,dia);
fechaCaducidad.set(Calendar.MONTH,mes-1);
fechaCaducidad.set(Calendar.YEAR,anio);
ProductoCongeladoPorAire prodCongAire2 = new ProductoCongeladoPorAire("PROD. CONG x AIRE 2", 42, "COLOMBIA", tipoProducto.CONGELADO, fechaEnvasado, fechaCaducidad, -10.8, tipoCongelado.AIRE, 5, 6, 7, 8);
lista.addLista(prodCongAire2.getNombreProducto(),prodCongAire2.getNroLote(),prodCongAire2.getPaisOrigen(),prodCongAire2.getTipoDeProducto(),prodCongAire2.getFechaEnvasado(),prodCongAire2.getFechaCaducidad());
fechaEnvasado=Calendar.getInstance();
fechaCaducidad=Calendar.getInstance();
dia=5; mes=8; anio=2017;
fechaEnvasado.set(Calendar.DAY_OF_MONTH,dia);
fechaEnvasado.set(Calendar.MONTH,mes-1);
fechaEnvasado.set(Calendar.YEAR,anio);
dia=25; mes=12; anio=2017;
fechaCaducidad.set(Calendar.DAY_OF_MONTH,dia);
fechaCaducidad.set(Calendar.MONTH,mes-1);
fechaCaducidad.set(Calendar.YEAR,anio);
ProductoCongeladoPorNitrogeno prodCongNitrogeno1 = new ProductoCongeladoPorNitrogeno("PROD. CONG x NITROGENO 1", 51, "VENEZUELA", tipoProducto.CONGELADO, fechaEnvasado, fechaCaducidad, -10.9, tipoCongelado.NITROGENO, 10, "METODO NITROGENO");
lista.addLista(prodCongNitrogeno1.getNombreProducto(),prodCongNitrogeno1.getNroLote(),prodCongNitrogeno1.getPaisOrigen(),prodCongNitrogeno1.getTipoDeProducto(),prodCongNitrogeno1.getFechaEnvasado(),prodCongNitrogeno1.getFechaCaducidad());
Iterator <Producto> it=lista.iterator();
while(it.hasNext()){
Producto itemLista;
itemLista=(Producto)it.next(); // objeto de la lista que estamos viendo
dia = itemLista.getFechaEnvasado().get(Calendar.DAY_OF_MONTH);
mes = itemLista.getFechaEnvasado().get(Calendar.MONTH)+1;
anio = itemLista.getFechaEnvasado().get(Calendar.YEAR);
String strFechaEnvasado = dia+"/"+mes+"/"+anio;
dia = itemLista.getFechaCaducidad().get(Calendar.DAY_OF_MONTH);
mes = itemLista.getFechaCaducidad().get(Calendar.MONTH)+1;
anio = itemLista.getFechaCaducidad().get(Calendar.YEAR);
String strFechaCaducidad = dia+"/"+mes+"/"+anio;
System.out.println(itemLista.getNombreProducto()+" lote :"+itemLista.getNroLote() + " origen :"+itemLista.getPaisOrigen()+" tipo :"+itemLista.getTipoDeProducto()+ " envasado :"+strFechaEnvasado+" Vence :"+strFechaCaducidad);
}
}
}
Clase Producto
import java.util.*;
/**
* Write a description of class Producto here.
*
* @author Luis
* @version CU00688B
*/
public class Producto
{
// instance variables - replace the example below with your own
public String nombreProducto;
public int nroLote;
public String paisOrigen;
TipoDeProducto tipoProducto;
Calendar fechaEnvasado;
Calendar fechaCaducidad;
/**
* Constructor for objects of class Productos
*/
public Producto()
{
// initialise instance variables
nombreProducto = "";
nroLote = 0;
paisOrigen = "";
fechaEnvasado.getInstance();
fechaCaducidad.getInstance();
}
public Producto(String nombreProducto, int nroLote, String paisOrigen, TipoDeProducto tipoProducto, Calendar fechaEnvasado, Calendar fechaCaducidad){
this.nombreProducto=nombreProducto;
this.nroLote=nroLote;
this.paisOrigen=paisOrigen;
this.tipoProducto=tipoProducto;
this.fechaEnvasado=fechaEnvasado;
this.fechaCaducidad=fechaCaducidad;
}
// metodos setters
/**
* @param nombreProducto Descripcion del producto
*/
public void setNombreProducto(String nombreProducto){
this.nombreProducto=nombreProducto;
}
/**
* @param nroLote Numero de lote del producto
*/
public void setNroLote(int nroLote){
this.nroLote=nroLote;
}
/**
* @param tipoProducto enun FRESCO, REFRIGERADO, CONGELADO
*/
public void setTipoProducto(TipoDeProducto tipoProducto) {
this.tipoProducto=tipoProducto;
}
/**
* @param paisOrigen Nombre del pais de origen del producto
*/
public void setPaisOrigen(String xPais){
this.paisOrigen = paisOrigen;
}
public void setFechaEnvasado(Calendar fechaEnvasado){
this.fechaEnvasado = fechaEnvasado;
}
public void setFechaCaducidad(Calendar fechaCaducidad){
this.fechaCaducidad = fechaCaducidad;
}
// metodos getters
/**
* @return Nombre del producto (String)
*/
public String getNombreProducto(){
return nombreProducto;
}
/**
* @return Número de lote (int)
*/
public int getNroLote(){
return nroLote;
}
/**
* @return Nombre del producto (String)
*/
public String getPaisOrigen(){
return paisOrigen;
}
/**
* @return El tipo de producto (enum)
*/
public TipoDeProducto getTipoDeProducto(){
return tipoProducto;
}
/**
* @return Fecha de envasado del producto (Calendar)
*/
public Calendar getFechaEnvasado(){
return fechaEnvasado;
}
/**
* @return Fecha de vencimiento del producto (Calendar)
*/
public Calendar getFechaCaducidad(){
return fechaCaducidad;
}
}
ProductoFresco
import java.util.*;
/**
* Write a description of class ProductoFresco here.
*
* @author Luis
* @version CU00688B
*/
public class ProductoFresco extends Producto {
public ProductoFresco() {
}
public ProductoFresco(String nomProd, int lote, String xPais, TipoDeProducto tipoDeProducto, Calendar fechaEnvasado, Calendar fechaCaducidad) {
super(nomProd, lote, xPais, tipoDeProducto, fechaEnvasado, fechaCaducidad);
}
}
ProductoConservadoEnFrio
import java.util.*;
/**
* Write a description of class ProductoConservadoEnFrio here.
*
* @author Luis
* @version CU00688B
*/
public class ProductoConservadoEnFrio extends Producto
{
private double temperaturaMantenimiento;
public ProductoConservadoEnFrio() {
}
public ProductoConservadoEnFrio(String nomProd, int lote, String xPais, TipoDeProducto tipoProducto, Calendar fechaEnvasado, Calendar fechaCaducidad, double temperaturaMantenimiento) {
// initialise instance variables
super(nomProd, lote, xPais, tipoProducto, fechaEnvasado, fechaCaducidad);
this.temperaturaMantenimiento=temperaturaMantenimiento;
}
/**
* @param codigoOrganismoSupervision El Organismo que controla el producto
*/
/**
* @param temperaturaMantenimiento La temperatura para mantener el producto refrigerado
*/
public void setTemperaturaMantenimiento(double temperaturaMantenimiento){
this.temperaturaMantenimiento = temperaturaMantenimiento;
}
/**
* @return La temperatura para mantener el producto refrigerado (double)
*/
public double getTemperaturaMantenimiento() {
return temperaturaMantenimiento;
}
}
ProductoRefrigerado
import java.util.*;
/**
* Write a description of class ProductoRefrigerado here.
*
* @author Luis
* @version CU00688B
*/
public class ProductoRefrigerado extends ProductoConservadoEnFrio
{
public String organismoSupervision;
public ProductoRefrigerado() {
}
public ProductoRefrigerado(String nomProd, int lote, String xPais, TipoDeProducto tipoProducto, Calendar fechaEnvasado, Calendar fechaCaducidad, double temperaturaMantenimiento, String organismoSupervision) {
// initialise instance variables
super(nomProd, lote, xPais, tipoProducto, fechaEnvasado, fechaCaducidad, temperaturaMantenimiento);
this.organismoSupervision=organismoSupervision;
}
/**
* @param codigoOrganismoSupervision El Organismo que controla el producto
*/
public void setOrganismoSupervision(String codigoOrganismoSupervision){
this.organismoSupervision = organismoSupervision;
}
/**
* @return El Organismo que controla el producto (String)
*/
public String getOrganismoSupervision() {
return organismoSupervision;
}
}
ProductoCongelado
import java.util.*;
/**
* Write a description of class ProductoCongelado here.
*
* @author Luis
* @version CU00688B
*/
public class ProductoCongelado extends ProductoConservadoEnFrio {
TipoDeCongelado tipoCongelado;
public ProductoCongelado() {
}
public ProductoCongelado(String nomProd, int lote, String xPais, TipoDeProducto tipoProducto, Calendar fechaEnvasado, Calendar fechaCaducidad, double temperaturaMantenimiento, TipoDeCongelado tipoCongelado) {
super(nomProd, lote, xPais, tipoProducto, fechaEnvasado, fechaCaducidad, temperaturaMantenimiento);
this.tipoCongelado=tipoCongelado;
}
/**
* @param tipoCongelado enun AIRE, AGUA, NITROGENO
*/
public void setTipoCongelado(TipoDeCongelado tipoCongelado) {
this.tipoCongelado = tipoCongelado;
}
/**
* @return El tipo de congelado (enum)
*/
public TipoDeCongelado getTipoDeCongelado(){
return tipoCongelado;
}
}