Autor Tema: Polimorfismo y variables polimórficas Java. Jerarquía de tipos. Ejemplo CU00688B  (Leído 2401 veces)

LuisM

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 131
    • Ver Perfil
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

Código: [Seleccionar]
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

Código: [Seleccionar]
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

Código: [Seleccionar]
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
Código: [Seleccionar]
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

Código: [Seleccionar]
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

Código: [Seleccionar]
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;               
    }
}
« Última modificación: 07 de Octubre 2017, 21:24 por Alex Rodríguez »

LuisM

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 131
    • Ver Perfil
ProductoCongeladoPorAire
Código: [Seleccionar]
import java.util.*;
/**
 * Write a description of class ProductoCongeladoPorAire here.
 *
 * @author Luis
 * @version CU00688B
 */
public class ProductoCongeladoPorAire extends ProductoCongelado {
    float valorN=0;
    float valorO=0;
    float valorCO2=0;
    float valorH2O=0;
    public ProductoCongeladoPorAire() {
    }
    public ProductoCongeladoPorAire(String nomProd, int lote, String xPais, TipoDeProducto tipoDeProducto, Calendar fechaEnvasado, Calendar fechaCaducidad, double temperaturaMantenimiento, TipoDeCongelado tipoCongelado, float valorN, float valorO, float valorCO2, float valorH2O ) {
       super(nomProd, lote, xPais, tipoDeProducto, fechaEnvasado, fechaCaducidad, temperaturaMantenimiento, tipoCongelado);
    }
    /**
    * @param valorN El porcentaje de Nitrogeno 
    */
    public void setPorcentajeN(float valorN){
        this.valorN=valorN;               
    }
    /**
    * @param valorO El porcentaje de Oxigeno
    */
    public void setPorcentajeO(float valorO){
        this.valorO=valorO;               
    }
    /**
    * @param valorCO2 El porcentaje de CO2
    */
    public void setPorcentajeCO2(float valorCO2){
        this.valorCO2=valorCO2;               
    }
    /**
    * @param valorH2O El porcentaje de vapor de H2O
    */
    public void setPorcentajeH2O(float valorH2O){
        this.valorH2O=valorH2O;               
    }
    /**
    * @return El porcentaje de Nitrogeno  (float)
    */
    public float getPorcentajeN(){
        return valorN;               
    }
    /**
    * @return El porcentaje de Oxigeno  (float)
    */
    public float getPorcentajeO(){
        return valorO;               
    }
    /**
    * @return El porcentaje de CO2  (float)
    */
    public float getPorcentajeCO2(){
        return valorCO2;               
    }
    /**
    * @return El porcentaje de Vapor de H2O  (float)
    */
    public float getPorcentajeH2O(){
        return valorH2O;               
    }
}
ProductoCongeladoPorAgua
Código: [Seleccionar]
import java.util.*;
/**
 * Write a description of class ProductoCongeladoPorAgua here.
 *
 * @author Luis
 * @version CU00688B
 */
public class ProductoCongeladoPorAgua extends ProductoCongelado {
    int salinidadAgua=0;
    public ProductoCongeladoPorAgua() {
    }
    public ProductoCongeladoPorAgua(String nomProd, int lote, String xPais, TipoDeProducto tipoProducto, Calendar fechaEnvasado, Calendar fechaCaducidad, double temperaturaMantenimiento, TipoDeCongelado tipoCongelado, int salinidadAgua ) {
       super(nomProd, lote, xPais, tipoProducto, fechaEnvasado, fechaCaducidad, temperaturaMantenimiento, tipoCongelado);
    }
    /**
    * @param salinidadAgua Salinidad del agua 
    */
    public void setSalinidadAgua(int salinidadAgua){
        this.salinidadAgua=salinidadAgua;               
    }
    /**
    * @return La salinidad del agua  (int)
    */
    public int getSalinidadAgua(){
        return salinidadAgua;               
    }
}
ProductoCongeladoPorNitrogeno
Código: [Seleccionar]
import java.util.*;
/**
 * Write a description of class ProductoCongeladoPorNitrogeno here.
 *
 * @author Luis
 * @version CU00688B
 */
public class ProductoCongeladoPorNitrogeno extends ProductoCongelado {
    int tiempoExposicion=0;
    String metodoCongeladoNitrogeno ="";
    public ProductoCongeladoPorNitrogeno() {
    }
    public ProductoCongeladoPorNitrogeno(String nomProd, int lote, String xPais, TipoDeProducto tipoDeProducto, Calendar fechaEnvasado, Calendar fechaCaducidad, double temperaturaMantenimiento, TipoDeCongelado tipoCongelado, int tiempoExposicion, String metodoCongeladoNitrogeno) {
       super(nomProd, lote, xPais, tipoDeProducto, fechaEnvasado, fechaCaducidad, temperaturaMantenimiento, tipoCongelado);
    }
    /**
    * @param tiempoExposicion El tiempo de exposicion
    */
    public void setTiempoExposicion(int tiempoExposicion){
        this.tiempoExposicion=tiempoExposicion;               
    }
    /**
    * @param metodoCongeladoNitrogeno El método usado para congelar por Nitrogeno
    */
    public void setMetodoCongeladoNitrogeno(String metodoCongeladoNitrogeno){
        this.metodoCongeladoNitrogeno=metodoCongeladoNitrogeno;               
    }
    /**
    * @return El tiempo de exposición  (int)
    */
    public int getTiempoExposicion(){
        return tiempoExposicion;               
    }
    /**
    * @return El método usado para congelar usando Nitrogeno  (String)
    */
    public String getMetodoCongeladoNitrogeno(){
        return metodoCongeladoNitrogeno;               
    }
}
Clases enum
Código: [Seleccionar]

/**
 * Enumeration class TipoDeProducto - write a description of the enum class here
 *
 * @author (your name here)
 * @version (version number or date here)
 */
public enum TipoDeProducto
{
    FRESCO,REFRIGERADO,CONGELADO
}

Código: [Seleccionar]
/**
 * Enumeration class TipoDeCongelado - write a description of the enum class here
 *
 * @author (your name here)
 * @version (version number or date here)
 */
public enum TipoDeCongelado
{
    AGUA,AIRE,NITROGENO
}

EnvioDeProductos
Código: [Seleccionar]
//Ejemplo de uso ArrayList aprenderaprogramar.com
import java.util.*; //Los import deben ir siempre al principio antes de declarar la clase
//Esta clase representa una lista de nombres manejada con la clase ArrayList de Java
public class EnvioDeProductos {
    private String nombreDeLaLista; //Establecemos un atributo nombre de la lista
    private ArrayList<Producto> envioDeProductos; //Declaramos un ArrayList que contiene objetos String
    public EnvioDeProductos (String nombre) {    //Constructor: crea una lista de nombres vacía
        nombreDeLaLista = nombre;
        envioDeProductos = new ArrayList<Producto>(); //Creamos el objeto de tipo ArrayList
    } //Cierre del constructor

    public void addLista(String nomProd, int lote, String xPais, TipoDeProducto tipoProducto, Calendar fechaEnvasado, Calendar fechaCaducidad) {
        Producto producto = new Producto(nomProd, lote, xPais, tipoProducto, fechaEnvasado, fechaCaducidad);
        envioDeProductos.add(producto);
    } //Cierre del método

    public int getTamanio () { return envioDeProductos.size(); } //Cierre del método
   
    Iterator<Producto>iterator() {   return envioDeProductos.iterator();}
   
    public void removeNombre (int posicion) {  //Método
        if (posicion >= 0 && posicion < envioDeProductos.size() ) {
            envioDeProductos.remove(posicion); }
        else { } //else vacío. No existe nombre para la posición solicitada, no se ejecuta ninguna instrucción
    } //Cierre del método removeNombre
} //Cierre de la clase

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola, código bien trabajado. A continuación una serie de observaciones.

Dado que el ejercicio pretendía servir para usar herencia, es más lógico resolver este ejercicio definiendo tres subclases que hereden de la clase ProductoCongelado, en lugar de definir un atributo para indicar el tipo de producto congelado.

Para hacer uso de la herencia hubiera sido bueno que, además de los constructores, en algún método se reutilizara código. Puede verse un ejemplo en https://www.aprenderaprogramar.com/foros/index.php?topic=2959.0 donde el método public void muestraDatosProducto() reutiliza código de las superclases en las subclases.

En la clase EnvioDeProductos no estás trabajando con objetos a la hora de añadir objetos a la lista de productos, y trabajar con objetos es algo que siempre debemos tener en mente en la programación Java.

Para añadir productos a la lista estás usando

public void addLista(String nomProd, int lote, String xPais, TipoDeProducto tipoProducto, Calendar fechaEnvasado, Calendar fechaCaducidad)

Estos productos tal y como los estás creando pueden carecer de cierta información. Por ejemplo, si es un producto congelado le faltaría la temperatura de mantenimiento

Si trabajas con objetos lo más natural sería haber usado esta forma:

public void addLista (Producto productoAnnadido)

Así ya estás trabajando directamente con objetos. El método recibiría como parámetro un objeto. Eso es algo muy frecuente en Java, con lo que debemos acostumbrarnos a trabajar.

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