Autor Tema: Ejercicio CU00686B tutorial ejemplo herencia java extends super constructor poo  (Leído 3577 veces)

Enzo

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

Aquí dejo mi ejercicio del temas "CU00686B tutorial ejemplo herencia java extends super constructores poo" para su corrección:

Superclase Producto:
Código: [Seleccionar]
// EJERCICIO DEL USO DE HERECIAS
// ----> CU00686B tutorial ejemplo herencia java extends super constructores poo.pdf

//Clase 1. Código de la Superclase Producto_CU00686B
/**
 * Esta Clase define una Superclase de la que "beberan" otras clases.<br>
 * Clase 1 del Ejercicio del Tema "CU00686B tutorial ejemplo herencia java extends super constructores poo".
 * @author Lorenzo Fernández Asensio
 * @version 20151120.01
 */
public class Producto_CU00686B {

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

    /**
     * Constructor 1 del Producto. Atribututos sin asignación de Valores
     * @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
     */
    public Producto_CU00686B() {
        fechaCaducidad = "";
        numLote = 0;
    } // Cierre del Constructor 1

    /**
     * Constructor 2 del Producto. Atribututos con asignación de Valores
     * @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
     */
    public Producto_CU00686B(String fechaCaducidad, int numLote) {
        this.fechaCaducidad = fechaCaducidad;
        this.numLote = numLote;
    } // Cierre del Constructor 2

    /**
     * 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 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 mostrar por pantalla la Información
     */
    public void mostrarInformacion() {
        System.out.println ("PRODUCTO");
        System.out.println ("--------");
        System.out.println ("Fecha de Caducidad: " + getFechaCaducidad());
        System.out.println ("Nº de Lote: " + getNumLote());
    } // Cierre de la clase
   
} // Cierre de la Clase

Subclase Producto Fresco:
Código: [Seleccionar]
// EJERCICIO DEL USO DE HERECIAS
// ----> CU00686B tutorial ejemplo herencia java extends super constructores poo.pdf

// Clase 2. Código de la clase ProductoFresco, subclase de la clase Producto_CU00686B
/**
 * Esta Clase define una Subclase que "bebe" de la Superclase Producto_CU00686B.<br>
 * Clase 2 del Ejercicio del Tema "CU00686B tutorial ejemplo herencia java extends super constructores poo".
 * @author Lorenzo Fernández Asensio
 * @version 20151120.01
 */
public class ProductoFresco_CU00686B extends Producto_CU00686B {

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

    /**
     * Constructor 1 del Producto. Atribututos sin asignación de Valores
     * @param fechaEnvasado El parámetro fechaEnvasadoad define la Fecha de Envasado del Producto
     * @param paisOrigen El parámetro paisOrigen define el País de Orignen del Producto
     */
    public ProductoFresco_CU00686B () {
        super(); // Parametros del constructor de la Superclase. Siempre se incluyen
        // Parametros especificos de la Subclase
        fechaEnvasado = "";
        paisOrigen = "";
    } // Cierre del constructor 1

    /**
     * Constructor 2 del Producto. Atribututos con asignación de Valores
     * @param fechaEnvasado El parámetro fechaEnvasadoad define la Fecha de Envasado del Producto
     * @param paisOrigen El parámetro paisOrigen define el País de Orignen del Producto
     */
    public ProductoFresco_CU00686B (String fechaCaducidad, int numLote, String fechaEnvasado, String paisOrigen) {       
        super(fechaCaducidad, numLote);// Parametros del constructor de la Superclase. Siempre se incluyen
        // Parametros especificos de la Subclase
        this.fechaEnvasado = fechaEnvasado;
        this.paisOrigen = paisOrigen;
    } // Cierre del constructor 2

    // METODOS ESPECIFICOS DE LA SUBLASE
    /**
     * Método para establecer la Fecha de Envasado
     * @param fechaEnvasado El parámetro fechaEnvasado define el valor que contendrá la Fecha de Envasado
     */
    public void setFechaEnvasado (String fechaEnvasado) {
        this.fechaEnvasado = fechaEnvasado;
    } // Cierre del método para establecer la Fecha de Envasado
   
    /**
     * Método para establecer el País de Origen
     * @param paisOrigen El parámetro paisOrigen define el valor que contendrá el País de Origen
     */
    public void setPaisOrigen (String paisOrigen) {
        this.paisOrigen = paisOrigen;
    } // Cierre del método para establecer el Pais de Origen
   
    /**
     * Método para para obtener la Fecha de Envasado
     * @return La Fecha de Fecha de Envasado del Producto
     */
    public String getFechaEnvasado() { return fechaEnvasado; }
   
    /**
     * Método para para obtener el País de Origen
     * @return El País de Origen del Producto
     */
    public String getPaisOrigen() { return paisOrigen; }
   
    /**
     * Método para mostrar por pantalla la Información
     */
    public void mostrarInformacion() {
       
        // Se muestran un Título
        System.out.println ("PRODUCTO FRESCO");
        System.out.println ("---------------");
        // Se muestran los datos de los métodos de la Superclase
        System.out.println ("Fecha de Caducidad: " + getFechaCaducidad());
        System.out.println ("Nº de Lote: " + getNumLote());
        // Se muestran los datos de los atributos de la Subclase
        System.out.println ("Fecha de Envasado: " + getFechaEnvasado());
        System.out.println ("Pais de Origen: " + getPaisOrigen());
       
    } // Cierre de la clase

} // Cierre de la clase

Subclase Producto Refrigerado
Código: [Seleccionar]
// EJERCICIO DEL USO DE HERECIAS
// ----> CU00686B tutorial ejemplo herencia java extends super constructores poo.pdf

// Clase 3. Código de la clase ProductoRefrigerado, subclase de la clase Producto_CU00686B
/**
 * Esta Clase define una Subclase que "bebe" de la Superclase Producto_CU00686B.<br>
 * Clase 3 del Ejercicio del Tema "CU00686B tutorial ejemplo herencia java extends super constructores poo".
 * @author Lorenzo Fernández Asensio
 * @version 20151120.01
 */
public class ProductoRefrigerado_CU00686B extends Producto_CU00686B {

    //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 ProductoRefrigerado_CU00686B () {
        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 ProductoRefrigerado_CU00686B (String fechaCaducidad, int numLote, String codSupervAlimentaria) {       
        super(fechaCaducidad, numLote); // 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 mostrarInformacion() {
       
        // Se muestran un Título
        System.out.println ("PRODUCTO REFRIGERADO");
        System.out.println ("--------------------");
        // Se muestran los datos de los métodos de la Superclase
        System.out.println ("Fecha de Caducidad: " + getFechaCaducidad());
        System.out.println ("Nº de Lote: " + getNumLote());
        // Se muestran los datos del atributo de la Subclase
        System.out.println ("Fecha de Envasado: " + getCodSupervAlimentaria());
       
    } // Cierre de la clase

} // Cierre de la clase

Subclase Producto Congelado
Código: [Seleccionar]
// EJERCICIO DEL USO DE HERECIAS
// ----> CU00686B tutorial ejemplo herencia java extends super constructores poo.pdf

// Clase 4. Código de la clase ProductoCongelado, subclase de la clase Producto_CU00686B
/**
 * Esta Clase define una Subclase que "bebe" de la Superclase Producto_CU00686B.<br>
 * Clase 4 del Ejercicio del Tema "CU00686B tutorial ejemplo herencia java extends super constructores poo".
 * @author Lorenzo Fernández Asensio
 * @version 20151120.01
 */
public class ProductoCongelado_CU00686B extends Producto_CU00686B {

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

    /**
     * Constructor 1 del Producto. Atribututos sin asignación de Valores
     * @param tempCongelRecom El parámetro tempCongelRecom define la temperatura de congelación recomendada
     */
    public ProductoCongelado_CU00686B () {
        super(); // Parametros del constructor de la Superclase. Siempre se incluyen
        tempCongelRecom = 0; // Parametro especifico de la Subclase
    } // Cierre del constructor 1

    /**
     * Constructor 2 del Producto. Atribututos con asignación de Valores
     * @param codSupervAlimentaria El parámetro tempCongelRecom define la temperatura de congelación recomendada
     */
    public ProductoCongelado_CU00686B (String fechaCaducidad, int numLote, int tempCongelRecom) {       
        super(fechaCaducidad, numLote); // Parametros del constructor de la Superclase. Siempre se incluyen
        this.tempCongelRecom = tempCongelRecom; // Parametro especifico de la Subclase
    } // Cierre del constructor 2

    // METODOS ESPECIFICOS DE LA SUBLASE
    /**
     * Método para establecer la temperatura de congelación recomendada
     * @param tempCongelRecom El parámetro tempCongelRecom define valor de la temperatura de congelación recomendada
     */
    public void setTempCongelRecom (int tempCongelRecom) {
        this.tempCongelRecom = tempCongelRecom;
    } // Cierre del método para establecer la Fecha de Envasado
   
    /**
     * Método para para obtener la temperatura de congelación recomendada
     * @return La temperatura de congelación recomendada
     */
    public int getTempCongelRecom() { return tempCongelRecom; }
   
    /**
     * Método para mostrar por pantalla la Información
     */
    public void mostrarInformacion() {
       
        // Se muestran un Título
        System.out.println ("PRODUCTO CONGELADO");
        System.out.println ("------------------");
        // Se muestran los datos de los métodos de la Superclase
        System.out.println ("Fecha de Caducidad: " + getFechaCaducidad());
        System.out.println ("Nº de Lote: " + getNumLote());
        // Se muestran los datos del atributo de la Subclase
        System.out.println ("Temperatura de Congelación Recomendada: " + getTempCongelRecom());
       
    } // Cierre de la clase

} // Cierre de la clase

Clase Test
Código: [Seleccionar]
// EJERCICIO DEL USO DE HERECIAS
// ----> CU00686B tutorial ejemplo herencia java extends super constructores poo.pdf

// Clase 5. Código de la clase test
/**
 * Esta Clase define una clase test para probar Herencias.<br>
 * Clase 5 del Ejercicio del Tema "CU00686B tutorial ejemplo herencia java extends super constructores poo".
 * @author Lorenzo Fernández Asensio
 * @version 20151121.01
 */
public class TestHerencia2_CU00686B {
   
    public static void main (String [ ] Args) {
       
        // CREACIÓN DE LOS OBJETOS ASIGNADO LOS ATRIBUTOS DE LA SUPERCLASE Producto_CU00686B + LOS SUYOS PROPIOS
        // Creación del objeto de producto Fresco
        ProductoFresco_CU00686B productoFresco = new ProductoFresco_CU00686B ("21-5-2020", 55, "22-5-2015", "España");
        // Creación del objeto de producto Refrigerado
        ProductoRefrigerado_CU00686B productoRefrig = new ProductoRefrigerado_CU00686B ("19-10-2025", 347, "ES-358/91");
        // Creación del objeto de producto Congelado
        ProductoCongelado_CU00686B productoCongel = new ProductoCongelado_CU00686B ("3-6-2017", 38, -15);
       
        // Se limpia la pantalla de la Consola
        System.out.println("\f");
       
        // SE REALIZAN LLAMADAS A LOS MÉTODOS DE LAS SUBCLASES PARA MOSTRAR LOS DATOS EN PANTALLA
        productoFresco.mostrarInformacion();
        System.out.println(""); // Se imprime línea en blanco de separación entre productos
        productoRefrig.mostrarInformacion();
        System.out.println(""); // Se imprime línea en blanco de separación entre productos
        productoCongel.mostrarInformacion();
   
    } // Cierre del Main
       
} //Cierre de la clase

Espero vuestros comentarios,

Muchas Gracias,

Un Saludo,
« Última modificación: 26 de Noviembre 2015, 09:24 por Alex Rodríguez »

Lorenzo31

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 381
    • Ver Perfil
Buenas tardes, veo tu ejercicio correcto, bien documentado.

Creas los productos solicitados y usas la herencia del metodo mostrarInformacion().

Sigue así. Un saludo.

Enzo

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

Muchas gracias,

Saludos,


Mario R. Rancel

  • Administrador
  • Experto
  • ********
  • APR2.COM
  • Mensajes: 1978
    • Ver Perfil
Buenos días. Enzo, simplemente hacerte un comentario para que lo tengas en cuenta de cara a los próximos ejercicios. Si te fijas en la clase Producto tienes el método mostrarInformacion() con esta línea (entre otras): System.out.println ("Fecha de Caducidad: " + getFechaCaducidad());

Luego en la clase ProductoFresco tienes el método mostrarInformacion() con esta línea: System.out.println ("Fecha de Caducidad: " + getFechaCaducidad());

Como ves, se trata de líneas repetidas.

La herencia nos sirve entre otras cosas para que las subclases hereden de las superclases y no tengamos que repetir código. En este caso te he puesto de ejemplo una línea, pero esto podría involucrar a cientos de líneas.

Hay varias formas de solucionar esto. Puedes ver un ejemplo en https://www.aprenderaprogramar.com/foros/index.php?topic=2926.0

En las siguientes entregas del curso se profundiza más en herencia y cómo reutilizar código y tendrás oportunidad de hacer ejercicios donde practicar con el concepto de reutilización de código.

Saludos

Enzo

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

Haciendo el ejercicio del tema siguiente (CU00687B ejercicio resuelto herencia extends super java tutorial programador) me di cuenta de esto que me comentas y lo he cambiado. Lo subí ayer.
cuando tengas un rato, por favor, échale un vistazo a ver como lo ves.

La verdad es que esto es como cuando estas aprendiendo a conducir. Son tantas cosas de las que tienes que estar pendiente que siempre se escapa alguna. Espero que con el tiempo me salga todo mas natural.

Por eso es tanto de agradecer que haya gente como vosotros que esteis dispuestos a dedicar parte de vuestro tiempo para corregirnos en estos primeros pasos que estamos dando con Java.

Muchas gracias,

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