Hola
Aquí dejo la resolución al ejercicio CU00687B del taller de programación en Java con el IDE BlueJ sobre la herencia.
Primero muestro el diagrama de clases resultante
A continuación expongo el código fuente:
Clase encargada de realizar el test de la aplicación
package test;
import aplicacion.*;
public class TestHerencia3 {
public static void main(String[] args){
//Creo 2 productos frescos
ProductoFresco pf1 = new ProductoFresco("23/12/2017", 200, "12/03/2017", "EEUU");
ProductoFresco pf2 = new ProductoFresco("12/10/2017", 150, "24/06/2017", "Brasil");
//Creo 3 productos refrigerados
ProductoRefrigerado pr1 = new ProductoRefrigerado("20/11/2018", 456, "22/02/2017", "España", 22, 32);
ProductoRefrigerado pr2 = new ProductoRefrigerado("14/09/2019", 303, "18/09/2018", "Alemania", 14, 50);
ProductoRefrigerado pr3 = new ProductoRefrigerado("05/07/2020", 105, "16/06/2018", "Francia", 48, 85);
//Creo 5 productos congelados
ProductoCongelado fc1 = new ProductoCongelado("11/09/2022", 184, "04/05/2017", "China", -30);
ProductoCongelado fc2 = new ProductoCongelado("15/05/2025", 208, "04/05/2017", "Mexico", -28);
ProductoCongelado fc3 = new ProductoCongelado("20/04/2024", 302, "04/05/2017", "Ecuador", -29);
ProductoCongelado fc4 = new ProductoCongelado("30/03/2023", 650, "04/05/2017", "Tailandia", -27);
ProductoCongelado fc5 = new ProductoCongelado("26/01/2021", 985, "04/05/2017", "India", -26);
//Creo 2 productos congelados por agua
CongeladoAgua ca1 = new CongeladoAgua("13/06/2020", 656, "31/04/2017", "Portugal", -25, 4);
CongeladoAgua ca2 = new CongeladoAgua("24/08/2024", 987, "06/09/2017", "Italia", -26, 8);
//Creo 2 productos congelados por aire
CongeladoAire caire1 = new CongeladoAire("25/08/2022", 854, "14/11/2017", "Puerto Rico", -30, "4");
CongeladoAire caire2 = new CongeladoAire("15/12/2023", 854, "10/08/2017", "Egipto", -28, "3");
//Creo 1 producto congelado por nitrogeno
CongeladoNitrogeno cn1 = new CongeladoNitrogeno("25/04/2026", 741, "05/04/2017", "Guatemala", -35, "info", 50);
//Salida por pantalla
System.out.println("Productos frescos: ");
System.out.println("Esta es la información del producto fresco 1: "+pf1.toString());
System.out.println("Esta es la información del producto fresco 2: "+pf2.toString());
System.out.println("Productos refrigerados: ");
System.out.println("Esta es la información del producto refrigerado 1: "+pr1.toString());
System.out.println("Esta es la información del producto refrigerado 2: "+pr2.toString());
System.out.println("Esta es la información del producto refrigerado 3: "+pr3.toString());
System.out.println("Productos congelados: ");
System.out.println("Esta es la información del producto congelado 1: "+fc1.toString());
System.out.println("Esta es la información del producto congelado 2: "+fc2.toString());
System.out.println("Esta es la información del producto congelado 3: "+fc3.toString());
System.out.println("Esta es la información del producto congelado 4: "+fc4.toString());
System.out.println("Esta es la información del producto congelado 5: "+fc5.toString());
System.out.println("Productos congelados por agua: ");
System.out.println("Esta es la información del producto congelado por agua 1: "+ca1.toString());
System.out.println("Esta es la información del producto congelado por agua 2: "+ca2.toString());
System.out.println("Productos congelados por aire: ");
System.out.println("Esta es la información del producto congelado por aire 1: "+caire1.toString());
System.out.println("Esta es la información del producto congelado por aire 2: "+caire2.toString());
System.out.println("Productos congelados por nitrogeno: ");
System.out.println("Esta es la información del producto congelado por nitrogeno 1: "+cn1.toString());
}
}
Superclase Producto
package aplicacion;
/**
* Superclase Producto
* @author David
*
*/
public class Producto {
private String fechaCaducidad;
private int numeroLote;
public Producto(){
}
//Constructor sobrecargado
public Producto(String fechaCaducidad,int numeroLote){
this.fechaCaducidad = fechaCaducidad;
this.numeroLote = numeroLote;
}
//Getters and Setters
public String getFechaCaducidad(){
return fechaCaducidad;
}
public void setFechaCaducidad(String valorFechaCaducidad){
fechaCaducidad = valorFechaCaducidad;
}
public int getNumeroLote(){
return numeroLote;
}
public void setNumeroLote(int valorNumeroLote){
numeroLote = valorNumeroLote;
}
//Método toString sobrecargado
public String toString(){
return "Fecha de caducidad: "+fechaCaducidad+" //Número de lote: "+numeroLote;
}
}
Subclase ProductoFresco que extiende de Producto
package aplicacion;
/**
* Subclase ProductoFresco que extiende de Producto
* @author David
*
*/
public class ProductoFresco extends Producto{
private String fechaEnvasado;
private String paisOrigen;
//Constructor sobrecargado
public ProductoFresco(String fechaCaducidad, int numeroLote, String fechaEnvasado, String paisOrigen){
super(fechaCaducidad,numeroLote);
this.fechaEnvasado = fechaEnvasado;
this.paisOrigen = paisOrigen;
}
//Getters and Setters
public String getFechaEnvasado() {
return fechaEnvasado;
}
public void setFechaEnvasado(String fechaEnvasado) {
this.fechaEnvasado = fechaEnvasado;
}
public String getPaisOrigen() {
return paisOrigen;
}
public void setPaisOrigen(String paisOrigen) {
this.paisOrigen = paisOrigen;
}
//Método toString sobrecargado
public String toString(){
return "Fecha de caducidad: "+getFechaCaducidad()+" //Número de lote: "+getNumeroLote()+" //Fecha de envasado: "+fechaEnvasado+" País origen: "+paisOrigen;
}
}
Subclase ProductoRefrigerado
package aplicacion;
/**
* Subclase ProductoRefrigerado que extiende de la clase ProductoFresco
* @author David
*
*/
public class ProductoRefrigerado extends ProductoFresco {
private int codigoOrganismo;
private double temperaturaMantenimiento;
//Constructor sobrecargado
public ProductoRefrigerado(String fechaCaducidad, int numeroLote, String fechaEnvasado, String paisOrigen,int temperaturaMantenimiento,int codigoOrganismo){
super(fechaCaducidad, numeroLote,fechaEnvasado,paisOrigen);
this.codigoOrganismo = codigoOrganismo;
this.temperaturaMantenimiento = temperaturaMantenimiento;
}
//Getters and Setters
public int getCodigoOrganismo() {
return codigoOrganismo;
}
public void setCodigoOrganismo(int codigoOrganismo) {
this.codigoOrganismo = codigoOrganismo;
}
public double getTemperaturaMantenimiento() {
return temperaturaMantenimiento;
}
public void setTemperaturaMantenimiento(double temperaturaMantenimiento) {
this.temperaturaMantenimiento = temperaturaMantenimiento;
}
//Método toString sobrecargado
public String toString(){
return "Fecha de envasado: "+getFechaEnvasado()+" //Pais de origen: "+getPaisOrigen()+" //Fecha de caducidad: "+getFechaCaducidad()+" //Número de lote: "+getNumeroLote()+" //Temperatura de mantenimiento: "+temperaturaMantenimiento+" //Código organimo: "+codigoOrganismo;
}
}
Superclase ProductoCongelado que extiende a su vez de la superclase Producto
package aplicacion;
/**
* Subclase ProductoCongelado que extiende de ProductoFresco
* @author David
*
*/
public class ProductoCongelado extends ProductoFresco {
private int temperaturaMantenimiento;
//Constructor sobrecargado
public ProductoCongelado(String fechaCaducidad, int numeroLote, String fechaEnvasado, String paisOrigen,int temperaturaMantenimiento){
super(fechaCaducidad,numeroLote,fechaEnvasado,paisOrigen);
this.temperaturaMantenimiento = temperaturaMantenimiento;
}
//Getters and Setters
public int getTemperaturaMantenimiento() {
return temperaturaMantenimiento;
}
public void setTemperaturaMantenimiento(int temperaturaMantenimiento) {
this.temperaturaMantenimiento = temperaturaMantenimiento;
}
//Método toString sobrecargado
public String toString(){
return "Fecha de envasado: "+getFechaEnvasado()+" //Pais de origen: "+getPaisOrigen()+" //Fecha de caducidad: "+getFechaCaducidad()+" //Número de lote: "+getNumeroLote()+" //Temperatura de mantenimiento: "+temperaturaMantenimiento;
}
}
Subclase CongeladoAgua que extiende de ProductoCongelado
package aplicacion;
/**
* Subclase CongeladoAgua que extiende de ProductoCongelado
* @author David
*
*/
public class CongeladoAgua extends ProductoCongelado{
private int salinidadAgua;
//Constructor sobrecargado
public CongeladoAgua(String fechaCaducidad, int numeroLote, String fechaEnvasado, String paisOrigen,int temperaturaMantenimiento,int salinidadAgua){
super(fechaCaducidad,numeroLote,fechaEnvasado,paisOrigen,temperaturaMantenimiento);
this.salinidadAgua = salinidadAgua;
}
//Getters and Setters
public int getSalinidadAgua() {
return salinidadAgua;
}
public void setSalinidadAgua(int salinidadAgua) {
this.salinidadAgua = salinidadAgua;
}
//Método toString sobrecargado
public String toString(){
return "Fecha de caducidad: "+getFechaCaducidad()+" //Número de lote: "+getNumeroLote()+" //Fecha envasado: "+getFechaEnvasado()+" //País origen: "+getPaisOrigen()+" //Temperatura mantenimiento: "+getTemperaturaMantenimiento()+" //Salinidad agua: "+salinidadAgua;
}
}
Subclase CongeladoAire que extiende de ProductoCongelado
package aplicacion;
/**
* Subclase CongeladoAire que extiende de ProductoCongelado
* @author David
*
*/
public class CongeladoAire extends ProductoCongelado{
private String composicionAire;
//Constructor sobrecargado
public CongeladoAire(String fechaCaducidad, int numeroLote, String fechaEnvasado, String paisOrigen,int temperaturaMantenimiento,String composicionAire){
super(fechaCaducidad,numeroLote,fechaEnvasado,paisOrigen,temperaturaMantenimiento);
this.composicionAire = composicionAire;
}
//Getters and Setters
public String getComposicionAire() {
return composicionAire;
}
public void setComposicionAire(String composicionAire) {
this.composicionAire = composicionAire;
}
//Método toString sobrecargado
public String toString(){
return "Fecha de caducidad: "+getFechaCaducidad()+" //Número de lote: "+getNumeroLote()+" //Fecha envasado: "+getFechaEnvasado()+" //País origen: "+getPaisOrigen()+" //Temperatura mantenimiento: "+getTemperaturaMantenimiento()+" //Composición del aire: "+composicionAire;
}
}
Subclase CongeladoNitrogeno que extiende de ProductoCongelado
package aplicacion;
/**
* Subclase CongeladoNitrogeno que extiende de ProductoCongelado
* @author David
*
*/
public class CongeladoNitrogeno extends ProductoCongelado{
private String informacionMetodoCongelacion;
private int tiempoEsposicion;
//Constructor sobrecargado
public CongeladoNitrogeno(String fechaCaducidad, int numeroLote, String fechaEnvasado, String paisOrigen,int temperaturaMantenimiento,String informacionMetodoCongelacion,int tiempoEsposicion){
super(fechaCaducidad,numeroLote,fechaEnvasado,paisOrigen,temperaturaMantenimiento);
this.informacionMetodoCongelacion = informacionMetodoCongelacion;
this.tiempoEsposicion = tiempoEsposicion;
}
//Getters and Setters
public String getInformacionMetodoCongelacion() {
return informacionMetodoCongelacion;
}
public void setInformacionMetodoCongelacion(String informacionMetodoCongelacion) {
this.informacionMetodoCongelacion = informacionMetodoCongelacion;
}
public int getTiempoEsposicion() {
return tiempoEsposicion;
}
public void setTiempoEsposicion(int tiempoEsposicion) {
this.tiempoEsposicion = tiempoEsposicion;
}
//Método toString sobrecargado
public String toString(){
return "Fecha de caducidad: "+getFechaCaducidad()+" //Número de lote: "+getNumeroLote()+" //Fecha envasado: "+getFechaEnvasado()+" //País origen: "+getPaisOrigen()+" //Temperatura mantenimiento: "+getTemperaturaMantenimiento()+" //Información sobre el método de congelación: "+informacionMetodoCongelacion+" //Tiempo de exposicion: "+tiempoEsposicion;
}
}
Ejecución del programa
Productos frescos:
Esta es la información del producto fresco 1: Fecha de caducidad: 23/12/2017 //Número de lote: 200 //Fecha de envasado: 12/03/2017 País origen: EEUU
Esta es la información del producto fresco 2: Fecha de caducidad: 12/10/2017 //Número de lote: 150 //Fecha de envasado: 24/06/2017 País origen: Brasil
Productos refrigerados:
Esta es la información del producto refrigerado 1: Fecha de envasado: 22/02/2017 //Pais de origen: España //Fecha de caducidad: 20/11/2018 //Número de lote: 456 //Temperatura de mantenimiento: 22.0 //Código organimo: 32
Esta es la información del producto refrigerado 2: Fecha de envasado: 18/09/2018 //Pais de origen: Alemania //Fecha de caducidad: 14/09/2019 //Número de lote: 303 //Temperatura de mantenimiento: 14.0 //Código organimo: 50
Esta es la información del producto refrigerado 3: Fecha de envasado: 16/06/2018 //Pais de origen: Francia //Fecha de caducidad: 05/07/2020 //Número de lote: 105 //Temperatura de mantenimiento: 48.0 //Código organimo: 85
Productos congelados:
Esta es la información del producto congelado 1: Fecha de envasado: 04/05/2017 //Pais de origen: China //Fecha de caducidad: 11/09/2022 //Número de lote: 184 //Temperatura de mantenimiento: -30
Esta es la información del producto congelado 2: Fecha de envasado: 04/05/2017 //Pais de origen: Mexico //Fecha de caducidad: 15/05/2025 //Número de lote: 208 //Temperatura de mantenimiento: -28
Esta es la información del producto congelado 3: Fecha de envasado: 04/05/2017 //Pais de origen: Ecuador //Fecha de caducidad: 20/04/2024 //Número de lote: 302 //Temperatura de mantenimiento: -29
Esta es la información del producto congelado 4: Fecha de envasado: 04/05/2017 //Pais de origen: Tailandia //Fecha de caducidad: 30/03/2023 //Número de lote: 650 //Temperatura de mantenimiento: -27
Esta es la información del producto congelado 5: Fecha de envasado: 04/05/2017 //Pais de origen: India //Fecha de caducidad: 26/01/2021 //Número de lote: 985 //Temperatura de mantenimiento: -26
Productos congelados por agua:
Esta es la información del producto congelado por agua 1: Fecha de caducidad: 13/06/2020 //Número de lote: 656 //Fecha envasado: 31/04/2017 //País origen: Portugal //Temperatura mantenimiento: -25 //Salinidad agua: 4
Esta es la información del producto congelado por agua 2: Fecha de caducidad: 24/08/2024 //Número de lote: 987 //Fecha envasado: 06/09/2017 //País origen: Italia //Temperatura mantenimiento: -26 //Salinidad agua: 8
Productos congelados por aire:
Esta es la información del producto congelado por aire 1: Fecha de caducidad: 25/08/2022 //Número de lote: 854 //Fecha envasado: 14/11/2017 //País origen: Puerto Rico //Temperatura mantenimiento: -30 //Composición del aire: 4
Esta es la información del producto congelado por aire 2: Fecha de caducidad: 15/12/2023 //Número de lote: 854 //Fecha envasado: 10/08/2017 //País origen: Egipto //Temperatura mantenimiento: -28 //Composición del aire: 3
Productos congelados por nitrogeno:
Esta es la información del producto congelado por nitrogeno 1: Fecha de caducidad: 25/04/2026 //Número de lote: 741 //Fecha envasado: 05/04/2017 //País origen: Guatemala //Temperatura mantenimiento: -35 //Información sobre el método de congelación: info //Tiempo de exposicion: 50
Saludos