Autor Tema: Java. Herencia simple, extends y super cómo pasar de texto a código CU00687B  (Leído 2195 veces)

dferna

  • Sin experiencia
  • *
  • Mensajes: 25
    • Ver Perfil
Hola  ;D

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

Código: [Seleccionar]
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
Código: [Seleccionar]
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
Código: [Seleccionar]
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
Código: [Seleccionar]
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
Código: [Seleccionar]
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
Código: [Seleccionar]
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
Código: [Seleccionar]
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
Código: [Seleccionar]
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
Citar
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  ;D
« Última modificación: 17 de Junio 2017, 18:22 por Alex Rodríguez »

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:Resolución ejercicio Herencia simple, extends y super CU00687B
« Respuesta #1 en: 16 de Abril 2017, 11:24 »
Hola dferna.

El planteamiento no es el correcto, en tu esquema ProductoRefrigerado y ProductoCongelado heredan de ProductoFresco cuando el enunciado dice que ProductoRefrigerado, ProductoCongelado y ProductoFresco son tres tipos de productos distintos, lo que debías de haber hecho es coger los atributos que tengan esas tres clases en común e incluirlos en la clase Producto, y sobre lo que dice el apartado b de crear superclases intermedias se podría coger el atributo que solo coincide en la clase ProductoCongelado y la clase ProductoRefrigerado y crear una clase que contenga ese atributo y de la cual hereden ProductoCongelado y ProductoRefrigerado.

Te dejo un ejemplo para que lo veas más claro...

https://www.aprenderaprogramar.com/foros/index.php?topic=2342.msg11163#msg11163

Saludos. ;D

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".