Hola, aqui os pongo mi solución para este 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.
En este caso, para representar la información de cada objeto, no he usado los metodos getter de cada objeto, si no que he sobrescrito el metodo toString() de cada objeto, para dar el formato que quiero a la salida de cada objeto.
Clase Producto:public class Producto
{
private String fechaCaducidad;
private int numeroLote;
public Producto(String fechaCaducidad, int numeroLote){
this.fechaCaducidad=fechaCaducidad;
this.numeroLote=numeroLote;
}
public String getFechaCaducidad(){
return fechaCaducidad;
}
public int getNumeroLote(){
return numeroLote;
}
public void setFechaCducidad(String fecha){
fechaCaducidad=fecha;
}
public void setNumeroLote(int numero){
numeroLote=numero;
}
@Override
public String toString(){
return String.format("Fecha de Caducidad: " + fechaCaducidad + "\n" +
"Número de lote: " + numeroLote + "\n");
}
}
clase Frescopublic class Fresco extends Producto
{
private String paisOrigen;
private String fechaEnvasado;
public Fresco(String fechaCaducidad, int numeroLote,String paisOrigen, String fechaEnvasado){
super(fechaCaducidad,numeroLote);
this.paisOrigen=paisOrigen;
this.fechaEnvasado=fechaEnvasado;
}
public String getPaisOrigen(){
return paisOrigen;
}
public String getFechaEnvasado(){
return fechaEnvasado;
}
public void setPaisOrigen(String paisOrigen){
this.paisOrigen=paisOrigen;
}
public void setFechaEnvasado(String fechaEnvasado){
this.fechaEnvasado=fechaEnvasado;
}
@Override
public String toString(){
return String.format(super. toString() +
"Pais de origen: " + this.paisOrigen +"\n" +
"Fecha de envasado: " + this.fechaEnvasado +"\n");
}
}
Clase Refrigeradopublic class Refrigerado extends Producto
{
//información especifica
private String codigo;
public Refrigerado(String fechaCaducidad, int numeroLote, String codigo){
super(fechaCaducidad,numeroLote);
this.codigo=codigo;
}
public String getCodigo(){
return codigo;
}
public void setCodigo(String codigo){
this.codigo=codigo;
}
@Override
public String toString(){
return String.format(super. toString() +
"Codigo OSA: " + this.codigo +"\n" );
}
}
Clase congeladopublic class Congelado extends Producto
{
//información generica
private double temperaturaCongelación;
public Congelado(String fechaCaducidad, int numeroLote, double temperaturaCongelación){
super(fechaCaducidad,numeroLote);
this.temperaturaCongelación=temperaturaCongelación;
}
public double getTemperaturaCongelación(){
return temperaturaCongelación;
}
public void setTemperaturaCongelación(double temperaturaCongelación){
this.temperaturaCongelación=temperaturaCongelación;
}
@Override
public String toString(){
return String.format(super. toString() +
"Temperatura de congelación: " + this.temperaturaCongelación + "\n");
}
}
Clase testherencia2public class TestHerencia2
{
public static void main(String[] args){
//se crean los productos
Fresco productoFresco = new Fresco("12/2/16", 565, "España", "1/1/16");
Refrigerado productoRefrigerado = new Refrigerado("12/8/16", 235, "B345-23");
Congelado productoCongelado = new Congelado ("2/5/16", 4567, -24);
// se llama a los metodos correspondientes para obtener la información de cada producto
System.out.println("Información del producto fresco \n" + productoFresco.toString());
System.out.println("Información del producto refrigerado \n" + productoRefrigerado.toString());
System.out.println("Información del producto congelado \n" + productoCongelado.toString());
}
}
Un saludo y gracias.