Esta podría ser una solución al ejercicio propuesto CU00686B.
public class Producto
{
private String lote;
private String fechaCaducidad;
public Producto(){
lote="";
fechaCaducidad="";
}
public Producto(String lote,String fechaCaducidad){
this.lote=lote;
this.fechaCaducidad=fechaCaducidad;
}
public void setLote(String lote){
this.lote=lote;
}
public void setFechaCaducidad(String fechaCaducidad){
this.fechaCaducidad=fechaCaducidad;
}
public String getLote(){
return lote;
}
public String getFechaCaducidad(){
return fechaCaducidad;
}
public void mostrarProducto(){
System.out.println("Lote : "+lote);
System.out.println("Fecha de caducidad : "+fechaCaducidad);
}
public void mostrarInformacion(){
//Sobreescrito en cada una de las subclases
}
}
public class ProductoFresco extends Producto
{
private String fechaEnvasado;
private String paisOrigen;
public ProductoFresco(){
super();
fechaEnvasado="";
paisOrigen="";
}
public ProductoFresco(String numeroLote, String fechaCaducidad, String fechaEnvasado, String paisOrigen){
super(numeroLote,fechaCaducidad);
this.fechaEnvasado=fechaEnvasado;
this.paisOrigen=paisOrigen;
}
public void setFechaEnvasado(String fechaEnvasado){
this.fechaEnvasado=fechaEnvasado;
}
public void setPaisOrigen(String paisOrigen){
this.paisOrigen=paisOrigen;
}
public String getFechaEnvasdo(){
return fechaEnvasado;
}
public String getPaisOrigen(){
return paisOrigen;
}
public void mostrarInformacion(){
System.out.println("--- Producto Fresco ---");
mostrarProducto();
System.out.println("Fecha de envasado : "+fechaEnvasado);
System.out.println("Pais de origen :"+paisOrigen);
}
}
public class ProductoRefrigerado extends Producto
{
private String codigoOrgSupAlim;
public ProductoRefrigerado(){
super();
codigoOrgSupAlim="";
}
public ProductoRefrigerado(String lote, String fechaCaducidad, String codigoOrgSupAlim){
super(lote,fechaCaducidad);
this.codigoOrgSupAlim=codigoOrgSupAlim;
}
public void setCodigoOrgSupAlim(String codigoOrgSupAlim){
this.codigoOrgSupAlim=codigoOrgSupAlim;
}
public String getCodigoOrgSupAlim(){
return codigoOrgSupAlim;
}
public void mostrarInformacion(){
System.out.println("--- Producto Refrigerado ---");
mostrarProducto();
System.out.println("Codigo del Organismo de Supervisión Alimentaria : "+codigoOrgSupAlim);
}
}
public class ProductoCongelado extends Producto
{
private double temperaturaCongelacion;
public ProductoCongelado()
{
super();
temperaturaCongelacion=0;
}
public ProductoCongelado(String lote,String fechaCaducidad,double temperaturaCongelacion){
super(lote,fechaCaducidad);
this.temperaturaCongelacion=temperaturaCongelacion;
}
public void setTemperaturaCongelacion(double temperaturaCongelacion){
this.temperaturaCongelacion =temperaturaCongelacion;
}
public double getTemperaturaCongelacion(){
return temperaturaCongelacion;
}
public void mostrarInformacion(){
System.out.println("--- Producto Congelado ---");
mostrarProducto();
System.out.println("Temperatura de congelación : "+temperaturaCongelacion+"ºC");
}
}
import java.util.ArrayList;
import java.util.Iterator;
public class TestHerencia2
{
public static void main(String Arg[]){
ArrayList<Producto> listaProductos= new ArrayList<Producto>();
listaProductos.add(new ProductoFresco("01","01/01/2021","01/01/2001","Argentina"));
listaProductos.add(new ProductoRefrigerado("02","02/02/2022","COD-002"));
listaProductos.add(new ProductoCongelado("03","03/03/2023",-3.50));
System.out.println("Lista de Productos\n");
Iterator<Producto> otroProducto=listaProductos.iterator();
while(otroProducto.hasNext()){
otroProducto.next().mostrarInformacion();
}
System.out.println("\nFin lista");
}
}
Un saludo