Bueno, he creado algunos procedimientos para las tareas repetitivas, y la verdad es que el Test ahora no tiene ni comparación. La clase EntradaDeTeclado no la vuelvo a poner, no ha sufrido ningun cambio
Clase TestHerencia
/**
* Ejercicio CU00686B
* Esta clase es un ejemplo del uso de la herencia en Java
* Crea un objeto de cada tipo y luego muestra su contenido
* @author Ryche
* @version 07/04/2016/v2
*/
public class TestHerencia2{
public static void main(String[]args){
Fresco productoFresco=new Fresco();
productoFresco.creacionProductoFresco();
Refrigerado productoRefrigerado=new Refrigerado();
productoRefrigerado.creacionProductoRefrigerado();
Congelado productoCongelado=new Congelado();
productoCongelado.creacionProductoCongelado();
System.out.println("DATOS DE LOS PRODUCTOS CREADOS:");
productoFresco.mostrarProductoFresco();
productoRefrigerado.mostrarProductoRefrigerado();
productoCongelado.mostrarProductoCongelado();
}
}
Clase Producto
/**
* Esta clase define un objeto Producto
* Atributos: nombre(String),fechaCaducidad(String),numeroLote(int)
* @author Ryche
* @version 07/04/2016/v2
*/
public class Producto{
private String nombre,fechaCaducidad;
private int numeroLote;
/**
* Constructor sin parametros:incializa los atributos con valores por defecto
*/
public Producto(){
nombre="";
fechaCaducidad="00/00/0000";
numeroLote=0;
}
/**
* Constructor con parametros:inicializa los atributos con el valor de los parametros
* @param nombre String
* @param fechaCaducidad String
* @param numeroLote int
*/
public Producto(String nombre,int numeroLote,String fechaCaducidad){
this.nombre=nombre;
this.fechaCaducidad=fechaCaducidad;
this.numeroLote=numeroLote;
}
/**
* Método que recupera el valor del nombre
* @return nombre String
*/
public String getNombre(){return nombre;}
/**
* Método que recupera el valor de la fecha de caducidad
* @return fechaCaducidad String
*/
public String getFechaCaducidad(){return fechaCaducidad;}
/**
* Método que recupera el valor del numero de lote
* @return numeroLote int
*/
public int getNumeroLote(){return numeroLote;}
/**
* Método que establece el valor del nombre
* @param nombre String
*/
public void setNombre(String nombre){this.nombre=nombre;}
/**
* Método que establece el valor de la fecha de caducidad
* @param fechaCaducidad String
*/
public void setFechaCaducidad(String fechaCaducidad){this.fechaCaducidad=fechaCaducidad;}
/**
* Método que establece el valor del número de lote
* @param numeroLote int
*/
public void setNumeroLote(int numeroLote){this.numeroLote=numeroLote;}
/**
* Metodo que muestra los datos comunes a todos los productos
*/
public void mostrarComunProducto(){
System.out.println("Nombre: "+getNombre());
System.out.println("Número de lote: "+getNumeroLote());
System.out.println("Fecha de caducidad: "+getFechaCaducidad());}
/**
* Método que solicita los datos comunes a todos los productos
*/
public void creacionComunProducto(){
Producto producto=new Producto();
EntradaDeTeclado entrada=new EntradaDeTeclado();
System.out.println("Introduce el nombre del producto: ");
entrada.pedirEntrada();
setNombre(entrada.getEntrada());
System.out.println("Introduce el numero de lote: ");
entrada.pedirEntrada();
Integer lote=Integer.valueOf(entrada.getEntrada());
setNumeroLote(lote);
System.out.println("Introduce la fecha de caducidad (DD/MM/AAAA): ");
entrada.pedirEntrada();
setFechaCaducidad(entrada.getEntrada());
}
}
Clase Fresco
/**
* Esta clase define un objeto producto fresco (subclase de producto)
* Atributos: fechaEnvasado (String), paisOrigen (String) y los de la superclase
* @author Ryche
* @version 07/04/2106/v2
*/
public class Fresco extends Producto{
private String fechaEnvasado,paisOrigen;
/**
* Constructor sin parametros:inicializa los atributos con valores por defecto
*/
public Fresco(){
super();
fechaEnvasado="00/00/0000";
paisOrigen="Desconocido";
}
/**
* Constructor con parametros: incializa los atributos con el valor de los parámetros
* @param nombre String
* @param fechaCaducidad String
* @param numeroLote int
* @param fechaEnvasado String
* @param paisOrigen String
*/
public Fresco(String nombre,String fechaCaducidad,int numeroLote,String fechaEnvasado,String paisOrigen){
super(nombre,numeroLote,fechaCaducidad);
this.fechaEnvasado=fechaEnvasado;
this.paisOrigen=paisOrigen;
}
/**
* Método que recupera el valor de la fecha de envasado
* @return fechaEnvasado String
*/
public String getFechaEnvasado(){return fechaEnvasado;}
/**
* Método que recupera el valor del pais de origen
* @return paisOrigen String
*/
public String getPaisOrigen(){return paisOrigen;}
/**
* Método que establece el valor de la fecha de envasado
* @param fechaEnvasado String
*/
public void setFechaEnvasado(String fechaEnvasado){this.fechaEnvasado=fechaEnvasado;}
/**
* Método que establece el valor del pais de origen
* @param paisOrigen String
*/
public void setPaisOrigen(String paisOrigen){this.paisOrigen=paisOrigen;}
/**
* Método que muestra los datos del producto
*/
public void mostrarProductoFresco(){
System.out.println("PRODUCTO FRESCO");
mostrarComunProducto();
System.out.println("Fecha de envasado: "+getFechaEnvasado());
System.out.println("Pais de origen: "+getPaisOrigen());}
/**
* Metodo que solicita los datos del producto
*/
public void creacionProductoFresco(){
EntradaDeTeclado entrada=new EntradaDeTeclado();
System.out.println("CREACION DE PRODUCTO FRESCO");
creacionComunProducto();
System.out.println("Introduce la fecha de envasado (DD/MM/AAAA): ");
entrada.pedirEntrada();
setFechaEnvasado(entrada.getEntrada());
System.out.println("Introduce el pais de origen: ");
entrada.pedirEntrada();
setPaisOrigen(entrada.getEntrada());}
}
Clase Refrigerado:
/**
* Esta clase define un objeto producto refrigerado (subclase de producto)
* Atributos: codigoSupervision (String) y los de la superclase
* @author Ryche
* @version 07/042106/v2
*/
public class Refrigerado extends Producto{
private String codigoSupervision;
/**
* Constructor sin parametros:inicializa los atributos con valores por defecto
*/
public Refrigerado(){
super();
codigoSupervision="";
}
/**
* Constructor con parametros: incializa los atributos con el valor de los parámetros
* @param nombre String
* @param fechaCaducidad String
* @param numeroLote int
* @param codigoSupervision String
*/
public Refrigerado(String nombre,int numeroLote,String fechaCaducidad,String codigoSupervision){
super(nombre,numeroLote,fechaCaducidad);
this.codigoSupervision=codigoSupervision;
}
/**
* Método que recupera el valor del codigo de supervisión
* @return codigoSupervision String
*/
public String getCodigoSupervision(){return codigoSupervision;}
/**
* Método que establece el valor del código de supervisión
* @param codigoSupervision String
*/
public void setCodigoSupervision(String codigoSupervision){this.codigoSupervision=codigoSupervision;}
/**
* Método que muestra los datos del producto
*/
public void mostrarProductoRefrigerado(){
System.out.println("PRODUCTO REFRIGERADO");
mostrarComunProducto();
System.out.println("Código de supervisión: "+getCodigoSupervision());}
/**
* Método que solicita los datos del producto
*/
public void creacionProductoRefrigerado(){
EntradaDeTeclado entrada=new EntradaDeTeclado();
System.out.println("CREACION DE PRODUCTO REFRIGERADO");
creacionComunProducto();
System.out.println("Introduce el código de supervisión: ");
entrada.pedirEntrada();
setCodigoSupervision(entrada.getEntrada());}
}
Clase Congelado:
/**
* Esta clase define un objeto producto congelado (subclase de producto)
* Atributos: temperaturaCongelacion (int) y los de la superclase
* @author Ryche
* @version 07/04/2106/v2
*/
public class Congelado extends Producto{
private int temperaturaCongelacion;
/**
* Constructor sin parametros:inicializa los atributos con valores por defecto
*/
public Congelado(){
super();
temperaturaCongelacion=0;
}
/**
* Constructor con parametros: incializa los atributos con el valor de los parámetros
* @param nombre String
* @param fechaCaducidad String
* @param numeroLote int
* @param temperaturaCongelacion int
*/
public Congelado(String nombre,int numeroLote,String fechaCaducidad,int temperaturaCongelacion){
super(nombre,numeroLote,fechaCaducidad);
this.temperaturaCongelacion=temperaturaCongelacion;
}
/**
* Método que recupera el valor de la temperatura de congelacion
* @return temperaturaCongelacion int
*/
public int getTemperaturaCongelacion(){return temperaturaCongelacion;}
/**
* Método que establece el valor de la temperatura de congelacion
* @param temperaturaCongelacion int
*/
public void setTemperaturaCongelacion(int temperaturaCongelacion){
this.temperaturaCongelacion=temperaturaCongelacion;}
/**
* Método que muestra los datos del producto
*/
public void mostrarProductoCongelado(){
System.out.println("PRODUCTO CONGELADO");
mostrarComunProducto();
System.out.println("Temperatura de congelación: "+getTemperaturaCongelacion());}
/**
* Método que solicita los datos del producto
*/
public void creacionProductoCongelado(){
EntradaDeTeclado entrada=new EntradaDeTeclado();
System.out.println("CREACION DE PRODUCTO CONGELADO");
creacionComunProducto();
System.out.println("Introduce la temperatura de congelacion: ");
entrada.pedirEntrada();
Integer temperatura=Integer.valueOf(entrada.getEntrada());
setTemperaturaCongelacion(temperatura);}
}