Autor Tema: Ejercicio CU00688B concepto polimorfismo java variables jerarquia tipos ejemplos  (Leído 4449 veces)

Enzo

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 82
    • Ver Perfil
Buenos Días,

Antes de dejar el ejercicio tengo una duda que os puede parecer una tontería pero no se como solucionarla:

A ver si se explicarla: ¿Existe alguna forma de saber si hay alguna clase (o método) en el API de Java que haga lo que nosotros queremos conseguir, pero, que no sea mirando clase por clase?

Y ahora el ejercicio:
Como las clases de todos los tipos de producto son las mismas del ejercicio del Tema "CU00687B ejercicio resuelto herencia extends super java tutorial programador" no las vuelvo a poner para ahorrar espacio.

A continuación las dos clases nuevas de este Tema:

Clase EnvioDeProductos:
Código: [Seleccionar]
import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;

/**
 * EJERCICIO DEL USO DE HERECIAS Y POLIMORFISMO.<br>
 * Esta Clase define una Subclase que "bebe" de la Superclase Producto_CU00687B para crear una Lista de Envio de Productos.<br>
 * Clase 9 del Ejercicio del Tema "CU00688B concepto polimorfismo java variables jerarquia tipos ejemplos".
 * @author Lorenzo Fernández Asensio
 * @version 20151125.01
 */
public class EnvioDeProductos_CU00688B {

    // Inicialización de la Colección
    private List <Producto_CU00687B> listadoEnvio;

    /**
     * Constructor de la Colección Lista de Envio.
     * @param listadoEnvio El parámetro listadoEnvio define la colección de la Lista de Envio de Productos
     */
    public EnvioDeProductos_CU00688B() {       
        // Creación de la Colección
        listadoEnvio = new ArrayList <Producto_CU00687B> ();
    } // Cierre del Constructor

    /**
     * Método para añadir un objeto a la Colección
     * @param productoNuevo El parámetro productoNuevo define el Producto que se añade a la Colección
     */
    public void incluirProductoALista (Producto_CU00687B productoNuevo) {
        listadoEnvio.add (productoNuevo);
    } //Cierre del método para añadir un objeto a la Colección
   
    /**
     * Método para para obtener el Número de Productos en la Lista de Envio
     * @return El Número de Productos en la Lista de Envio
     */
    public int getNumPtosEnLista(){ return listadoEnvio.size(); }

    /**
     * Método para mostrar por pantalla la Información usando Iterator
     */
    public void mostrarListaEnvioPtos() {
        Iterator <Producto_CU00687B> it = listadoEnvio.iterator();
        while(it.hasNext()){
            it.next().mostrarInfoProducto();
            System.out.println("");
        }

    } // Cierre de la clase

} // Cierre de la Clase

Clase Test Herencia4:
Código: [Seleccionar]
/**
 * EJERCICIO DEL USO DE HERECIAS Y POLIMORFISMO.<br>
 * Esta Clase define una clase test para probar Herencias y Polimorfismos.<br>
 * Se crean y se muestra la información de varios Productos
 * Clase 10 del Ejercicio del Tema "CU00688B concepto polimorfismo java variables jerarquia tipos ejemplos".
 * @author Lorenzo Fernández Asensio
 * @version 20151126.01
 */
public class TestHerencia4_CU00688B {
   
    public static void main (String [ ] Args) {
       
        // CREACIÓN DE LOS OBJETOS ASIGNADO LOS ATRIBUTOS DE LA SUPERCLASE Producto_CU00688B + LOS SUYOS PROPIOS (Si los tienen)
        // Creación de 2 objetos de productos Frescos
        Producto_CU00687B productoFresco1 = new PtoFresco_CU00687B ("23-11-2015", "21-5-2020", 55, "España");
        Producto_CU00687B productoFresco2 = new PtoFresco_CU00687B ("8-4-2010", "8-4-2015", 31, "Malta");
        // Creación de 3 objetos de productos Refrigerados
        Producto_CU00687B productoRefrigerado1 = new PtoRefrigerado_CU00687B ("19-10-2014", "19-10-2025", 347, "EEUU", 10, "YK-358/91");
        Producto_CU00687B productoRefrigerado2 = new PtoRefrigerado_CU00687B ("15-7-1954", "19-10-1955", 2, "Japón", 12, "JP-003-75/4");
        Producto_CU00687B productoRefrigerado3 = new PtoRefrigerado_CU00687B ("1-1-2001", "11-11-2011", 11, "Argentina", 6, "AR-34/666");
        // Creación de 2 objetos de productos Congelados por Aire
        Producto_CU00687B productoCongelAire1 = new PtoCongelAire_CU00687B ("3-6-2007", "3-6-2017", 38, "Groenlandia", -15, 25, 10, 15, 50);
        Producto_CU00687B productoCongelAire2 = new PtoCongelAire_CU00687B ("7-1-1964", "7-1-2004", 1, "Suiza", -12, 13, 33, 24, 30);
        // Creación de 2 objetos de productos Congelados por Agua
        Producto_CU00687B productoCongelAgua1 = new PtoCongelAgua_CU00687B ("24-9-2003", "24-9-2023", 136, "Mexico", -10, 18);
        Producto_CU00687B productoCongelAgua2 = new PtoCongelAgua_CU00687B ("26-2-2010", "26-10-2035", 1047, "Alemania", -5, 26);
        // Creación de 2 objetos de productos Congelados por Nitrogeno
        Producto_CU00687B productoCongelNitro1 = new PtoCongelNitro_CU00687B ("24-12-2012", "24-12-2045", 666, "Italia", -10, "Inmersión", 150);
       
        // Inicialización y Creación de un Objeto de la clase Envio de Productos
        EnvioDeProductos_CU00688B productosEnviados = new EnvioDeProductos_CU00688B();
       
        // Inicialización y Creación de una lista con los objetos de los Productos creados
        Producto_CU00687B [] listaPtosEnviados = {productoFresco1, productoFresco2, productoRefrigerado1, productoRefrigerado2, productoRefrigerado3,
            productoCongelAire1, productoCongelAire2, productoCongelAgua1, productoCongelAgua2, productoCongelNitro1};
       
        // Se añaden los datos de los productos creados en la colección de Envio
        for(Producto_CU00687B tmp:listaPtosEnviados){
            productosEnviados.incluirProductoALista(tmp);
        }
       
        // Se limpia la pantalla de la Consola
        System.out.println("\f");
        // Se muestra en pantalla un mensaje de Comienzo
        System.out.println("\t\tLISTADO DE LOS PRODUCTOS PERAPARADOS PARA SU ENVIO");
        System.out.println("\t\t--------------------------------------------------");
        System.out.println("");
        // Se muestra en pantalla un mensaje con el número de Productos incluidos en la Colección
        System.out.println("Envio compuesto por " + productosEnviados.getNumPtosEnLista() + " Productos");
        System.out.println("");
        System.out.println("DETALLE DEL ENVIO:");
        // Se muestra en pantalla la información de los Productos
        productosEnviados.mostrarListaEnvioPtos();
               
    } // Cierre del Main
       
} //Cierre de la clase

Espero vuestros comentarios,

Un Saludo,

Alex Rodríguez

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

Citar
A ver si se explicarla: ¿Existe alguna forma de saber si hay alguna clase (o método) en el API de Java que haga lo que nosotros queremos conseguir, pero, que no sea mirando clase por clase?

Respuesta:

Puedes saberlo gracias a:

a) La experiencia que tengas acumulada como programador

b) Preguntándote ¿esta necesidad la habrán tenido otros muchos programadores? Si la respuesta es sí, es que posiblemente existe una clase en el api de java que lo resuelva.

c) Buscando en internet, libros, etc.

d) Consultando a otros programadores, en foros, etc.

Con lo anterior podrás saberlo con un 95% de fiabilidad. Siempre existirá una pequeña incertidumbre, es decir, no puedes saberlo con total certeza.

Para poder revisar el ejercicio pega todas las clases que se utilicen (si no lo haces así tendríamos que ir buscando clases entre los cientos de ejercicios que hay en los foros  :-[ que a veces tienen distintas versiones o correcciones nos complicaría bastante...)

Saludos

Enzo

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 82
    • Ver Perfil
Hola Alex,

Ok. Muchas Gracias.

Tienes toda la razón. Yo solo pensaba en el espacio que iba a ocupar sin darme cuenta de que así lo pongo mas difícil para la corrección. Perdona las molestias.

Aquí dejo la primera parte del resto de clases que no había puesto:

Clase Producto:
Código: [Seleccionar]
/**
 * EJERCICIO DEL USO DE HERECIAS Y POLIMORFISMO.<br>
 * Esta Clase define una Superclase de la que "beberan" otras clases.<br>
 * Clase 1 Reutilizada del Ejercicio del Tema "CU00687B ejercicio resuelto herencia extends super java tutorial programador".
 * @author Lorenzo Fernández Asensio
 * @version 20151123.01
 */
public class Producto_CU00687B {

    // Inicialización de Atributos
    private String fechaEnvasado,
                    fechaCaducidad,
                    paisOrigen;
    private int numLote;

    /**
     * Constructor 1 del Producto. Atribututos sin asignación de Valores
     * @param fechaEnvasado El parámetro fechaEnvasado define la Fecha de Envasado del Producto
     * @param fechaCaducidad El parámetro fechaCaducidad define la Fecha de Caducidad del Producto
     * @param numLote El parámetro numLote define el número del lote al que pertenece el Producto
     * @param paisOrigen El parámetro paisOrigen define el Pais de Origen del Producto
     */
    public Producto_CU00687B() {       
        fechaEnvasado = "";
        fechaCaducidad = "";
        numLote = 0;
        paisOrigen = "";
    } // Cierre del Constructor 1

    /**
     * Constructor 2 del Producto. Atribututos con asignación de Valores
     * @param fechaEnvasado El parámetro fechaEnvasado define la Fecha de Envasado del Producto
     * @param fechaCaducidad El parámetro fechaCaducidad define la Fecha de Caducidad del Producto
     * @param numLote El parámetro numLote define el número del lote al que pertenece el Producto
     * @param paisOrigen El parámetro paisOrigen define el Pais de Origen del Producto
     */
    public Producto_CU00687B(String fechaEnvasado, String fechaCaducidad, int numLote, String paisOrigen) {
        this.fechaEnvasado = fechaEnvasado;
        this.fechaCaducidad = fechaCaducidad;
        this.numLote = numLote;
        this.paisOrigen = paisOrigen;
    } // Cierre del Constructor 2

    /**
     * Método para establecer la Fecha de Envasado del Producto
     * @param valorFechaEnvasado El parámetro valorFechaEnvasado define el valor que contendrá la Fecha de Envasado
     */
    public void setFechaEnvasado(String valorFechaEnvasado) {
        fechaEnvasado = valorFechaEnvasado;
    } // Cierre del método para establecer la Fecha de Envasado
   
    /**
     * Método para establecer la Fecha de Caducidad del Producto
     * @param valorFechaCaducidad El parámetro valorFechaCaducidad define el valor que contendrá la Fecha de Caducidad
     */
    public void setFechaCaducidad(String valorFechaCaducidad) {
        fechaCaducidad = valorFechaCaducidad;
    } // Cierre del método para establecer la Fecha de Caducidad

    /**
     * Método para establecer el Número de Lote
     * @param valorNumLote El parámetro valorNumLote define el valor que contendrá el Número de Lote
     */
    public void setNumLote(int valorNumLote) {
        numLote = valorNumLote;
    } // Cierre del método para establecer la Fecha de Caducidad
   
    /**
     * Método para establecer el País de Origen del Producto
     * @param valorPaisOrigen El parámetro valorPaisOrigen define el valor que contendrá el País de Origen
     */
    public void setPaisOrigen(String valorPaisOrigen) {
        paisOrigen = valorPaisOrigen;
    } // Cierre del método para establecer el país de Origen
   
    /**
     * Método para para obtener la Fecha de Envasado del Producto
     * @return La Fecha de Envasado del Producto
     */
    public String getFechaEnvasado(){ return fechaEnvasado; }
   
    /**
     * Método para para obtener la Fecha de Caducidad del Producto
     * @return La Fecha de Caducidad del Producto
     */
    public String getFechaCaducidad(){ return fechaCaducidad; }

    /**
     * Método para para obtener el Número de Lote
     * @return El Número de Lote
     */
    public int getNumLote(){ return numLote; }
   
    /**
     * Método para para obtener el País de Origen del Producto
     * @return El País de Origen del Producto
     */
    public String getPaisOrigen(){ return paisOrigen; }
   
    /**
     * Método para mostrar por pantalla la Información
     */
    public void mostrarInfoProducto() {
        System.out.println ("Fecha de Envasado: " + getFechaEnvasado());
        System.out.println ("Fecha de Caducidad: " + getFechaCaducidad());
        System.out.println ("Nº de Lote: " + getNumLote());
        System.out.println ("País de Origen: " + getPaisOrigen());
    } // Cierre de la clase
   
} // Cierre de la Clase

Clase Producto Fresco:
Código: [Seleccionar]
/**
 * EJERCICIO DEL USO DE HERECIAS Y POLIMORFISMO.<br>
 * Esta Clase define una Subclase que "bebe" de la Superclase Producto_CU00687B.<br>
 * Clase 2 Reutilizada del Ejercicio del Tema "CU00687B ejercicio resuelto herencia extends super java tutorial programador".
 * @author Lorenzo Fernández Asensio
 * @version 20151123.01
 */
public class PtoFresco_CU00687B extends Producto_CU00687B {

    //No hay campos específicos de la subclase.

    /**
     * Constructor 1 del Producto. Atribututos sin asignación de Valores.<br>
     * No hay parametros especificos de esta Subclase.
     */
    public PtoFresco_CU00687B () {
        super(); // Parametros del constructor de la Superclase. Siempre se incluyen
        // No hay parametros especificos de la Subclase
    } // Cierre del constructor 1

    /**
     * Constructor 2 del Producto. Atribututos con asignación de Valores
     * No hay parametros especificos de esta Subclase.
     */
    public PtoFresco_CU00687B (String fechaEnvasado, String fechaCaducidad, int numLote, String paisOrigen) {       
        super(fechaEnvasado, fechaCaducidad, numLote, paisOrigen);// Parametros del constructor de la Superclase. Siempre se incluyen
        // No hay parametros especificos de la Subclase
    } // Cierre del constructor 2

    /**
     * Método para mostrar por pantalla la Información
     */
    public void mostrarInfoPtoFresco() {
        // Se muestran los datos de la Superclase haciendo un llamamiento a su método para mostrarlos
        mostrarInfoProducto();
    } // Cierre de la clase

} // Cierre de la clase

Clase Producto No Fresco:
Código: [Seleccionar]
/**
 * EJERCICIO DEL USO DE HERECIAS Y POLIMORFISMO.<br>
 * Esta Clase define una Subclase intermedia que "bebe" de la Superclase Producto_CU00687B.<br>
 * Pero a su vez, "beberan" de ella otras clases.<br>
 * Clase 3 Reutilizada del Ejercicio del Tema "CU00687B ejercicio resuelto herencia extends super java tutorial programador".
 * @author Lorenzo Fernández Asensio
 * @version 20151123.01
 */
public class PtoNoFresco_CU00687B extends Producto_CU00687B {

    //Campos específicos de la subclase.
    private int tempMantRecom;

    /**
     * Constructor 1 del Producto. Atribututos sin asignación de Valores
     * @param tempMantRecom El parámetro tempMantRecom define la Temperatura de Mantinimiento Recomendada del Producto
     */
    public PtoNoFresco_CU00687B () {
        super(); // Parametros del constructor de la Superclase. Siempre se incluyen
        // Parametros especificos de la Subclase
        tempMantRecom = 0;
    } // Cierre del constructor 1

    /**
     * Constructor 3 del Producto. Atribututos con asignación de Valores
     * @param tempMantRecom El parámetro tempMantRecom define la Temperatura de Mantinimiento Recomendada del Producto
     */
    public PtoNoFresco_CU00687B (String fechaEnvasado, String fechaCaducidad, int numLote, String paisOrigen, int tempMantRecom) {       
        super(fechaEnvasado, fechaCaducidad, numLote, paisOrigen);// Parametros del constructor de la Superclase. Siempre se incluyen
        // Parametros especificos de la Subclase
        this.tempMantRecom = tempMantRecom;
    } // Cierre del constructor 2

    // METODOS ESPECIFICOS DE LA SUBLASE
    /**
     * Método para establecer la Temperatura de Mantenimiento Recomendada
     * @param tempMantRecom El parámetro tempMantRecom define el valor que contendrá la Temperatura de Mantenimiento Recomendada
     */
    public void setTempMantRecom (int tempMantRecom) {
        this.tempMantRecom = tempMantRecom;
    } // Cierre del método para establecer el Pais de Origen
   
    /**
     * Método para para obtener la Temperatura de Mantenimiento Recomendada
     * @return La Temperatura de Mantenimiento Recomendada
     */
    public int getTempMantRecom() { return tempMantRecom;}
   
    /**
     * Método para mostrar por pantalla la Información
     */
    public void mostrarInfoPtoNoFresco() {
        // Se muestran los datos de la Superclase haciendo un llamamiento a su método para mostrarlos
        mostrarInfoProducto();
        // Se muestran los datos del atributo de la Subclase
        System.out.println ("Temperatura de Mantenimiento Recomendada: " + getTempMantRecom());
    } // Cierre de la clase

    } // Cierre de la clase

Clase Producto Refrigerado:
Código: [Seleccionar]
/**
 * EJERCICIO DEL USO DE HERECIAS Y POLIMORFISMO.<br>
 * Esta Clase define una Subclase que "bebe" de la Subclase intermedia PtoNoFresco_CU00687B.<br>
 * Clase 4 Reutilizada del Ejercicio del Tema "CU00687B ejercicio resuelto herencia extends super java tutorial programador".
 * @author Lorenzo Fernández Asensio
 * @version 20151123.01
 */
public class PtoRefrigerado_CU00687B extends PtoNoFresco_CU00687B {

    //Campos específicos de la subclase.
    private String codSupervAlimentaria;

    /**
     * Constructor 1 del Producto. Atribututos sin asignación de Valores
     * @param codSupervAlimentaria El parámetro codSupervAlimentaria define el Código del Organismo de Supervisión Alimentaria
     */
    public PtoRefrigerado_CU00687B () {
        super(); // Parametros del constructor de la Superclase. Siempre se incluyen
        codSupervAlimentaria = ""; // Parametro especifico de la Subclase
    } // Cierre del constructor 1

    /**
     * Constructor 2 del Producto. Atribututos con asignación de Valores
     * @param codSupervAlimentaria El parámetro codSupervAlimentaria define el Código del Organismo de Supervisión Alimentaria
     */
    public PtoRefrigerado_CU00687B (String fechaEnvasado, String fechaCaducidad, int numLote, String paisOrigen, int tempMantRecom, String codSupervAlimentaria) {       
        super(fechaEnvasado, fechaCaducidad, numLote, paisOrigen, tempMantRecom); // Parametros del constructor de la Superclase. Siempre se incluyen
        this.codSupervAlimentaria = codSupervAlimentaria; // Parametro especifico de la Subclase
    } // Cierre del constructor 2

    // METODOS ESPECIFICOS DE LA SUBLASE
    /**
     * Método para establecer el Código del Organismo de Supervisión Alimentaria
     * @param codSupervAlimentaria El parámetro codSupervAlimentaria define el valor del Organismo de Supervisión Alimentaria
     */
    public void setCodSupervAlimentaria (String codSupervAlimentaria) {
        this.codSupervAlimentaria = codSupervAlimentaria;
    } // Cierre del método para establecer la Fecha de Envasado

    /**
     * Método para para obtener el Código del Organismo de Supervisión Alimentaria
     * @return El Código del Organismo de Supervisión Alimentaria
     */
    public String getCodSupervAlimentaria() { return codSupervAlimentaria; }

    /**
     * Método para mostrar por pantalla la Información
     */
    public void mostrarInfoRefrigerado() {
        // Se muestran los datos de la Superclase haciendo un llamamiento a su método para mostrarlos
        mostrarInfoPtoNoFresco();
        // Se muestran los datos del atributo de la Subclase
        System.out.println ("Código del Organismo de Supervisión Alimentaria: " + getCodSupervAlimentaria());

    } // Cierre de la clase

} // Cierre de la clase

Clase Producto Congelado:
Código: [Seleccionar]
/**
 * EJERCICIO DEL USO DE HERECIAS Y POLIMORFISMO.<br>
 * Esta Clase define una Subclase intermedia que "bebe" de la Subclase intermedia PtoNoFresco_CU00687B.<br>
 * 2015-11-24: Actualmente no seria necesaria pero la dejo creada en previsión de que los Ptos. Congelados tengan atributos propios solo de esta clase.<br>
 *              Se usa el método para mostrar datos en pantalla.<br>
 * Clase 5 Reutilizada del Ejercicio del Tema "CU00687B ejercicio resuelto herencia extends super java tutorial programador".
 * @author Lorenzo Fernández Asensio
 * @version 20151123.01
 */
public class PtoCongelado_CU00687B extends PtoNoFresco_CU00687B {

    //No hay campos específicos de la subclase.

    /**
     * Constructor 1 del Producto. Atribututos sin asignación de Valores.<br>
     * No hay parametros especificos de esta Subclase.
     */
    public PtoCongelado_CU00687B () {
        super(); // Parametros del constructor de la Superclase. Siempre se incluyen
        // No hay parametros especificos de la Subclase
    } // Cierre del constructor 1

    /**
     * Constructor 2 del Producto. Atribututos con asignación de Valores
     * No hay parametros especificos de esta Subclase.
     */
    public PtoCongelado_CU00687B (String fechaEnvasado, String fechaCaducidad, int numLote, String paisOrigen, int tempMantRecom) {       
        super(fechaEnvasado, fechaCaducidad, numLote, paisOrigen, tempMantRecom);// Parametros del constructor de la Superclase. Siempre se incluyen
        // No hay parametros especificos de la Subclase
    } // Cierre del constructor 2

    /**
     * Método para mostrar por pantalla la Información
     */
    public void mostrarInfoCongelado() {
        // Se muestran los datos de la Superclase haciendo un llamamiento a su método para mostrarlos
        mostrarInfoPtoNoFresco();
    } // Cierre de la clase

} // Cierre de la clase

Sigue en Parte 2:

Enzo

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 82
    • Ver Perfil
Y aquí viene la segunda parte del resto de clases que no había puesto:

Clase Producto Congelado por Aire:
Código: [Seleccionar]
/**
 * EJERCICIO DEL USO DE HERECIAS Y POLIMORFISMO.<br>
 * Esta Clase define una Subclase que "bebe" de la Subclase intermedia PtoCongelado_CU00687B.<br>
 * Clase 6 Reutilizada del Ejercicio del Tema "CU00687B ejercicio resuelto herencia extends super java tutorial programador".
 * @author Lorenzo Fernández Asensio
 * @version 20151124.01
 */
public class PtoCongelAire_CU00687B extends PtoCongelado_CU00687B {

    //Campos específicos de la subclase.
    private int porcentNitro,
                porcentOxig,
                porcentDioxCarb,
                porcentVaporAgua;

    /**
     * Constructor 1 del Producto. Atribututos sin asignación de Valores
     * @param porcentNitro El parámetro porcentNitro define el Porcentaje de Nitrógeno del Agua de la Congelación
     * @param porcentOxig El parámetro porcentOxig define el Porcentaje de Oxigeno del Agua de la Congelación
     * @param porcentDioxCarb El parámetro porcentDioxCarb define el Porcentaje de Dióxido de Carbono del Agua de la Congelación
     * @param porcentVaporAgua El parámetro porcentVaporAgua define el Porcentaje de Vapor de Agua del Agua de la Congelación
     */
    public PtoCongelAire_CU00687B () {
        super(); // Parametros del constructor de la Superclase. Siempre se incluyen
        // Parametros especificos de la Subclase
        porcentNitro = 0;
        porcentOxig = 0;
        porcentDioxCarb = 0;
        porcentVaporAgua = 0;
    } // Cierre del constructor 1

    /**
     * Constructor 2 del Producto. Atribututos con asignación de Valores
     * @param porcentNitro El parámetro porcentNitro define el Porcentaje de Nitrógeno del Agua de la Congelación
     * @param porcentOxig El parámetro porcentOxig define el Porcentaje de Oxigeno del Agua de la Congelación
     * @param porcentDioxCarb El parámetro porcentDioxCarb define el Porcentaje de Dióxido de Carbono del Agua de la Congelación
     * @param porcentVaporAgua El parámetro porcentVaporAgua define el Porcentaje de Vapor de Agua del Agua de la Congelación
     */
    public PtoCongelAire_CU00687B (String fechaEnvasado, String fechaCaducidad, int numLote, String paisOrigen, int tempMantRecom,
    int porcentNitro, int porcentOxig, int porcentDioxCarb, int porcentVaporAgua) {
        // Parametros del constructor de la Superclase. Siempre se incluyen
        super(fechaEnvasado, fechaCaducidad, numLote, paisOrigen, tempMantRecom);
        // Parametro especifico de la Subclase
        this.porcentNitro = porcentNitro;
        this.porcentOxig = porcentOxig;
        this.porcentDioxCarb = porcentDioxCarb;
        this.porcentVaporAgua = porcentVaporAgua;
    } // Cierre del constructor 2

    // METODOS ESPECIFICOS DE LA SUBLASE
    /**
     * Método para establecer el Porcentaje de Nitrógeno
     * @param porcentNitro El parámetro porcentNitro define el porcentNitro
     */
    public void setPorcentNitro (int porcentNitro) {
        this.porcentNitro = porcentNitro;
    } // Cierre del método para establecer el Porcentaje de Nitrógeno
   
    /**
     * Método para establecer el Porcentaje de Oxigeno
     * @param porcentOxig El parámetro porcentOxig define el Porcentaje de Oxigeno en la composición
     */
    public void setPorcentOxig (int porcentOxig) {
        this.porcentOxig = porcentOxig;
    } // Cierre del método para establecer el Porcentaje de Oxigeno
   
    /**
     * Método para establecer el Porcentaje de Dióxido de Carbono
     * @param porcentDioxCarb El parámetro porcentDioxCarb define el Porcentaje de Dióxido de Carbono en la composición
     */
    public void setPorcentDioxCarb (int porcentDioxCarb) {
        this.porcentDioxCarb = porcentDioxCarb;
    } // Cierre del método para establecer el Porcentaje de Dióxido de Carbono
   
    /**
     * Método para establecer el Porcentaje de Vapor de Agua
     * @param porcentVaporAgua El parámetro porcentVaporAgua define el Porcentaje de Vapor de Agua en la composición
     */
    public void setPorcentVaporAgua (int porcentVaporAgua) {
        this.porcentVaporAgua = porcentVaporAgua;
    } // Cierre del método para establecer el Porcentaje de Vapor de Agua
   
    /**
     * Método para para obtener el Porcentaje de Nitrógeno
     * @return El Porcentaje de Nitrógeno de la Composción
     */
    public int getPorcentNitro() { return porcentNitro; }
   
    /**
     * Método para para obtener el Porcentaje de Oxigeno
     * @return El Porcentaje de Oxigeno de la Composción
     */
    public int getPorcentOxig() { return porcentOxig; }
   
    /**
     * Método para para obtener el Porcentaje de Dióxido de Carbono
     * @return El Porcentaje de Dióxido de Carbono de la Composción
     */
    public int getPorcentDioxCarb() { return porcentDioxCarb; }
   
    /**
     * Método para para obtener el Porcentaje de Vapor de Agua
     * @return El Porcentaje de Vapor de Agua de la Composción
     */
    public int getPorcentVaporAgua() { return porcentVaporAgua; }
   
    /**
     * Método para mostrar por pantalla la Información
     */
    public void mostrarInforCongelAire() {
       
        // 1º Se muestran los datos de la Superclase haciendo un llamamiento a su método para mostrarlos
        mostrarInfoCongelado();
       
        // 2º Se muestran los datos de los atributos de la Subclase
        System.out.print ("La composición del aire con que fue congelado es: ");
        System.out.print (getPorcentNitro() + "% de Nitrógeno + ");
        System.out.print (getPorcentOxig() + "% de Oxigeno + ");
        System.out.print (getPorcentDioxCarb() + "% de Dióxido de Carbono + ");
        System.out.println (getPorcentVaporAgua() + "% de Vapor de Agua.");
       
    } // Cierre de la clase

} // Cierre de la clase

Clase Producto Congelado por Agua:
Código: [Seleccionar]
/**
 * EJERCICIO DEL USO DE HERECIAS Y POLIMORFISMO.<br>
 * Esta Clase define una Subclase que "bebe" de la Subclase intermedia PtoCongelado_CU00687B.<br>
 * Clase 7 Reutilizada del Ejercicio del Tema "CU00687B ejercicio resuelto herencia extends super java tutorial programador".
 * @author Lorenzo Fernández Asensio
 * @version 20151124.01
 */
public class PtoCongelAgua_CU00687B extends PtoCongelado_CU00687B {

    //Campos específicos de la subclase.
    private int salinidadAgua;

    /**
     * Constructor 1 del Producto. Atribututos sin asignación de Valores
     * @param salinidadAgua El parámetro salinidadAgua define la salinidad del agua con que se realizó la<br>
     * congelación en gramos de sal por litro de agua.
     */
    public PtoCongelAgua_CU00687B () {
        super(); // Parametros del constructor de la Superclase. Siempre se incluyen
        // Parametros especificos de la Subclase
        salinidadAgua = 0;
    } // Cierre del constructor 1

    /**
     * Constructor 2 del Producto. Atribututos con asignación de Valores
     * @param salinidadAgua El parámetro salinidadAgua define la salinidad del agua con que se realizó la<br>
     * congelación en gramos de sal por litro de agua.
     */
    public PtoCongelAgua_CU00687B (String fechaEnvasado, String fechaCaducidad, int numLote, String paisOrigen, int tempMantRecom, int salinidadAgua) {
        // Parametros del constructor de la Superclase. Siempre se incluyen
        super(fechaEnvasado, fechaCaducidad, numLote, paisOrigen, tempMantRecom);
        // Parametro especifico de la Subclase
        this.salinidadAgua = salinidadAgua;
    } // Cierre del constructor 2

    // METODOS ESPECIFICOS DE LA SUBLASE
    /**
     * Método para establecer la salinidad del agua
     * @param salinidadAgua El parámetro salinidadAgua define la salinidad del agua
     */
    public void setSalinidadAgua (int salinidadAgua) {
        this.salinidadAgua = salinidadAgua;
    } // Cierre del método para establecer la salinidad del agua
   
    /**
     * Método para para obtener la salinidad del agua
     * @return La salinidad del agua con que se realizó la congelación en gramos de sal por litro de agua.
     */
    public int getSalinidadAgua() { return salinidadAgua; }
   
    /**
     * Método para mostrar por pantalla la Información
     */
    public void mostrarInforCongelAgua() {
       
        // 1º Se muestran los datos de la Superclase haciendo un llamamiento a su método para mostrarlos
        mostrarInfoCongelado();
       
        // 2º Se muestran los datos de los atributos de la Subclase
        System.out.println ("La salinidad del agua con que se realizó la congelación es de " + getSalinidadAgua() + " gramos de sal por litro de agua.");
       
    } // Cierre de la clase

} // Cierre de la clase

Clase Producto congelado por Nitrógeno:
Código: [Seleccionar]
/**
 * EJERCICIO DEL USO DE HERECIAS Y POLIMORFISMO.<br>
 * Esta Clase define una Subclase que "bebe" de la Subclase intermedia PtoCongelado_CU00687B.<br>
 * Clase 8 Reutilizada del Ejercicio del Tema "CU00687B ejercicio resuelto herencia extends super java tutorial programador".
 * @author Lorenzo Fernández Asensio
 * @version 20151124.01
 */
public class PtoCongelNitro_CU00687B extends PtoCongelado_CU00687B {

    //Campos específicos de la subclase.
    private String metodoCongelacion;
    private int tiempoExpoANitro;

    /**
     * Constructor 1 del Producto. Atribututos sin asignación de Valores
     * @param metodoCongelacion El parámetro metodoCongelacion define el método de Congelación.
     * @param tiempoExpoANitro El parámetro tiempoExpoANitro define el Tiempo de exposición al Nitrogeno (En Segundos).
     */
    public PtoCongelNitro_CU00687B () {
        super(); // Parametros del constructor de la Superclase. Siempre se incluyen
        // Parametros especificos de la Subclase
        metodoCongelacion = "";
        tiempoExpoANitro = 0;
    } // Cierre del constructor 1

    /**
     * Constructor 2 del Producto. Atribututos con asignación de Valores
     * @param metodoCongelacion El parámetro metodoCongelacion define el método de Congelación.
     * @param tiempoExpoANitro El parámetro tiempoExpoANitro define el Tiempo de exposición al Nitrogeno (En Segundos).
     */
    public PtoCongelNitro_CU00687B (String fechaEnvasado, String fechaCaducidad, int numLote, String paisOrigen,
    int tempMantRecom, String metodoCongelacion, int tiempoExpoANitro) {
        // Parametros del constructor de la Superclase. Siempre se incluyen
        super(fechaEnvasado, fechaCaducidad, numLote, paisOrigen, tempMantRecom);
        // Parametro especifico de la Subclase
        this.metodoCongelacion = metodoCongelacion;
        this.tiempoExpoANitro = tiempoExpoANitro;
    } // Cierre del constructor 2

    // METODOS ESPECIFICOS DE LA SUBLASE
    /**
     * Método para establecer el método de Congelación
     * @param metodoCongelacion El parámetro metodoCongelacion define el Método de Congelación
     */
    public void setMetodoCongelacion (String metodoCongelacion) {
        this.metodoCongelacion = metodoCongelacion;
    } // Cierre del método para establecer el método de Congelación
   
    /**
     * Método para establecer el tiempo de Exposición al Nitrogeno (En Segundos)
     * @param tiempoExpoANitro El parámetro tiempoExpoANitro define en Segundos el tiempo de Exposición al Nitrogeno
     */
    public void setTiempoExpoANitro (int tiempoExpoANitro) {
        this.tiempoExpoANitro = tiempoExpoANitro;
    } // Cierre del método para establecer el tiempo de Exposición al Nitrogeno
   
    /**
     * Método para para obtener el  método de Congelación
     * @return El método de Congelación.
     */
    public String getMetodoCongelacion() { return metodoCongelacion; }
   
    /**
     * Método para para obtener el tiempo de Exposición al Nitrogeno
     * @return El tiempo, en segundos, de Exposición al Nitrogeno.
     */
    public int getTiempoExpoANitro() { return tiempoExpoANitro; }
   
    /**
     * Método para mostrar por pantalla la Información
     */
    public void mostrarInforCongelNitro() {
       
        // 1º Se muestran los datos de la Superclase haciendo un llamamiento a su método para mostrarlos
        mostrarInfoCongelado();
       
        // 2º Se muestran los datos de los atributos de la Subclase
        System.out.print ("Congelado por el método de " + getMetodoCongelacion());
        System.out.println (" en el Nitrogeno durante " + getTiempoExpoANitro() + " segundos.");
       
    } // Cierre de la clase

} // Cierre de la clase

Y con esta he finalizado todas las clases que me faltaba. A continuación vendrían las que puse en el inicio.

Y respecto a mi pregunta: ¿A nadie (que tenga un nivel ¡claro!. No un "mindudi" como yo) se le a ocurrido hacer una especie de índice en el que ponga lo que hace cada método de cada clase? (Ya se que hay muchas). Sería algo como:
Hacer "Tal cosa"...........Método "tal"..........De "Tal" clase.
Y luego ya con eso vas directamente al API de java.
¿No crees que seria útil?.
Posiblemente os parezca una sandez pero a mi, que estoy "en pañales" (y no tengo ni idea de ingles) pienso que seria de gran ayuda a la hora de aprender.

Espero vuestros comentarios,

Muchas gracias,

Saludos.

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola Enzo hay listados con todas las clases del api de java como este: http://docs.oracle.com/javase/8/docs/api/allclasses-noframe.html

También hay índices donde se explica para qué sirven todas las clases del api java como este: http://docs.oracle.com/javase/8/docs/api/

Estos índices puedes recorrerlos y ver qué hace cada clase.

Hay algunos sitios web donde te puedes descargar el api de java en español, pero la recomendación es que si quieres dedicarte a la programación te acostumbres a trabajar consultando la documentación en inglés porque si no hay muchas cosas que no vas a encontrar.

El código lo tienes bien resuelto, usas tipos estático Producto y los instancias con un tipo dinámico que puede ser producto fresco, refrigerado u otro... Creas listas de Producto formadas por instancias de los distintos subtipos por ejemplo

Código: [Seleccionar]
Producto_CU00687B [] listaPtosEnviados = {productoFresco1, productoFresco2, productoRefrigerado1, productoRefrigerado2, productoRefrigerado3,
            productoCongelAire1, productoCongelAire2, productoCongelAgua1, productoCongelAgua2, productoCongelNitro1};
       

Saludos

Enzo

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 82
    • Ver Perfil
Hola Alex,

OK.

Muchas gracias por todo. Por tus correcciones y tus consejos.

Un saludo,

 

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