Buenas tardes.
Aquí os propongo una posible solución del ejercicio CU0686B del curso Java desde cero.
EJERCICIO
Se plantea desarrollar un programa Java que permita la gestión de una empresa agroalimentaria que trabaja con tres tipos de productos: productos frescos, productos refrigerados y productos congelados. Todos los productos llevan esta información común: fecha de caducidad y número de lote. A su vez, cada tipo de producto lleva alguna información específica. Los productos frescos deben llevar la fecha de envasado y el país de origen. Los productos refrigerados deben llevar el código del organismo de supervisión alimentaria. Los productos congelados deben llevar la temperatura de congelación recomendada. Crear el código de las clases Java implementando una relación de herencia desde la superclase Producto hasta las subclases ProductoFresco, ProductoRefrigerado y ProductoCongelado. Cada clase debe disponer de constructor y permitir establecer (set) y recuperar (get) el valor de sus atributos y tener un método que permita mostrar la información del objeto. Crear una clase testHerencia2 con el método main donde se cree un objeto de cada tipo y se muestren los datos de cada uno de los objetos creados.
El código de la clase "ProductoFresco":
public class ProductoFresco extends Producto{
private String fechaEnvase;
private String paisOrigen;
public ProductoFresco(){
super();
fechaEnvase = "Desconocido";
paisOrigen = "Desconocido";
}
public ProductoFresco(String fechaCaducidad, int numeroLote, String fechaEnvase, String paisOrigen){
super(fechaCaducidad, numeroLote);
this.fechaEnvase = fechaEnvase;
this.paisOrigen = paisOrigen;
}
public void setFechaEnvase(String fechaEnvase){
this.fechaEnvase = fechaEnvase;
}
public void setPiasOrigen(String paisOrigen){
this.paisOrigen = paisOrigen;
}
public String getFechaEnvase(){return fechaEnvase;}
public String getPiasOrigen(){return paisOrigen;}
public void mostrarInfoProductoFresco(){
System.out.println("El producto: "+getNumeroLote()+" con fecha de envase: "+getFechaEnvase()+
" y fecha de caducidad: "+getFechaCaducidad()+" es de país de origen: "+getPiasOrigen());
}
}
El código de la clase "ProductoRefrigerado":
public class ProductoRefrigerado extends Producto{
private int codigoOrganismoSupervision;
public ProductoRefrigerado(){
super();
codigoOrganismoSupervision = 0;
}
public ProductoRefrigerado(String fechaCaducidad, int numeroLote, int codigoOrganismoSupervision){
super(fechaCaducidad, numeroLote);
this.codigoOrganismoSupervision = codigoOrganismoSupervision;
}
public void setCodigoOrganismoSupervision(int codigoOrganismoSupervision){
this.codigoOrganismoSupervision = codigoOrganismoSupervision;
}
public int getCodigoOrganismoSupervision(){return codigoOrganismoSupervision; }
public void mostrarInfoProductoRefrigerado(){
System.out.println("El producto: "+getNumeroLote()+" y con código de Organismo de Supervisión: "+
getCodigoOrganismoSupervision()+" tiene fecha de caducidad: "+getFechaCaducidad());
}
}
El código de la clase "ProductoCongelado":
public class ProductoCongelado extends Producto{
private float temperaturaCongelacionRecom;
public ProductoCongelado(){
super();
temperaturaCongelacionRecom = 0;
}
public ProductoCongelado(String fechaCaducidad, int numeroLote, float temperaturaCongelacionRecom){
super(fechaCaducidad, numeroLote);
this.temperaturaCongelacionRecom = temperaturaCongelacionRecom;
}
public void setTemperaturaCongelacionRecom(float temperaturaCongelacionRecom){
this.temperaturaCongelacionRecom = temperaturaCongelacionRecom;
}
public float getTemperaturaCongelacionRecom(){return temperaturaCongelacionRecom;}
public void mostrarInfoProductoCongelado(){
System.out.println("El producto: "+getNumeroLote()+" con fecha de caducidad: "+getFechaCaducidad()+
" tiene una temperatura de congelación recomendada de: "+getTemperaturaCongelacionRecom()+"C");
}
}
El código de la clase "Producto":
public class Producto{
private String fechaCaducidad;
private int numeroLote;
public Producto(){
fechaCaducidad = "Desconocida";
numeroLote = 0;
}
public Producto(String fechaCaducidad, int numeroLote){
this.fechaCaducidad = fechaCaducidad;
this.numeroLote = numeroLote;
}
public void setFechaCaducidad(String fechaCaducidad){
this.fechaCaducidad = fechaCaducidad;
}
public void setNumeroLote(int numeroLote){
this.numeroLote = numeroLote;
}
public String getFechaCaducidad(){return fechaCaducidad;}
public int getNumeroLote(){return numeroLote;}
}
El código de la clase main "TestHerencia2":
public class TestHerencia2{
public static void main(String []Args){
//Crear objetos nuevos con constructores con parámetros
ProductoFresco productoFresco1 = new ProductoFresco("20-10-2016", 3409, "20-08-2016", "España");
ProductoRefrigerado productoRefrigerado1 = new ProductoRefrigerado("30-10-2016", 784, 1200);
ProductoCongelado productoCongelado1 = new ProductoCongelado("20-11-2016", 7345, -10);
System.out.println("Productos(objetos) creados con constructores con parámetros:");
productoFresco1.mostrarInfoProductoFresco();
productoRefrigerado1.mostrarInfoProductoRefrigerado();
productoCongelado1.mostrarInfoProductoCongelado();
//Crear objetos nuevos con constructores sin parámetros
ProductoFresco productoFresco2 = new ProductoFresco();
ProductoRefrigerado productoRefrigerado2 = new ProductoRefrigerado();
ProductoCongelado productoCongelado2 = new ProductoCongelado();
System.out.println("Productos(objetos) creados con constructores sin parámetros:");
productoFresco2.mostrarInfoProductoFresco();
productoRefrigerado2.mostrarInfoProductoRefrigerado();
productoCongelado2.mostrarInfoProductoCongelado();
}
}
Gracias.