Autor Tema: Ejemplo fechas formato Java clases Calendar, Locale, SimpleDateFormat CU00687B  (Leído 5108 veces)

barriway

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 20
    • Ver Perfil
Bunas tardes. Esta podría ser una solución al ejercicio propueto.

Este sería el diagrama de clases a utilizar.



Ahora la codificación.

Código: [Seleccionar]
import java.util.Calendar;
import java.text.SimpleDateFormat;
import java.util.Locale;

public class Producto
{
   
    private static Locale currentLocale = new Locale("es","ES");
    private String lote;
    private Calendar fechaEnvasado;
    private Calendar fechaCaducidad;
    private String paisOrigen;
 

    public Producto(){
        lote="";
        fechaCaducidad=null;
        fechaEnvasado=null;
        paisOrigen="";
    }

    public Producto(String lote,Calendar fechaEnvasado,Calendar fechaCaducidad,String paisOrigen){
        this.lote=lote;
        this.fechaEnvasado=Calendar.getInstance(currentLocale);
        this.fechaEnvasado.setTime(fechaEnvasado.getTime());
        this.fechaCaducidad=Calendar.getInstance(currentLocale);
        this.fechaCaducidad.setTime(fechaCaducidad.getTime());
        this.paisOrigen=paisOrigen;
    }

    public void setLote(String lote){
        this.lote=lote;
    }

    public void setFechaEnvasado(Calendar fechaEnvasado){
        this.fechaEnvasado=fechaEnvasado;
    }
   
    public void setFechaCaducidad(Calendar fechaCaducidad){
        this.fechaCaducidad=fechaCaducidad;
    }

    public void setPaisOrigen(String paisOrigen){
        this.paisOrigen=paisOrigen;
    }
   
    public String getLote(){
        return lote;
    }

    public Calendar getFechaEnvasado(){
       return fechaEnvasado;
    }
   
    public Calendar getFechaCaducidad(){
        return fechaCaducidad;
    }

    public String getPaisOrigen(){
        return paisOrigen;
    }
   
    public void mostrarProducto(){
        SimpleDateFormat formatoFecha = new SimpleDateFormat("dd/MMM/yyyy",currentLocale);
        System.out.println("Lote : "+lote);
        System.out.println("Fecha de envasado : "+formatoFecha.format(fechaEnvasado.getTime()));
        System.out.println("Fecha de caducidad : "+formatoFecha.format(fechaCaducidad.getTime()));
        System.out.println("País de origen : "+paisOrigen);
    }
}
Código: [Seleccionar]
import java.util.Calendar;

public class ProductoFresco extends Producto
{

    public ProductoFresco(){
        super();
    }

    public ProductoFresco(String numeroLote, Calendar fechaEnvasado, Calendar fechaCaducidad, String paisOrigen){
        super(numeroLote,fechaEnvasado,fechaCaducidad,paisOrigen);
    }

    public void mostrarProducto(){
        System.out.println("--- Producto Fresco ---");
        super.mostrarProducto();
        System.out.println("");
    }
}
Código: [Seleccionar]
import java.util.Calendar;

public class ProductoNoFresco extends Producto
{
    private double temperaturaMantenimientoRecomendada;

    public ProductoNoFresco(){
        super();
        temperaturaMantenimientoRecomendada=0;   
    }

    public ProductoNoFresco(String lote, Calendar fechaEnvasado, Calendar fechaCaducidad, String paisOrigen, double temperaturaMantenimientoRecomendada){
        super(lote,fechaEnvasado,fechaCaducidad,paisOrigen);
        this.temperaturaMantenimientoRecomendada=temperaturaMantenimientoRecomendada;
    }

    public void setTemperaturaMantenimientoRecomendada(double temperaturaMantenimientoRecomendada){
        this.temperaturaMantenimientoRecomendada=temperaturaMantenimientoRecomendada;
    }

    public double getTemperaturaMantenimientoRecomendada(){
        return temperaturaMantenimientoRecomendada;
    }
   
    public void mostrarProducto(){
        super.mostrarProducto();
        System.out.println("La temperatura de mantenimiento recomendada es de : "+temperaturaMantenimientoRecomendada+"ºC");
    }
}
Código: [Seleccionar]
import java.util.Calendar;

public class ProductoRefrigerado extends ProductoNoFresco
{
    private String codigoOrgSupAlim;

    public ProductoRefrigerado(){
        super();
        codigoOrgSupAlim="";   
    }

    public ProductoRefrigerado(String lote, Calendar fechaEnvasado, Calendar fechaCaducidad, String paisOrigen, double temperaturaMantenimientoRecomendada, String codigoOrgSupAlim){
        super(lote,fechaEnvasado,fechaCaducidad,paisOrigen,temperaturaMantenimientoRecomendada);
        this.codigoOrgSupAlim=codigoOrgSupAlim;
    }

    public void setCodigoOrgSupAlim(String codigoOrgSupAlim){
        this.codigoOrgSupAlim=codigoOrgSupAlim;
    }
   
    public String getCodigoOrgSupAlim(){
        return codigoOrgSupAlim;
    }

    public void mostrarProducto(){
        System.out.println("--- Producto Refrigerado ---");
        super.mostrarProducto();
        System.out.println("Codigo del Organismo de Supervisión Alimentaria : "+codigoOrgSupAlim+"\n");
    }
}
Código: [Seleccionar]
import java.util.Calendar;

public class ProductoCongeladoAire extends ProductoNoFresco
{
    private double nitrogeno;
    private double oxigeno;
    private double dioxidoCarbono;
    private double vaporAgua;

    public ProductoCongeladoAire()
    {
        super();
        nitrogeno=0;
        oxigeno=0;
        dioxidoCarbono=0;
        vaporAgua=0;
    }

    public ProductoCongeladoAire(String lote,Calendar fechaEnvasado,Calendar fechaCaducidad,String paisOrigen,
    double temperaturaMantenimientoRecomendada,double nitrogeno,double oxigeno,double dioxidoCarbono,double vaporAgua){
        super(lote,fechaEnvasado,fechaCaducidad,paisOrigen,temperaturaMantenimientoRecomendada);
        this.nitrogeno=nitrogeno;
        this.oxigeno=oxigeno;
        this.dioxidoCarbono=dioxidoCarbono;
        this.vaporAgua=vaporAgua;
    }

    public void setNitrogeno(double nitrogeno){
        this.nitrogeno =nitrogeno;
    }

     public void setOxigeno(double oxigeno){
        this.oxigeno =oxigeno;
    }
   
     public void setDioxidoCarbono(double dioxidoCarbono){
        this.dioxidoCarbono =dioxidoCarbono;
    }
   
     public void setVaporAgua(double vaporAgua){
        this.vaporAgua =vaporAgua;
    }
   
   
   
    public double getNitrogeno(){
        return nitrogeno;
    }

    public double getOxigeno(){
        return oxigeno;
    }
   
    public double getDioxidoCarbono(){
        return dioxidoCarbono;
    }
   
    public double geVaporAgua(){
        return vaporAgua;
    }
   
    public void mostrarProducto(){
        System.out.println("--- Producto Congelado por Aire---");
        super.mostrarProducto();
        System.out.println("Porcentaje de Nitrogeno : "+nitrogeno+"%");
        System.out.println("Porcentaje de Oxigeno : "+oxigeno+"%");
        System.out.println("Porcentaje de Dioxiodo de Carbono : "+dioxidoCarbono+"%");
        System.out.println("Porcentaje de Vapor de Agua : "+vaporAgua+"%\n");
    }
}
Código: [Seleccionar]
import java.util.Calendar;

public class ProductoCongeladoAgua extends ProductoNoFresco{

    private double salinidadAgua;

    public ProductoCongeladoAgua(){
        super();
        salinidadAgua=0;
    }

    public ProductoCongeladoAgua(String lote, Calendar fechaEnvasado, Calendar fechaCaducidad, String paisOrigen,
    double temperaturaMantenimientoRecomendada,double salinidadAgua){
        super(lote,fechaEnvasado,fechaCaducidad,paisOrigen,temperaturaMantenimientoRecomendada);
        this.salinidadAgua=salinidadAgua;
    }

    public void setSalinidadAgua(double salinidadAgua){
        this.salinidadAgua=salinidadAgua;
    }

    public double getSalinidadAgua(){
        return salinidadAgua;
    }

    public void mostrarProducto(){
        System.out.println("--- Producto Congelado por Agua ---");
        super.mostrarProducto();
        System.out.println("Salinidad del agua : "+salinidadAgua+"grNa/l\n");
    }
}
Código: [Seleccionar]
import java.util.Calendar;

public class ProductoCongeladoNitrogeno extends ProductoNoFresco
{
    private String metodoCongelacion;
    private int tiempoExposicion;

    public ProductoCongeladoNitrogeno(){
        super();
        metodoCongelacion="";
        tiempoExposicion=0;

    }

    public ProductoCongeladoNitrogeno(String lote,Calendar fechaEnvasado,Calendar fechaCaducidad,String paisOrigen,
    double temperaturaMantenimientoRecomendada,String metodoCongelacion,int tiempoExposicion){
        super(lote,fechaEnvasado,fechaCaducidad,paisOrigen,temperaturaMantenimientoRecomendada);
        this.metodoCongelacion=metodoCongelacion;
        this.tiempoExposicion=tiempoExposicion;
    }
   
    public void setMetodoCongelacion(String metodoCongelacion){
        this.metodoCongelacion=metodoCongelacion;
    }
   
    public void setTiempoExposicion(int tiempoExposicion){
        this.tiempoExposicion=tiempoExposicion;
    }
   
    public String getMetodoCongelacion(){
        return metodoCongelacion;
    }
   
    public int getTiempoExposicion(){
        return tiempoExposicion;
    }
   
    public void mostrarProducto(){
        System.out.println("--- Producto Congelado por Nitrógeno ---");
        super.mostrarProducto();
        System.out.println("Método de congelación utilizado : "+metodoCongelacion);
        System.out.println("Tiempo de exposición : "+tiempoExposicion+"s\n");
    }
}

Un saludo
« Última modificación: 24 de Julio 2015, 00:08 por César Krall »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:Curso JAVA ejercicio CU00687B . Constructores con herencia
« Respuesta #1 en: 19 de Julio 2015, 23:44 »
Hola!

El diseño de clases se ve bien. Parecería que falta una clase intermedia ProductoCongelado, de la que derivarían los distintos tipos de productos congelados, pero realmente con la consigna del ejercicio no habría contenido para ella.

Has usado clases auxiliares como Calendar, Locale, SimpleDateFormat que no se han explicado en el curso, pero con eso demuestras que estás siendo capaz de usar clases del api de Java, consultar documentación, etc. y todo ello es positivo.

También usar conceptos como static, super, etc. bien aplicados.

¿Te ha faltado incluir la clase con el main? No veo la clase ???

Consigna:

Citar
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 agua y 1 por nitrógeno). Mostrar la información de cada producto por pantalla.
Responsable de departamento de producción aprenderaprogramar.com

barriway

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 20
    • Ver Perfil
Re:Curso JAVA ejercicio CU00687B . Constructores con herencia
« Respuesta #2 en: 20 de Julio 2015, 07:49 »
Muchas gracias por tu respuesta César.
Lo del método main, error imperdonable!. Me dispongo a subirlo.

Código: [Seleccionar]
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Calendar;

public class TestHerencia3
{
    public static void main(String Arg[]){
        ArrayList<Producto> listaProductos= new ArrayList<Producto>();
        Calendar fechaEnvasado = Calendar.getInstance();
        Calendar fechaCaducidad = Calendar.getInstance();

        // Dos productos frescos
        fechaEnvasado.set(2001,0,1);fechaCaducidad.set(2011,0,1);
        listaProductos.add(new ProductoFresco("01-1",fechaEnvasado,fechaCaducidad,"Argentina"));
        fechaEnvasado.set(2002,0,1);fechaCaducidad.set(2012,0,1);
        listaProductos.add(new ProductoFresco("01-2",fechaEnvasado,fechaCaducidad,"Rumanía"));

        // Tres productos refrigerados
        fechaEnvasado.set(2001,1,2);fechaCaducidad.set(2021,1,2);
        listaProductos.add(new ProductoRefrigerado("02-1",fechaEnvasado,fechaCaducidad,"Holanda",3.00,"CODIGO-002"));
        fechaEnvasado.set(2002,1,2);fechaCaducidad.set(2022,1,2);
        listaProductos.add(new ProductoRefrigerado("02-2",fechaEnvasado,fechaCaducidad,"Suiza",2.00,"CODIGO-022"));
        fechaEnvasado.set(2003,1,2);fechaCaducidad.set(2023,1,2);
        listaProductos.add(new ProductoRefrigerado("02-3",fechaEnvasado,fechaCaducidad,"Holanda",4.00,"CODIGO-222"));

        // Dos productos congelados por aire
        fechaEnvasado.set(2003,2,3);fechaCaducidad.set(2033,2,3);
        listaProductos.add(new ProductoCongeladoAire("03",fechaEnvasado,fechaCaducidad,"España",-3.50,8,2,3,87));
        fechaEnvasado.set(2004,2,3);fechaCaducidad.set(2034,2,3);
        listaProductos.add(new ProductoCongeladoAire("03",fechaEnvasado,fechaCaducidad,"Cuba",-6.50,10,3,4,83));

        //Dos productos congelados por agua
        fechaEnvasado.set(2004,3,4);fechaCaducidad.set(2044,3,4);
        listaProductos.add(new ProductoCongeladoAgua("04",fechaEnvasado,fechaCaducidad,"Francia",-9,16));
        fechaEnvasado.set(2005,3,4);fechaCaducidad.set(2045,3,4);
        listaProductos.add(new ProductoCongeladoAgua("04",fechaEnvasado,fechaCaducidad,"Venezuela",-11,20));
       
        // Un producto congelados por nitrógeno
        fechaEnvasado.set(2005,4,5);fechaCaducidad.set(2055,4,5);
        listaProductos.add(new ProductoCongeladoNitrogeno("05",fechaEnvasado,fechaCaducidad,"España",-18.50,
                "Congelado pero que mu frío",4));

        System.out.println("Lista de Productos\n");
        Iterator<Producto> otroProducto=listaProductos.iterator();
        while(otroProducto.hasNext()){
            otroProducto.next().mostrarProducto();
        }
        System.out.println("Fin lista");
    }
}

Un saludo

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Ahora sí que has dejado el ejercicio completo y poco que comentar. Un truco que se suele usar por si quieres tenerlo en cuenta es escribir List<Producto> listaProductos= new ArrayList<Producto>();

De esta forma hacemos uso del polimorfismo de Java. listaProductos quedaría declarado como un List (interface que actúa a modo de superclase) e implementado como un ArrayList.

Saludos!
Responsable de departamento de producción aprenderaprogramar.com

 

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