Autor Tema: Java ejercicio resuelto herencia extends super diseño de clases CU00687B  (Leído 2951 veces)

el_calderas

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 43
    • Ver Perfil
Hola, aquí está mi propuesta para este ejercicio.

He creado siete clases mas la clase del test. En el main se crea un ArrayList donde voy añadiendo los productos que doy de alta, para luego imprimir su información ayudandome de un for.

clase Producto:
Código: [Seleccionar]
public class Producto
{
    private String fechaCaducidad;
    private int numeroLote;
    private String paisOrigen;
    private String fechaEnvasado;
   
    public Producto(String fechaCaducidad, int numeroLote, String paisOrigen, String fechaEnvasado){
        this.fechaCaducidad=fechaCaducidad;
        this.numeroLote=numeroLote;
        this.paisOrigen=paisOrigen;
        this.fechaEnvasado=fechaEnvasado;
    }
   
    public String getFechaCaducidad(){
        return fechaCaducidad;
    }
   
    public int getNumeroLote(){
        return numeroLote;
    }
   
    public void setFechaCducidad(String fecha){
        fechaCaducidad=fecha;
    }
   
    public void setNumeroLote(int numero){
        numeroLote=numero;
    }
   
    public String getPaisOrigen(){
        return paisOrigen;
    }
   
    public String getFechaEnvasado(){
        return fechaEnvasado;
    }
   
    public void setPaisOrigen(String paisOrigen){
        this.paisOrigen=paisOrigen;
    }
   
    public void setFechaEnvasado(String fechaEnvasado){
        this.fechaEnvasado=fechaEnvasado;
    }
   
    @Override
    public String toString(){
        return String.format("Fecha de Caducidad: " + fechaCaducidad + "\n" +
        "Número de lote: " + numeroLote + "\n" +
        "Pais de origen: " + this.paisOrigen +"\n" +
        "Fecha de envasado: " + this.fechaEnvasado +"\n");
    }
}

Clase Fresco
Código: [Seleccionar]
public class Fresco extends Producto
{
    //esta clase no tiene atributos propios, los tiene la superclase
   
   
    public Fresco(String fechaCaducidad, int numeroLote,String paisOrigen, String fechaEnvasado){
        super(fechaCaducidad,numeroLote,paisOrigen,fechaEnvasado);
       
    }
   
   
   
    @Override
    public String toString(){
        return String.format("Información del producto fresco: \n" + super. toString());
    }
}

Clase congelado:
Código: [Seleccionar]
public class Congelado extends Producto
{
    //información generica
    private double temperaturaMantenimiento;
   
    public Congelado(String fechaCaducidad, int numeroLote, String paisOrigen, String fechaEnvasado, double temperaturaMantenimiento){
        super(fechaCaducidad,numeroLote,paisOrigen,fechaEnvasado);
        this.temperaturaMantenimiento=temperaturaMantenimiento;
    }
   
    public double getTemperaturaMantenimiento(){
        return temperaturaMantenimiento;
    }
   
    public void setTemperaturaMantenimiento(double temperaturaMantenimiento){
        this.temperaturaMantenimiento=temperaturaMantenimiento;
    }
   
    @Override
    public String toString(){
        return String.format(super. toString() +
        "Temperatura de mantenimiento: " + this.temperaturaMantenimiento + "ºC" + "\n");
    }
}

clase refrigerado:
Código: [Seleccionar]
public class Refrigerado extends Congelado
{
   //información especifica
   private String codigo;
   
   public Refrigerado(String fechaCaducidad, int numeroLote,String paisOrigen, String fechaEnvasado, double temperaturaMantenimiento, String codigo){
       super(fechaCaducidad,numeroLote,paisOrigen,fechaEnvasado,temperaturaMantenimiento);
       this.codigo=codigo;
    }
   
    public String getCodigo(){
        return codigo;
    }
   
    public void setCodigo(String codigo){
        this.codigo=codigo;
    }
   
    @Override
    public String toString(){
        return String.format("Información del producto refrigerado: \n" +
        super. toString() +
        "Codigo OSA: " + this.codigo +"\n" );
    }
}

Clase congelado por aire
Código: [Seleccionar]
public class CongeladoAire extends Congelado
{
    private String composiciónAire;
   
    public CongeladoAire(String fechaCaducidad, int numeroLote, String paisOrigen, String fechaEnvasado, double temperaturaMantenimiento, String composiciónAire){
        super(fechaCaducidad, numeroLote, paisOrigen, fechaEnvasado,temperaturaMantenimiento);
        this.composiciónAire=composiciónAire;
    }
   
    public void setComposiciónAire(String composiciónAire){
        this.composiciónAire=composiciónAire;
    }
   
    public String getComposiciónAire(){
        return this.composiciónAire;
    }
       
   
    @Override
    public String toString(){
        return String.format("Información del producto congelado por aire: \n"+
        super.toString() +
        "Composición de aire: " + this.composiciónAire + "\n");
    }
   
}

clase congelado por agua
Código: [Seleccionar]
public class CongeladoAgua extends Congelado
{
    private String salinidadAgua;
   
    public CongeladoAgua(String fechaCaducidad, int numeroLote, String paisOrigen, String fechaEnvasado, double temperaturaMantenimiento, String salinidadAgua){
        super(fechaCaducidad, numeroLote, paisOrigen, fechaEnvasado,temperaturaMantenimiento);
        this.salinidadAgua=salinidadAgua;
    }
   
    public void setSalinidadAgua(String salinidadAgua){
        this.salinidadAgua=salinidadAgua;
    }
   
    public String getSalinidadAgua(){
        return this.salinidadAgua;
    }
   
    @Override
    public String toString(){
        return String.format("Información del producto congelado por agua: \n"+
        super. toString() +
        "Salinidad del agua: " + this.salinidadAgua + "\n");
    }
       
}

clase congelado por nitrogeno
Código: [Seleccionar]
public class CongeladoNitrogeno extends Congelado
{
    private String metodoCongelacion;
    private int tiempoExposicion;
   
    public CongeladoNitrogeno(String fechaCaducidad, int numeroLote, String paisOrigen, String fechaEnvasado, double temperaturaMantenimiento, String metodoCongelacion,int tiempoExposicion){
        super(fechaCaducidad, numeroLote, paisOrigen, fechaEnvasado,temperaturaMantenimiento);
        this.metodoCongelacion=metodoCongelacion;
        this.tiempoExposicion=tiempoExposicion;
    }
   
    @Override
    public String toString(){
        return String.format("Información del producto congelado por nitrogeno: \n"+
        super. toString() +
        "Metodo de congelación: " + this.metodoCongelacion + "\n" +
        "Tiempo de exposición al nitrogeno: " + this.tiempoExposicion + " minutos");
    }
       
}

clase del main
Código: [Seleccionar]
import java.util.ArrayList;

public class TestHerencia3
{
    public static void main(String[] args){
        //se crea una lista para contener todos los productos
        ArrayList<Producto> listaProductos=new ArrayList<Producto>();
       
        //se crean los productos
       
        //parametros del fresco
        //String fechaCaducidad, int numeroLote,String paisOrigen, String fechaEnvasado
        //Crear 2
        Fresco productoFresco1 = new Fresco("12/2/16", 565, "España", "1/1/16");
        listaProductos.add(productoFresco1);
        Fresco productoFresco2 = new Fresco("12/5/18", 456, "España", "1/5/15");
        listaProductos.add(productoFresco2);
        //parametros del refrigerado:
        //String fechaCaducidad, int numeroLote,String paisOrigen, String fechaEnvasado, double temperaturaMantenimiento, String codigo
        //crear 3
        Refrigerado productoRefrigerado1 = new Refrigerado("12/8/18", 2300,"España", "13/5/14", 4, "B35-267");
        listaProductos.add(productoRefrigerado1);
        Refrigerado productoRefrigerado2 = new Refrigerado("12/8/17", 2385,"España", "7/3/15", 5, "Z85-29");
        listaProductos.add(productoRefrigerado2);
        Refrigerado productoRefrigerado3 = new Refrigerado("1/3/16", 123,"España", "4/1/15", -1, "T3-45");
        listaProductos.add(productoRefrigerado3);
        //parametros del congelado por aire
        //String fechaCaducidad, int numeroLote, String paisOrigen, String fechaEnvasado, double temperaturaMantenimiento, String composiciónAire
        //composición del aire: %nitrogeno,%oxigeno,%dioxido de carbono,%vapor de agua
        //crear 2
        Congelado congeladoAire1 = new CongeladoAire("12/8/18", 2300,"España", "13/5/14", -25.0,"Nitrogeno:78%%,Oxigeno:21%%,Dioxido de carbono:0,03%%,Vapor de agua:variable");
        listaProductos.add(congeladoAire1);
        Congelado congeladoAire2 = new CongeladoAire("12/8/16", 4524,"España", "10/11/14", -25.0,"Nitrogeno:78%%,Oxigeno:21%%,Dioxido de carbono:0,03%%,Vapor de agua:variable");
        listaProductos.add(congeladoAire2);
        //parametros congelado por agua
        //String fechaCaducidad, int numeroLote, String paisOrigen, String fechaEnvasado, double temperaturaMantenimiento, String salinidadAgua
        //salinidad del agua: gr/litro
        //crear 2
        Congelado congeladoAgua1 = new CongeladoAgua("1/3/15", 56,"España", "1/3/16", -20.0,"<0,5g/l");
        listaProductos.add(congeladoAgua1);
        Congelado congeladoAgua2 = new CongeladoAgua("12/2/15", 89,"España", "12/2/16", -20.0,"<0,5g/l");
        listaProductos.add(congeladoAgua2);
        //parametros congelado por nitrogeno
        //String fechaCaducidad, int numeroLote, String paisOrigen, String fechaEnvasado, double temperaturaMantenimiento, String metodoCongelacion,int tiempoExposicion
        //crear 1
        Congelado congeladoNitrogeno = new CongeladoNitrogeno("1/3/15", 32,"España", "1/3/16", -30.0,"Tunel de refrigeración",5);
        listaProductos.add(congeladoNitrogeno);
       
        // se llama a los metodos correspondientes para obtener la información de cada producto
        // prueba para imprimir información de cada producto
        /**
        System.out.println("Información del producto fresco \n" + productoFresco1.toString());
        System.out.println("Información del producto refrigerado \n" + productoRefrigerado1.toString());
        System.out.println("Información del producto congelado por aire \n" + congeladoAire1.toString());
        System.out.println("Información del producto congelado por agua \n" + congeladoAgua1.toString());
        System.out.println("Información del producto congelado por nitrogeno \n" + congeladoNitrogeno.toString());
        */
       
       //Se imprime la información de todos los productos creados
        for(Producto p : listaProductos){
            System.out.println(p);
        }
    }
}

Un saludo y gracias por la ayuda.
« Última modificación: 04 de Junio 2015, 23:34 por Alex Rodríguez »

Lorenzo31

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 381
    • Ver Perfil
Re:Ejercicio CU00687B ejercicio resuelto herencia extends super
« Respuesta #1 en: 03 de Junio 2015, 11:35 »
Ok lo veo bien, el uso del polimorfismo al sobreescribir el toString(), hace que automaticamente se busque el toString() del valor dinamico (Refrigerado, Congelado...) en lugar de Producto que es la que tu has declarado de forma estatica, esto es algo muy bueno para el uso :)

El for each del final bien, decir aunque seguro lo sabes, que imprimiendo "p" el objeto Producto, creo si no me corrigen, al estar el toString () imprime la información, sino te daría una direccion de almacenamiento de memoria del objeto.

Pero seguro ya lo sabias, es para quien lo mire. Buen trabajo.

 

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