Autor Tema: Herencia en java ejemplo ejercicio superclase de que heredan subclases CU00686B  (Leído 3524 veces)

Campillo

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 17
    • Ver Perfil
Clase Productos

Código: [Seleccionar]
package numero87;

/**
 * Clase con campos comunos con otras clases(superclase).
 *
 * @author Campillo
 * @version 27/08/2015
 */
public class Productos
{
    private String fechaCaducidad;
    private int numeroLote;

    /**
     * Constructor for objects of class Productos
     * @param fecha de caducidad del producto y numero del lote al qu pertenecen
     */
    public Productos(String fechaCaducidad, int numeroLote)
    {
        this.fechaCaducidad = fechaCaducidad;
        this.numeroLote = numeroLote;
    }

    /**
     * Método que sirve para introducir la fecha de caducidad para un producto
     * @param fecha de caducidad del producto
     */
    public void setFechaCaducidad(String fechaCaducidad){
        this.fechaCaducidad = fechaCaducidad;
    }
    /**
     * Método para introducir el numero del lote al que pertenece
     * @param numero del lote al que pertenece
     */
    public void setNumeroLote(int numeroLote){
        this.numeroLote = numeroLote;
    }
   
    /**
     * Método para obtener la fecha de caducidad del producto
     * @return fecha de caducidad del producto
     */
    public String getFechaCaducidad(){ return fechaCaducidad; }
   
    /**
     * Método para obtener el número del lote al que pertenece el producto
     * @return numero del lote al que pertenece el producto
     */
    public int getNumeroLote(){ return numeroLote; }
   
    /**
     * Método para ver todos los datos del producto
     */
    public void fechaCaducidadYNumeroLote(){
        System.out.println("La fecha de caducidad del producto es: " + getFechaCaducidad() + " y el numero del lote es: " + getNumeroLote());
    }
}



Clase ProductoFrescos

Código: [Seleccionar]
package numero87;


/**
 * Write a description of class ProductosFrescos here.
 *
 * @author Campillo
 * @version 27/08/2015
 */
public class ProductosFrescos extends Productos
{
    private String fechaEnvasado;
    private String paisOrigen;

    /**
     * Constructor for objects of class ProductosFrescos
     */
    public ProductosFrescos(String fechaCaducidad, int numeroLote, String fechaEnvasado, String paisOrigen)
    {
        super(fechaCaducidad, numeroLote);
        this.fechaEnvasado = fechaEnvasado;
        this.paisOrigen = paisOrigen;
    }
   
    public void setFechaOrigen(String fechaEnvasado){
        this.fechaEnvasado = fechaEnvasado;
    }
   
    public void setPaisOrigen(String paisOrigen){
        this.paisOrigen = paisOrigen;
    }
   
    public String getFechaEnvasado(){ return fechaEnvasado; }
   
    public String getPaisOrigen(){ return paisOrigen; }
   
    public void fechaCaducidadNumeroLoteFechaEnvasadoYPaisOrigen(){
        System.out.println("La fecha de caducidad es: " + getFechaCaducidad() + " el numero de lote es: " + getNumeroLote() + " la fecha  de envasado es: " + getFechaEnvasado() + " y el pais de origen es: " + getPaisOrigen());
    }

}



ProductosCongelados

Código: [Seleccionar]
package numero87;


/**
 * Write a description of class ProductosCongelados here.
 *
 * @author Campillo
 * @version 27/08/2015
 */
public class ProductosCongelados extends Productos
{
    private int temperaturaRecomendada;

    /**
     * Constructor for objects of class ProductosCongelados
     */
    public ProductosCongelados(String fechaCaducidad, int numeroLote, int temperatrarecomendada)
    {
        super(fechaCaducidad, numeroLote);
        this.temperaturaRecomendada = temperaturaRecomendada;
    }

    public void setTemperaturarecomendada(int temperaturaRecomendada){
        this.temperaturaRecomendada = temperaturaRecomendada;
    }
   
    public int getTemperaturaRecomendada(){ return temperaturaRecomendada; }
   
    public void fechaCaducidadNumeroLoteYTemperaturaRecomendada(){
        System.out.println("La fecha de caducidad es: " + getFechaCaducidad() + " el numero del lote es: " + getNumeroLote() + " la temperatura recomendada es: " + getTemperaturaRecomendada() + "º");
    }
}



Clase ProductosRefrigerados

Código: [Seleccionar]
package numero87;


/**
 * Write a description of class ProductosRefrigerados here.
 *
 * @author (your name)
 * @version (a version number or a date)
 */
public class ProductosRefrigerados extends Productos
{
    private int codigoDeSupervisionAlimentaria;

    /**
     * Constructor for objects of class ProductosRefrigerados
     */
    public ProductosRefrigerados(String fechaCaducidad, int numeroLote, int codigoDeSupervisionAlimentaria)
    {
        super(fechaCaducidad, numeroLote);
        this.codigoDeSupervisionAlimentaria = codigoDeSupervisionAlimentaria;
    }

    public void setCodigoDeSupervisionAlimentaria(int codigoDeSupervisionAlimentaria){
        this.codigoDeSupervisionAlimentaria = codigoDeSupervisionAlimentaria;
    }
   
    public int getCodigoDeSupervisionAlimentaria(){ return codigoDeSupervisionAlimentaria; }
   
    public void fechaCaducidadNumeroLoteYCodigoDeSupervisionAlimentaria(){
        System.out.println("La fecha de caducidad es: " + getFechaCaducidad() + " le numero del lote es: " + getNumeroLote() + " y el codigo de supervision alimentaria es: " + getCodigoDeSupervisionAlimentaria() );
    }
   
}



Clase TestHerencia2

Código: [Seleccionar]
package numero87;

import java.util.Scanner;

/**
 * Write a description of class Envios here.
 *
 * @author Campillo
 * @version 22/08/2015
 */
public class TestHerencia2
{
    public static void main(String [] Args){
        System.out.println("Escribe la fecha de caducidad: ");
        Scanner escribirFechaCaducidad = new Scanner(System.in);
        String fechaCaducidad = escribirFechaCaducidad.nextLine();
        System.out.println("Escribe el numero del lote: ");
        Scanner escribirNumeroLote = new Scanner(System.in);
        String numeroLoteString = escribirNumeroLote.nextLine();
        Integer numeroLote = Integer.valueOf(numeroLoteString);
        Productos productos1 = new Productos(fechaCaducidad, numeroLote);
       
        System.out.println("Escribe la fecha de envasado: ");
        Scanner escribirFechaEnvasado = new Scanner(System.in);
        String fechaEnvasado = escribirFechaEnvasado.nextLine();
        System.out.println("Escribe el pais de origen: ");
        Scanner escribirPaisDeOrigen = new Scanner(System.in);
        String paisDeOrigen = escribirPaisDeOrigen.nextLine();
        ProductosFrescos productosFrescos1 = new ProductosFrescos(fechaCaducidad, numeroLote, fechaEnvasado, paisDeOrigen);
       
        System.out.println("Escribe la temperatura recomendada: ");
        Scanner escribirTemperaturaRecomendada = new Scanner(System.in);
        String temperaturaRecomendadaString = escribirTemperaturaRecomendada.nextLine();
        Integer temperaturaRecomendada = Integer.valueOf(temperaturaRecomendadaString);
        ProductosCongelados productosCongelados1 = new ProductosCongelados(fechaCaducidad, numeroLote, temperaturaRecomendada);
       
        System.out.println("Escribe el codigo de supervision alimentaria: ");
        Scanner escribirCodigoDeSupervisionAlimentaria = new Scanner(System.in);
        String codigoDeSupervisionAlimentariaString = escribirCodigoDeSupervisionAlimentaria.nextLine();
        Integer codigoDeSupervisionAlimentaria = Integer.valueOf(codigoDeSupervisionAlimentariaString);
        ProductosRefrigerados productosRefrigerados1 = new ProductosRefrigerados(fechaCaducidad, numeroLote, codigoDeSupervisionAlimentaria);
       
        productos1.fechaCaducidadYNumeroLote();
        productosFrescos1.fechaCaducidadNumeroLoteFechaEnvasadoYPaisOrigen();
        productosCongelados1.fechaCaducidadNumeroLoteYTemperaturaRecomendada();
        productosRefrigerados1.fechaCaducidadNumeroLoteYCodigoDeSupervisionAlimentaria();
    }
}

« Última modificación: 30 de Agosto 2015, 10:56 por Mario R. Rancel »

Mario R. Rancel

  • Administrador
  • Experto
  • ********
  • APR2.COM
  • Mensajes: 1978
    • Ver Perfil
Hola Campillo, he revisado el código, que en líneas generales está bien. Te indico las cosas que sería deseable mejorar o simplemente algunos puntos a comentar:

a) Los nombres de las clases: explicado en www.aprenderaprogramar.com/foros/index.php?topic=3035

b) Si un atributo pensamos que no va a usarse para operaciones numéricas es preferible que sea un String en lugar de un valor numérico (aunque esto es opcional)

private String codigoDeSupervisionAlimentaria; en lugar de private int codigoDeSupervisionAlimentaria; si pensamos que este código no va a usarse para cálculos. En cambio la temperatura sí es adecuado que sea un tipo numérico porque es posible que se utilice para cálculos.

c) Usar nombres descriptivos. Por ejemplo mostrarFechaCaducidadYNumLote() en lugar de fechaCaducidadYNumeroLote()

d) Si el nombre se vuelve muy largo buscar alternativas por ejemplo mostrarInfoProdFresco() o simplemente mostrarInfo() en lugar de fechaCaducidadNumeroLoteFechaEnvasadoYPaisOrigen()

e) La superclase posiblemente es una abstracción o forma de mantener en común cierto código, evitando su repetición. Posiblemente no sea adecuado instanciarla como haces con Productos productos1 = new Productos(fechaCaducidad, numeroLote);

Un hilo adecuado para consultar como solución es este: www.aprenderaprogramar.com/foros/index.php?topic=2306

Saludos cordiales

 

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