Autor Tema: Herencia en Java y uso de listas definir superclase y subclases Ejercicio00687B  (Leído 4650 veces)

Ryche

  • Sin experiencia
  • *
  • Mensajes: 11
    • Ver Perfil
Hola!

Aqui dejo mi respuesta al ejercicio 00687B. Me he liado un poco, porque he querido ir almacenando los productos que se iban creando en listas, pero creo que funciona.
Al final, 7 clases de productos y 5 listas:

Clase TestHerencia:
Código: [Seleccionar]
import java.util.ArrayList;
/**
 * Esta clase crea una serie de productos, los va almacenando en listas y luego muestra su contenido
 * @author Ryche
 * @version 06/04/2016/v1
 */
public class TestHerencia4{
    public static void main(String[]args){
        String continuar="S";
        System.out.println("PROGRAMA DE CREACION DE PRODUCTOS");
        ListaFrescos listafrescos=new ListaFrescos();
        ListaRefrigerados listarefrigerados=new ListaRefrigerados();
        ListaCongeladosPorNitrogeno listapornitrogeno=new ListaCongeladosPorNitrogeno();
        ListaCongeladosPorAgua listaporagua=new ListaCongeladosPorAgua();
        ListaCongeladosPorAire listaporaire=new ListaCongeladosPorAire();
        while (continuar.equalsIgnoreCase("s")){
            System.out.println("   1.Producto Fresco");
            System.out.println("   2.Producto Refrigerado");
            System.out.println("   3.Producto Congelado Por Nitrogeno");
            System.out.println("   4.Producto Congelado Por Agua");
            System.out.println("   5.Producto Congelado Por Aire");
            EntradaDeTeclado entrada=new EntradaDeTeclado();
            System.out.print("Introduce el tipo de producto(1,2,3,4,5):");
            entrada.pedirEntrada();
            String tipo=entrada.getEntrada();
            switch(tipo){
                case "1":Fresco productoFresco=new Fresco();
                        productoFresco.creacionProductoFresco();
                        listafrescos.addFresco(productoFresco);
                        break;       
                case "2":Refrigerado productoRefrigerado=new Refrigerado();
                         productoRefrigerado.creacionProductoRefrigerado();
                         listarefrigerados.addRefrigerado(productoRefrigerado);
                         break;
                case "3":PorNitrogeno productoPorNitrogeno=new PorNitrogeno();
                         productoPorNitrogeno.creacionCongeladoPorNitrogeno();
                         listapornitrogeno.addPorNitrogeno(productoPorNitrogeno);
                         break;
                case "4":PorAgua productoPorAgua=new PorAgua();
                         productoPorAgua.creacionCongeladoPorAgua();
                         listaporagua.addPorAgua(productoPorAgua);
                         break;
                case "5":PorAire productoPorAire=new PorAire();
                         productoPorAire.creacionCongeladoPorAire();
                         listaporaire.addPorAire(productoPorAire);
                         break;
                default:System.out.println("Opcion incorrecta");break;}
                System.out.print("¿Desea introducir otro producto (S/N)?");
                entrada.pedirEntrada();
                continuar=entrada.getEntrada();}
        System.out.println("");
        System.out.println("LISTADO DE LOS PRODUCTOS CREADOS");
        listafrescos.MostrarListaFrescos();
        listarefrigerados.MostrarListaRefrigerados();
        listapornitrogeno.MostrarListaCongeladosPorNitrogeno();
        listaporagua.MostrarListaCongeladosPorAgua();
        listaporaire.MostrarListaCongeladosPorAire();
        System.out.println("");
        System.out.println("¡Gracias por usar el programa!");
            }
}

Clase Producto:
Código: [Seleccionar]
public class Producto{
    private String nombre,caducidad,envasado,paisOrigen;
    private int numeroLote;
   
    public Producto(){
       nombre="Desconocido";
       numeroLote=0;
       caducidad="";
       envasado="";
       paisOrigen="Desconocido";}
       
    public Producto(String nombre,int numeroLote,String caducidad,String envasado,String paisOrigen){
       this.nombre=nombre;
       this.numeroLote=numeroLote;
       this.caducidad=caducidad;
       this.envasado=envasado;
       this.paisOrigen=paisOrigen;}
       
    public String getNombre(){return nombre;} 
     
    public int getNumeroLote(){return numeroLote;}
     
   public String getCaducidad(){return caducidad;}
   
   public String getEnvasado(){return envasado;}
   
   public String getPaisOrigen(){return paisOrigen;}
   
   public void setNombre(String nombre){this.nombre=nombre;}
   
   public void setNumeroLote(int numeroLote){this.numeroLote=numeroLote;}
   
   public void setCaducidad(String caducidad){this.caducidad=caducidad;}
   
   public void setEnvasado(String envasado){this.envasado=envasado;}
   
   public void setPaisOrigen(String paisOrigen){this.paisOrigen=paisOrigen;}
   
   public void creacionComunProducto(){
       Producto producto=new Producto();
       EntradaDeTeclado entrada=new EntradaDeTeclado();
       System.out.print("Introduce el nombre del producto: ");
       entrada.pedirEntrada();
       setNombre(entrada.getEntrada());
       System.out.print("Introduce el numero de lote: ");
       entrada.pedirEntrada();
       Integer lote=Integer.valueOf(entrada.getEntrada());
       setNumeroLote(lote);
       System.out.print("Introduce la fecha de caducidad (DD/MM/AAAA): ");
       entrada.pedirEntrada();
       setCaducidad(entrada.getEntrada());
       System.out.print("Introduce la fecha de envasado (DD/MM/AAAA): ");
       entrada.pedirEntrada();
       setEnvasado(entrada.getEntrada());
       System.out.print("Introduce el pais de origen: ");
       entrada.pedirEntrada();
       setPaisOrigen(entrada.getEntrada());}
       
   public void mostrarComunProducto(){
      System.out.println("Nombre: "+getNombre());
      System.out.println("Numero de lote: "+getNumeroLote());
      System.out.println("Fecha de caducidad: "+getCaducidad());
      System.out.println("Fecha de envasado: "+getEnvasado());
      System.out.println("Pais de origen: "+getPaisOrigen());}
}

Clase Fresco:
Código: [Seleccionar]
public class Fresco extends Producto{
   public Fresco(){
       super();}
   
   public Fresco(String nombre,int numeroLote,String caducidad,String envasado,String paisOrigen){
       super(nombre,numeroLote,caducidad,envasado,paisOrigen);}
       
   public void creacionProductoFresco(){
       EntradaDeTeclado entrada=new EntradaDeTeclado();
       System.out.println("CREACION DE PRODUCTO FRESCO");
       creacionComunProducto();}
   
   public void mostrarProductoFresco(){
       System.out.println("");
       System.out.println("PRODUCTO FRESCO");
       mostrarComunProducto();}
              }

Clase Refrigerado:
Código: [Seleccionar]
public class Refrigerado extends Producto{
    private String codigoSupervision;
        public Refrigerado(){
        super();
        codigoSupervision="Desconocido";}
   
    public Refrigerado(String nombre,int numeroLote,String caducidad,String envasado,
           String paisOrigen,String codigoSupervision){
         super(nombre,numeroLote,caducidad,envasado,paisOrigen);
         this.codigoSupervision=codigoSupervision;}
   
    public String getCodigoSupervision(){return codigoSupervision;}
   
    public void setCodigoSupervision(String codigoSupervision){
        this.codigoSupervision=codigoSupervision;}
   
    public void creacionProductoRefrigerado(){
        EntradaDeTeclado entrada=new EntradaDeTeclado();
        System.out.println("CREACION DE PRODUCTO REFRIGERADO");
        creacionComunProducto();
        System.out.print("Introduce el codigo se supervisión: ");
        entrada.pedirEntrada();
        setCodigoSupervision(entrada.getEntrada());}
   
    public void mostrarProductoRefrigerado(){
        System.out.println("");
        System.out.println("PRODUCTO REFRIGERADO");
        mostrarComunProducto();
        System.out.println("Código de supervisión alimentaria: "+getCodigoSupervision());}
    }

Clase Congelado:
Código: [Seleccionar]
public class Congelado extends Producto{
    private double temperaturaMantenimiento;
    public Congelado(){
        super();
        temperaturaMantenimiento=0;}
   
    public Congelado(String nombre,int numeroLote,String caducidad,String envasado,
            String paisOrigen,double temperaturaMantenimiento){
       super(nombre,numeroLote,caducidad,envasado,paisOrigen);
       this.temperaturaMantenimiento=temperaturaMantenimiento;}
   
    public double getTemperaturaMantenimiento(){return temperaturaMantenimiento;}
   
    public void setTemperaturaMantenimiento(double temperaturaMantenimiento){
        this.temperaturaMantenimiento=temperaturaMantenimiento;}
   
    public void creacionProductoCongelado(){
        EntradaDeTeclado entrada=new EntradaDeTeclado();
        creacionComunProducto();
        System.out.print("Introduce la temperatura de mantenimiento: ");
        entrada.pedirEntrada();
        Double temperatura=Double.valueOf(entrada.getEntrada());
        setTemperaturaMantenimiento(temperatura);}
   
    public void mostrarProductoCongelado(){
        mostrarComunProducto();
        System.out.println("Temperatura de mantenimiento: "+getTemperaturaMantenimiento());}
}

Clase PorAire:
Código: [Seleccionar]
public class PorAire extends Congelado{
    private int nitrogeno,oxigeno,dioxidoCarbono,vaporAgua;
   
    public PorAire(){super();}
   
    public PorAire(String nombre,int numeroLote,String caducidad,String envasado,
            String paisOrigen,int temperaturaMantenimiento,int nitrogeno,int oxigeno,
            int dioxidoCarbono,int vaporAgua){
        super(nombre,numeroLote,caducidad,envasado,paisOrigen,temperaturaMantenimiento);
        this.nitrogeno=nitrogeno;
        this.oxigeno=oxigeno;
        this.dioxidoCarbono=dioxidoCarbono;
        this.vaporAgua=vaporAgua;}
   
    public int getNitrogeno(){return nitrogeno;}
   
    public int getOxigeno(){return oxigeno;}
   
    public int getDioxidoCarbono(){return dioxidoCarbono;}
   
    public int getVaporAgua(){return vaporAgua;}
   
    public void setNitrogeno(int nitrogeno){this.nitrogeno=nitrogeno;}
   
    public void setOxigeno(int oxigeno){this.oxigeno=oxigeno;}
   
    public void setDioxidoCarbono(int dioxidoCarbono){this.dioxidoCarbono=dioxidoCarbono;}
   
    public void setVaporAgua(int vaporAgua){this.vaporAgua=vaporAgua;}
   
    public void creacionCongeladoPorAire(){
        EntradaDeTeclado entrada=new EntradaDeTeclado();
        System.out.println("CREACION DE PRODUCTO CONGELADO POR AIRE");
        creacionProductoCongelado();
        System.out.println("Introduce la composicion del aire");
        System.out.print("    Nitrogeno: ");
        entrada.pedirEntrada();
        Integer nitro=Integer.valueOf(entrada.getEntrada());
        setNitrogeno(nitro);
        System.out.print("    Oxigeno: ");
        entrada.pedirEntrada();
        Integer ox=Integer.valueOf(entrada.getEntrada());
        setOxigeno(ox);
        System.out.print("    Dioxido de Carbono:");
        entrada.pedirEntrada();
        Integer dioxido=Integer.valueOf(entrada.getEntrada());
        setDioxidoCarbono(dioxido);
        System.out.print("    Vapor de agua:");
        entrada.pedirEntrada();
        Integer vapor=Integer.valueOf(entrada.getEntrada());
        setVaporAgua(vapor);}
    public void mostrarProductoCongeladoAire(){
        System.out.println("");
        System.out.println("PRODUCTO CONGELADO POR AIRE");
        mostrarProductoCongelado();
        System.out.println("     Composicion del aire:");
        System.out.println("        * Nitrogeno: "+getNitrogeno()+"%");
        System.out.println("        * Oxigeno: "+getOxigeno()+"%");
        System.out.println("        * Dioxido de carbono: "+getDioxidoCarbono()+"%");
        System.out.println("        * Vapor de agua: "+getVaporAgua()+"%");}
        }   
Clase PorAgua:
Código: [Seleccionar]
public class PorAgua extends Congelado{
    private double salinidad;
   
    public PorAgua(){
        super();
        salinidad=0;}
       
    public PorAgua(String nombre,int numeroLote,String caducidad,String envasado,
        String paisOrigen,int temperaturaMantenimiento,double salinidad){
         super(nombre,numeroLote,caducidad,envasado,paisOrigen,temperaturaMantenimiento);
         this.salinidad=salinidad;}
   
    public double getSalinidad(){return salinidad;}
   
    public void setSalinidad(double salinidad){this.salinidad=salinidad;}
   
    public void creacionCongeladoPorAgua(){
        EntradaDeTeclado entrada=new EntradaDeTeclado();
        System.out.println("CREACION PRODUCTO CONGELADO POR AGUA");
        creacionProductoCongelado();
        System.out.println("Introduce la salinidad:");
        entrada.pedirEntrada();
        Double sal=Double.valueOf(entrada.getEntrada());
        setSalinidad(sal);}
   
    public void mostrarProductoCongeladoAgua(){
        System.out.println("");
        System.out.println("PRODUCTO CONGELADO POR AGUA");
        mostrarProductoCongelado();
        System.out.println("Salinidad: "+getSalinidad()+" sal/litro");}
}

Clase PorNitrogeno:
Código: [Seleccionar]
public class PorNitrogeno extends Congelado{
    private String metodo;
    private int exposicion;
   
    public PorNitrogeno(){
        super();
        metodo="Desconocido";
        exposicion=0;}
   
    public PorNitrogeno(String nombre,int numeroLote,String caducidad,String envasado,
            String paisOrigen,int temperaturaMantenimiento,String metodo,int exposicion){
        super(nombre,numeroLote,caducidad,envasado,paisOrigen,temperaturaMantenimiento);
        this.metodo=metodo;
        this.exposicion=exposicion;}
   
    public String getMetodo(){return metodo;}
   
    public int getExposicion(){return exposicion;}
   
    public void setMetodo(String metodo){this.metodo=metodo;}
   
    public void setExposicion(int exposicion){this.exposicion=exposicion;}
   
    public void creacionCongeladoPorNitrogeno(){
        EntradaDeTeclado entrada=new EntradaDeTeclado();
        System.out.println("CREACION PRODUCTO CONGELADO POR NITROGENO");
        creacionProductoCongelado();
        System.out.print("Introduce el método de congelacion:");
        entrada.pedirEntrada();
        setMetodo(entrada.getEntrada());
        System.out.print("Introduce el tiempo de exposicion:");
        entrada.pedirEntrada();
        Integer tiempo=Integer.valueOf(entrada.getEntrada());
        setExposicion(tiempo);}
   
    public void mostrarProductoCongeladoNitrogeno(){
        System.out.println("");
        System.out.println("PRODUCTO CONGELADO POR NITROGENO");
        mostrarProductoCongelado();
        System.out.print("Método de congelacion: "+getMetodo());
        System.out.print("Tiempo de exposicion: "+getExposicion()+" segundos");}
    }

Como las clases Lista son similarmente iguales pongo solo una:
Clase ListaFrescos:
Código: [Seleccionar]
import java.util.ArrayList;
public class ListaFrescos{
    private ArrayList<Fresco>productosFrescos;
   
    public ListaFrescos(){productosFrescos=new ArrayList<Fresco>();}
   
    public void addFresco(Fresco producto){productosFrescos.add(producto);}
   
    public void MostrarListaFrescos(){
        for (Fresco producto:productosFrescos){
            producto.mostrarProductoFresco();}
        }

Un saludo

« Última modificación: 12 de Abril 2016, 20:36 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola Ryche, para poder revisar el ejercicio hace falta todo el código, de todas las clases que hayas utilizado.

En este ejercicio  no era necesario crear clases Lista aunque también se puede hacer usando estas clases si lo deseas

Saludos

Ryche

  • Sin experiencia
  • *
  • Mensajes: 11
    • Ver Perfil
Si, ya he visto que en el siguiente ejercicio si hay que usar listas. Añado las clases que me faltaban.

Clase lista refrigerados:
Código: [Seleccionar]
import java.util.ArrayList;
/**
 * Esta clase crea una lista en la que se van añadiendo los productos refrigerados creados
 * @authorRyche
 * @version 09/04/2016/v1
 */
public class ListaRefrigerados{
    private ArrayList<Refrigerado>productosRefrigerados;
    /**
     * Constructor que inicializa la lista de productos
     */
    public ListaRefrigerados(){productosRefrigerados=new ArrayList<Refrigerado>();}
    /**
     * Metodo que añade un producto a la lista
     * @param producto Refrigerado
     */
    public void addRefrigerado(Refrigerado producto){productosRefrigerados.add(producto);}
    /**
     * Metodo que muestra el contenido de la lista
     */
    public void MostrarListaRefrigerados(){
        for (Refrigerado producto:productosRefrigerados){
            producto.mostrarProductoRefrigerado();}
        }
    }

clase lista congelados por nitrogeno:
Código: [Seleccionar]
import java.util.ArrayList;
/**
 * Esta clase crea una lista en la que se van añadiendo los productos congelados por nitrogeno
 * @author Ryche
 * @version 09/04/2016/v1
 */
public class ListaCongeladosPorNitrogeno{
    private ArrayList<PorNitrogeno>productosPorNitrogeno;
    /**
     * Constructor que inicaliza la lista de productos
     */
    public ListaCongeladosPorNitrogeno(){productosPorNitrogeno=new ArrayList<PorNitrogeno>();}
    /**
     * Metodo que añade un producto a la lista
     * @param producto PorNitrogeno
     */
    public void addPorNitrogeno(PorNitrogeno producto){productosPorNitrogeno.add(producto);}
    /**
     * Metodo que muestra el contenido de la lista
     */
    public void MostrarListaCongeladosPorNitrogeno(){
        for (PorNitrogeno producto:productosPorNitrogeno){
            producto.mostrarProductoCongeladoNitrogeno();}
        }
}

clase lista congelados por agua:
Código: [Seleccionar]
import java.util.ArrayList;
/**
 * Esta clase crea una lista en la que se van añadiendo los productos congelados por agua
 * @author Ryche
 * @version 09/04/2016/v1
 */
public class ListaCongeladosPorAgua{
    private ArrayList<PorAgua>productosPorAgua;
    /**
     * Constructor que inicializa la lista de productos
     */
    public ListaCongeladosPorAgua(){productosPorAgua=new ArrayList<PorAgua>();}
    /**
     * Metodo que añade un producto a la lista
     * @param producto PorAgua
     */
    public void addPorAgua(PorAgua producto){productosPorAgua.add(producto);}
    /**
     * Metodo que muestra el contenido de la lista
     */
    public void MostrarListaCongeladosPorAgua(){
        for (PorAgua producto:productosPorAgua){
            producto.mostrarProductoCongeladoAgua();}
        }
}

Clase lista congelados por aire:
Código: [Seleccionar]
import java.util.ArrayList;
/**
 * Esta clase crea una lista en la que se van añadiendo los productos congelados por aire
 * @author Ryche
 * @version 09/04/2016/v1
 */
public class ListaCongeladosPorAire{
    private ArrayList<PorAire>productosPorAire;
    /**
     * Constructor que inicializa la lista de productos
     */
    public ListaCongeladosPorAire(){productosPorAire=new ArrayList<PorAire>();}
    /**
     * Metodo que añade un producto a la lista
     * @param producto PorAire
     */
    public void addPorAire(PorAire producto){productosPorAire.add(producto);}
    /**
     * Metodo que muestra el contenido de la lista
     */
    public void MostrarListaCongeladosPorAire(){
        for (PorAire producto:productosPorAire){
            producto.mostrarProductoCongeladoAire();}
        }
}

Eso es todo. Gracias

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola

Hay algunos detalles que te recomendaría mejorar. Por ejemplo usar nombres para clases como PorAire, PorAgua, etc.

PorAire no es un nombre adecuado para una clase. Lee una explicación sobre cómo nombrar clases en https://www.aprenderaprogramar.com/foros/index.php?topic=3035.0

En el código se ven buenos detalles (como reutilización de código utilizando métodos comunes como mostrarComunProducto() etc.). Creo que te has extendido un poco más de lo que requería el ejercicio. Te recomiendo que compares tu solución con la planteada en https://www.aprenderaprogramar.com/foros/index.php?topic=2342.0 y veas las diferencias.

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