Hola a todos, les dejo el código del ejercicio:
Clase EnvioDeProductos
package aprenderaprogramar.java.iniciacion.clase88;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class EnvioDeProductos {
private List<Producto> envio;
// Constructores
EnvioDeProductos(){
envio = new ArrayList<Producto>();
}
// Métodos
public void añadirProdEnvio(Producto item){
envio.add(item);
}
public boolean existeProdEnvio(Producto item){
return envio.contains(item);
}
public void reemplazaProdEnvio(int index,Producto item){
envio.set(index, item);
}
public void borrarEnvio(){
envio.clear();
}
public int posicionProdEnvio(Producto item){
return envio.indexOf(item);
}
public void borrarProdEnvio(Producto item){
envio.remove(item);
}
public void borrarPosicionProdEnvio(int index){
envio.remove(index);
}
public int tamañoEnvio(){
return envio.size();
}
public void ListarProdEnvio(){
Iterator<Producto> iter = envio.iterator();
System.out.println ("Los productos del envío son: ");
Producto tmpProdEnvio;;
while(iter.hasNext()){
tmpProdEnvio = iter.next();
System.out.println(tmpProdEnvio.toString());
}// end while
}//end method
}// end class
Clase TestHerencia4
package aprenderaprogramar.java.iniciacion.clase88;
import java.time.LocalDate;
public class TestHerencia4 {
public static void main(String[] args) {
// Crear envío
EnvioDeProductos envio1 = new EnvioDeProductos();
envio1.añadirProdEnvio(new ProductoFresco("fresco1234",LocalDate.of(2017,3,15), LocalDate.of(2016,1,10),"Portugal"));
envio1.añadirProdEnvio(new ProductoFresco("fresco5678",LocalDate.of(2016,8,15), LocalDate.of(2016,1,10),"España"));
envio1.añadirProdEnvio(new ProductoRefrigerado("refrig0010",LocalDate.of(2016,6,20),LocalDate.of(2016,2,21),"Alemania","-8\u00b0C","AWD8945"));
envio1.añadirProdEnvio(new ProductoRefrigerado("refrig0020",LocalDate.of(2016,7,20),LocalDate.of(2016,3,21),"Alemania","-8\u00b0C","AWD8945"));
envio1.añadirProdEnvio(new ProductoRefrigerado("refrig0030",LocalDate.of(2016,8,20),LocalDate.of(2016,4,21),"Alemania","-8\u00b0C","AWD8945"));
envio1.añadirProdEnvio(new ProductoCongeladoAire("congel1100",LocalDate.of(2018,8,30),LocalDate.of(2016,8,31),"Brasil","-25\u00b0C","Aire","","","",""));
envio1.añadirProdEnvio(new ProductoCongeladoAire("congel1100",LocalDate.of(2018,10,30),LocalDate.of(2016,10,31),"Brasil","-25\u00b0C","Aire","","","",""));
envio1.añadirProdEnvio(new ProductoCongeladoAgua("congel2200",LocalDate.of(2019,6,30),LocalDate.of(2016,6,30),"Noruega","-20\u00b0C","Agua","0.9"));
envio1.añadirProdEnvio(new ProductoCongeladoAgua("congel2200",LocalDate.of(2019,4,30),LocalDate.of(2016,4,30),"Noruega","-20\u00b0C","Agua","0.85"));
envio1.añadirProdEnvio(new ProductoCongeladoNitrogeno("congel3300",LocalDate.of(2020,11,30),LocalDate.of(2016,11,30),"Finlandia","-30\u00b0C","Nitrógeno","IQF","20"));
// Muestro el total de productos del envío y el detalle de los mismos
System.out.println("envio1 está compuesto por "+envio1.tamañoEnvio()+" productos.");
envio1.ListarProdEnvio();
}// end main method
}// end class
Clase Producto
package aprenderaprogramar.java.iniciacion.clase88;
import java.time.LocalDate;
public class Producto {
private String lote;
private LocalDate fechaCaducidad;
private LocalDate fechaEnvasado;
private String paisOrigen;
// Constructores
Producto(){
lote = "";
fechaCaducidad = null;
fechaEnvasado = null;
paisOrigen = "";
}
Producto(String lote, LocalDate fechaCaducidad, LocalDate fechaEnvasado, String paisOrigen){
this.lote = lote;
this.fechaCaducidad = fechaCaducidad;
this.fechaEnvasado = fechaEnvasado;
this.paisOrigen = paisOrigen;
}
// Métodos
public String getLote() {
return lote;
}
public void setLote(String lote) {
this.lote = lote;
}
public LocalDate getFechaCaducidad() {
return fechaCaducidad;
}
public void setFechaCaducidad(LocalDate fechaCaducidad) {
this.fechaCaducidad = fechaCaducidad;
}
public LocalDate getFechaEnvasado() {
return fechaEnvasado;
}
public void setFechaEnvasado(LocalDate fechaEnvasado) {
this.fechaEnvasado = fechaEnvasado;
}
public String getPaisOrigen() {
return paisOrigen;
}
public void setPaisOrigen(String paisOrigen) {
this.paisOrigen = paisOrigen;
}
public String toString(){
String string ="Este es un objeto Producto, su número de Lote es '"+getLote()+"' y su Fecha de caducidad es '"+getFechaCaducidad()+
"'\nsu fecha de Envasado es '"+getFechaEnvasado()+"' y su Pais de Origen es '"+getPaisOrigen()+"'.";
return string;
}// end toString method
}// end class
El resto de clases son las mismas del ejercicio anterior.
Les agradeceré cualquier corrección o aclaración técnica...