41
C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más / Diferencia entre polimorfismo y herencia Java programación orientada ob CU00688B
« en: 11 de Noviembre 2018, 12:30 »
Hola. Dejo el Ejercicio. CU00688B del curso de programación básica Java de aprenderaprogramar. Entrega: Concepto de polimorfismo y variables polimórficas en Java. Jerarquía de tipos.
Modulo de la clase TestHerencia4.
Modulo de la Clase EnvioDeProductos.
Modulo de la clase Productos
SubClase TemperaturaManteni de la SuperClase Productos
SubClase ProductoFresco extends TemperatManteni de la SuperClase Productos
SubClase Productos Refrigerados de la SuperClase Productos .
SubClase Productos Congelados de la SuperClase Productos
SubClase CongeladoPorAire extends SubClase ProductoCongelado de la SuperClase Productos
SubClase CongeladoPorAgua extends SubClase ProductoCongelado de la SuperClase Productos
SubClase CongeladoPorNitrogeno extends SubClase ProductoCongelado de la SuperClase Productos
Gracias.
Un saludo
Modulo de la clase TestHerencia4.
Código: [Seleccionar]
/**
*Modulo de la clase TestHerencia4.
* Esta clase crea los objetos y los llena de datos.
* Crea una lista de envio y la llena con los datos de la clase Productos.
* Luego llama al modulo de la clase EnvioDeProductos
* @author (paramonso)
* @version (ver.1 // 11/11/2018)
*/
public class TestHerencia4
{
public static void main (String [] args){
//Variable para separar listados
String separador = new String(new char[125]).replace("\0", "*");
//Crear lista de envios
EnvioDeProductos listaEnvioProductos=new EnvioDeProductos();
//Crear los objetos
ProductoFresco productoFrescoA = new ProductoFresco("Patatas","15-1-2019","PA25421",5,"12-4-2018","España");
ProductoFresco productoFrescoB = new ProductoFresco("Cebollas","15-2-2019","CE25325",5,"12-5-2018","Francia");
ProductoRefrigerado productoRefrigradoA = new ProductoRefrigerado ("Merluza","15-10-2019","AS26453",1,"OSA2020" );
ProductoRefrigerado productoRefrigradoB = new ProductoRefrigerado ("Sardinas","22-01-2019","AS26454",1,"OSA2018" );
ProductoRefrigerado productoRefrigradoC = new ProductoRefrigerado ("Mejillon","12-06-2019","AS26455",1,"OSA2032" );
CongeladoPorAgua productoPorAguaA = new CongeladoPorAgua ("Patata Prefrita","15-02-2021","AS25953",5,-25,5);
CongeladoPorAgua productoPorAguaB = new CongeladoPorAgua ("Cebolla Cortada","18-12-2021","AS25965",5,-25,5);
CongeladoPorAire productoPorAireA = new CongeladoPorAire ("Sepia Extra","15-11-2025","AS25853",-15,-25,5,8,12,25);
CongeladoPorAire productoPorAireB = new CongeladoPorAire ("Anillas Calamar","15-11-2025","AS25853",-15,-25,5,8,12,25);
CongeladoPorNitrogeno productoPorNitroA = new CongeladoPorNitrogeno ("Helado Fresa","15-12-2025","AS25453",5,-25,"Comprimido",5);
//Añadir a la lista
listaEnvioProductos.addListaEnvio(productoFrescoA);listaEnvioProductos.addListaEnvio(productoFrescoB);
listaEnvioProductos.addListaEnvio(productoRefrigradoA);listaEnvioProductos.addListaEnvio(productoRefrigradoB);
listaEnvioProductos.addListaEnvio(productoRefrigradoC);
listaEnvioProductos.addListaEnvio(productoPorAguaA);listaEnvioProductos.addListaEnvio(productoPorAguaB);
listaEnvioProductos.addListaEnvio(productoPorAireA);listaEnvioProductos.addListaEnvio(productoPorAireB);
listaEnvioProductos.addListaEnvio(productoPorNitroA);
//Presentar el tamaño de la lista
System.out.println("Número de productos en el envio: "+listaEnvioProductos.getListaProductos().size());
// Presentar en pantalla los productos de la lista
listaEnvioProductos.mostrarDatosEnvio();
}
}
Modulo de la Clase EnvioDeProductos.
Código: [Seleccionar]
/**
* Modulo de la clase EnvioDeProductos.
* En esta clase se crea la lista y se llena con los productos.
*
* @author (paramonso)
* @version (ver.1 // 11/11/2018)
*/
import java.util.*;
public class EnvioDeProductos
{
private LinkedList<Productos> listaProductos;
public EnvioDeProductos()
{
listaProductos = new LinkedList<Productos>();
}
public LinkedList getListaProductos(){return listaProductos;}
public void setListaProductos(LinkedList listaProductos){this.listaProductos=listaProductos;}
public LinkedList addListaEnvio(Productos producto){
listaProductos.add(producto);
return listaProductos;
}
/** Aqui esta el iterator para llamar a las demas clases atraves de la clase Productos,
* en la cual se produce el polimorfismo en el procedimiento presentarDatos().
* Al llevar todas las clases el procedimiento presentarDatos() en Productos datos=it.next se copia la clase
* que contiene los datos la lista y al llamar a dato.presentarDatos() se produce el polimorfismo.??????
*/
public void mostrarDatosEnvio(){
Iterator <Productos> it = listaProductos.iterator();
int i=1;
while(it.hasNext()){
Productos dato = it.next();
System.out.println ("PRODUCTO Nº : "+i);
dato.presentarDatos();
String separador = new String(new char[125]).replace("\0", "*");
System.out.println ( separador);
i++;
}
}
}
Modulo de la clase Productos
Código: [Seleccionar]
/**
* Modulo de la clase Productos
*Gestión de una empresa agroalimentaria que
*trabaja con tres tipos de productos: productos frescos,
*productos refrigerados y productos congelados (Congelados por agua,Congelados por Arie, Congelados por Nitrogeno).
*
* @author Pablo Ramón Pérez Blasco "paramonso"
* @version (1.0 - 11/11/2018)
*/
public class Productos
{
// instance variables - replace the example below with your own
public String nombre;
public String fechaCaducidad;
public String numeroLote;
/**
* Constructor for objects of class Producto
*/
public Productos(String nombre,String fechaCaducidad,String numeroLote)
{
this.nombre=nombre;
this.fechaCaducidad = fechaCaducidad;
this.numeroLote=numeroLote;
}
public String getNombre() {return nombre; }
public String getFechaCaducidad() { return fechaCaducidad; }
public String getNumeroLote(){return numeroLote;}
public void setNombre (String nombre) {
this.nombre = nombre;
}
public void setFechaCaducidad (String fechaCaducidad ) {
this.fechaCaducidad = fechaCaducidad;
} //Cierre del metodo
public void setNumeroLote (String numeroLote ) {
this.numeroLote = numeroLote;
} //
//POLIMORFISMO presentarDatos()
public void presentarDatos(){
String datos="PRODUCTO\n";
datos=datos+"Nombre: " + getNombre() + " Fecha de Caducidad: " + getFechaCaducidad() +
"Nº Lote: " + getNumeroLote();
System.out.println(datos);
}
}
SubClase TemperaturaManteni de la SuperClase Productos
Código: [Seleccionar]
/**
* SubClase TemperaturaManteni de la SuperClase Productos
* Temperatura de mantenimiento de los productos Frescos, Refrigerados y Congelados
* @author (Pablo Ramón Pérez Blasco "paramonso")
* @version (1.0 - 11/11/2018)
*
*
*/
public class TemperatManteni extends Productos
{
public int tempMant ;
/**
* Constructor para los objetos de la clase ProductosFrescos
*/
public TemperatManteni(String nombre,String fechaCaducidad,String numeroLote,int tempMant)
{ super(nombre,fechaCaducidad ,numeroLote);
this. tempMant = tempMant;
}
public int getTempMant() { return tempMant; }
public void setTempMant (int tempMant) {
this. tempMant = tempMant;
} //Cierre del metodo
//POLIMORFISMO presentarDatos()
public void presentarDatos(){
String datos="TEMPERATURA MANTENIMIENTO\n";
datos=datos+"Temperatura Mantenimiento : " + getTempMant()+"ºC";
System.out.println(datos);
}
}
SubClase ProductoFresco extends TemperatManteni de la SuperClase Productos
Código: [Seleccionar]
/**
* SubClase productos frescos de la SuperClase Productos
* @author (Pablo Ramón Pérez Blasco "paramonso")
* @version (1.0 - 11/11/2018)
*/
public class ProductoFresco extends TemperatManteni
{
public String fechaEnvasado;
public String paisOrigen;
/**
* Constructor para los objetos de la clase ProductosFrescos
*/
public ProductoFresco(String nombreProducto,String fechaCaducidad,String numeroLote,int temperaturaMantenimiento,String fechaEnvasado,String paisOrigen )
{ super(nombreProducto, fechaCaducidad ,numeroLote,temperaturaMantenimiento);
this.fechaEnvasado = fechaEnvasado;
this.paisOrigen=paisOrigen;
}
public String getFechaEnvasado() { return fechaEnvasado; }
public String getPaisOrigen(){return paisOrigen;}
public void setFechaEnvasado ( ) {
this.fechaEnvasado = fechaEnvasado;
} //Cierre del metodo
public void setPaisOrigen ( ) {
this.paisOrigen = paisOrigen;
} //
//POLIMORFISMO presentarDatos()
public void presentarDatos() {
String datos="PRODUCTOS FRESCOS\n";
datos=datos+"Nombre Producto: "+this.nombre+" | "+
"Fecha Caducidad : "+this.getFechaCaducidad()+" | "+
"Nº Lote : "+this.getNumeroLote()+" | "+
"Tem.Mant. : "+this. getTempMant()+"ºC | "+
"F.Envasado :"+ this.getFechaEnvasado()+" | "+
"Pais Origen : "+ this.getPaisOrigen()+"\n";
System.out.print(datos);
}
}
SubClase Productos Refrigerados de la SuperClase Productos .
Código: [Seleccionar]
/**
* SubClase Productos Refrigerados de la SuperClase Productos .
* @author (Pablo Ramón Pérez Blasco "paramonso")
* @version (1.0 - 11/11/2018)
*/
public class ProductoRefrigerado extends TemperatManteni
{
public String codigoOSA; //codigoOSA ==> codigo Organismo Supervision Alimentaria
/**
* Constructor para los objetos de la clase ProductosRefrigerados
*/
public ProductoRefrigerado(String nombre,String fechaCaducidad,String numeroLote,int tempMant,String codigoOSA )
{super(nombre,fechaCaducidad ,numeroLote,tempMant);
this. codigoOSA = codigoOSA;
}
public String getCodigoOSA() { return codigoOSA; }
public void setCodigoOSA (String codogoOSA ) {
this.codigoOSA = codigoOSA;
} //Cierre del método
//POLIMORFISMO presentarDatos()
public void presentarDatos() {
String datos="PRODUCTOS REFRIGERADOS\n";
datos=datos+"Nombre Producto: "+this.nombre+" | "+
"Fecha Caducidad : "+this.getFechaCaducidad()+" | "+
"Nº Lote : "+this.getNumeroLote()+" | "+
"Tem.Mant. : "+this. getTempMant()+"ºC | "+
"Codigo OSA:"+ this.getCodigoOSA()+"\n";
System.out.print(datos);
}
}
SubClase Productos Congelados de la SuperClase Productos
Código: [Seleccionar]
/**
* SubClase Productos Congelados de la SuperClase Productos
* @author (Pablo Ramón Pérez Blasco "paramonso")
* @version (1.0 - 11/11/2018)
*/
public class ProductoCongelado extends TemperatManteni
{
public int temperaturaCongelacion ;
/**
* Constructor para los objetos de la clase ProductosCongelados
*/
public ProductoCongelado(String nombre,String fechaCaducidad,String numeroLote,int tempMant,int temperaturaCongelacion)
{ super(nombre,fechaCaducidad ,numeroLote,tempMant);
this. temperaturaCongelacion = temperaturaCongelacion;
}
public int getTemperaturaCongelacion(){ return temperaturaCongelacion;}
public void setTemperaturaCongelacion(int temperaturaCongelacion){
this.temperaturaCongelacion=temperaturaCongelacion;
}
}
SubClase CongeladoPorAire extends SubClase ProductoCongelado de la SuperClase Productos
Código: [Seleccionar]
/**
* SubClase CongeladoPorAire extends SubClase ProductoCongelado de la SuperClase Productos
* @author (Pablo Ramón Pérez Blasco "paramonso")
* @version (1.0 - 11/11/2018)
*
*
*/
public class CongeladoPorAire extends ProductoCongelado
{
int porcentNitrogeno;
int porcentOxigeno;
int porcentDioxidoCarbono;
int porcentVaporAgua;
/**
* Constructor for objects of class CongeladosPorAire
*/
public CongeladoPorAire(String nombreProducto,String fechaCaducidad,
String numeroLote,int tempMant,int temperaturaCongelacion,
int porcentNitrogeno,int porcentOxigeno,int porcentDioxidoCarbono,int porcentVaporAgua)
{
super(nombreProducto,fechaCaducidad ,numeroLote,tempMant,temperaturaCongelacion);
this.porcentNitrogeno=porcentNitrogeno;
this.porcentOxigeno=porcentOxigeno;
this.porcentDioxidoCarbono=porcentDioxidoCarbono;
this.porcentVaporAgua=porcentVaporAgua;
}
public int getporcentNitrogeno(){ return porcentNitrogeno;}
public int getPorcentOxigeno(){ return porcentOxigeno;}
public int getPorcentDioxidoCarbono(){ return porcentDioxidoCarbono;}
public int getPorcentVaporAgua(){ return porcentVaporAgua;}
public void setporcentNitrogeno(){this. porcentNitrogeno= porcentNitrogeno;}
public void setPorcentOxigeno(){this. porcentNitrogeno= porcentOxigeno;}
public void setPorcentDioxidoCarbono(){this. porcentDioxidoCarbono= porcentDioxidoCarbono;}
public void setPorcentVaporAgua(){this. porcentNitrogeno= porcentVaporAgua;}
//POLIMORFISMO presentarDatos()
public void presentarDatos() {
// La variable datos se inicializa vacia en el metodo para que no se cargen las entradas anteriores en la variable
String datos="CONGELADOS POR AIRE\n";
datos=datos+"Nombre: "+this.nombre +" | "+
"Fecha Cadu.: "+this.getFechaCaducidad()+" | "+
"Nº Lote: "+this.getNumeroLote()+" | "+
"Temp.Mant.: "+this.getTempMant ()+"ºC | "+
"Temp. Conge.:"+ this.getTemperaturaCongelacion()+"ºC | "+
"\n% de Nitrogeno: "+ this.getporcentNitrogeno()+"% | "+
"% de Oxigeno: "+ this.getPorcentOxigeno()+"% | "+
"% de Dioxido Carbono:"+ this.getPorcentDioxidoCarbono()+"% | "+
"% de Vapor Agua: "+ this.getPorcentVaporAgua()+"%";
System.out.println(datos);
}
}
SubClase CongeladoPorAgua extends SubClase ProductoCongelado de la SuperClase Productos
Código: [Seleccionar]
/**
* SubClase CongeladoPorAgua extends SubClase ProductoCongelado de la SuperClase Productos
* @author (Pablo Ramón Pérez Blasco "paramonso")
* @version (1.0 - 11/11/2018)
*
*
*/
public class CongeladoPorAgua extends ProductoCongelado
{
// instance variables - replace the example below with your own
public int salinidadDelAgua;
/**
* Constructor for objects of class CongeladosPorAgua
*/
public CongeladoPorAgua(String nombreProducto,String fechaCaducidad,
String numeroLote,int tempMant,
int temperaturaCongelacion,int salinidadDelAgua)
{super(nombreProducto,fechaCaducidad ,numeroLote,tempMant,temperaturaCongelacion);
this.salinidadDelAgua=salinidadDelAgua;
}
public int getSalinidadDelAgua(){ return salinidadDelAgua;}
public void setSalinidadDelAgua(){
this.salinidadDelAgua=salinidadDelAgua;
}
//POLIMORFISMO presentarDatos()
public void presentarDatos() {
// La variable datos se inicializa vacia en el metodo para que no se cargen las entradas anteriores en la variable
String datos="CONGELADOS POR AGUA\n"+
"Nombre: "+this.getNombre()+" | "+
"Fecha Caducidad: "+this.getFechaCaducidad()+" | "+
"Nº Lote : "+this.getNumeroLote()+" | "+
"Tem.Mant.: "+this.getTempMant()+"ºC | "+
"Temperatura Conge. :"+ this.getTemperaturaCongelacion()+"ºC | "+
"\nSalinidad gr. x l. :"+ this.getSalinidadDelAgua()+"gr.l\n";
System.out.print(datos);
}
}
SubClase CongeladoPorNitrogeno extends SubClase ProductoCongelado de la SuperClase Productos
Código: [Seleccionar]
/**
* SubClase CongeladoPorNitrogeno extends SubClase ProductoCongelado de la SuperClase Productos
* @author (Pablo Ramón Pérez Blasco "paramonso")
* @version (1.0 - 11/11/2018)
*
*
*/
public class CongeladoPorNitrogeno extends ProductoCongelado
{
String metodoCongelacion;
int tiempoExpoAlNitrogeno;
/*
* Constructor for objects of class CongeladosPorNitrogeno
*/
public CongeladoPorNitrogeno(String nombreProducto,String fechaCaducidad,
String numeroLote,int tempMant,int temperaturaCongelacion,
String metodoCongelacion,int tiempoExpoAlNitrogeno)
{
super(nombreProducto,fechaCaducidad ,numeroLote,tempMant,temperaturaCongelacion);
this.metodoCongelacion=metodoCongelacion;
this.tiempoExpoAlNitrogeno=tiempoExpoAlNitrogeno;
}
public String getMetodoCongelacion(){ return metodoCongelacion;}
public int getTiempoExpoAlNitrogeno(){ return tiempoExpoAlNitrogeno;}
public void setMetodoCongelacion(){ this.metodoCongelacion=metodoCongelacion;}
public void setTiempoExpoAlNitrogeno(){this.tiempoExpoAlNitrogeno= tiempoExpoAlNitrogeno;}
//POLIMORFISMO presentarDatos()
public void presentarDatos(){
// La variable datos se inicializa vacia en el metodo para que no se cargen las entradas anteriores en la variable
String datos="CONGELADOS POR NITROGENO\n";
datos=datos+"Nombre: "+this.nombre+" | "+
"Fecha Cadu.: "+this.getFechaCaducidad()+" | "+
"Nº Lote: "+this.getNumeroLote()+" | "+
"Temp.Mant.: "+this.getTempMant()+"ºC| "+
"Temp. Conge.:"+ this.getTemperaturaCongelacion()+"ºC | "+
"\nMetodo Conge: "+ this.getMetodoCongelacion()+" | "+
"Segun. Exp.al Nitro: "+ this.getTiempoExpoAlNitrogeno()+"seg.\n";
System.out.print(datos);
}
}
Gracias.
Un saludo
![Gui�ar ;)](https://aprenderaprogramar.com/foros/Smileys/default/wink.gif)