Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: dferna en 09 de Abril 2017, 10:06

Título: Java cómo creo código refleje herencia uso palabras clave extends super CU00686B
Publicado por: dferna en 09 de Abril 2017, 10:06
Hola  ;)

Aquí dejo la resolución al ejercicio CU00686B del curso básico de codificación con Java y IDE BlueJ, de herencia.


Clase de test

Código: [Seleccionar]
package test;

import aplicacion.*;

/**
 * Clase encargada de realizar un test de la aplicación
 * @author David
 *
 */
public class TestHerencia2 {

public static void main(String[] args) {

Producto producto = new Producto("23/07/2016",22);
System.out.println("Prueba de lo que contiene el objeto de la clase Producto: "+producto.toString());

ProductoFresco pf1 = new ProductoFresco("23/07/2016", "España", "12/12/2017", 40);
System.out.println("Prueba de lo que contiene el objeto de la clase ProductoFresco: "+pf1.toString());

ProductoRefrigerado pr1 = new ProductoRefrigerado(50, "23/04/2020", 804);
System.out.println("Prueba de lo que contiene el objeto de la clase ProductoRefrigerado: "+pr1.toString());

ProductoCongelado pc1 = new ProductoCongelado("24/05/2025", 45, -30);
System.out.println("Prueba de lo que contiene el objeto de la clase ProductoCongelado: "+pc1.toString());
}

}


Superclase Producto

Código: [Seleccionar]
package aplicacion;


/**
 * Superclase Producto
 * @author David
 *
 */
public class Producto {

private String fechaCaducidad;
private int numeroLote;

//Constructor
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 utilizado para obtener en cadena los valores de las propiedades del objeto
public String toString(){

return "Fecha de caducidad "+fechaCaducidad+" //Numero de lote: "+numeroLote;
}
}



Y estas son las subclases

ProductoFresco

Código: [Seleccionar]
package aplicacion;

/**
 * Subclase ProductoFresco que extiende de la clase Producto
 * @author David
 *
 */
public class ProductoFresco extends Producto{

private String fechaEnvasado;
private String paisOrigen;

//Constructor sobrecargado
public ProductoFresco(String fechaEnvasado, String paisOrigen,String fechaCaducidad, int numeroLote){
super(fechaCaducidad, numeroLote);
this.fechaEnvasado = fechaEnvasado;
this.paisOrigen = paisOrigen;
}

//Getters and Setters
public String getFechaEnvasado(){
return fechaEnvasado;
}

public void setFechaEnvasado(String valorFechaEnvasado){
fechaEnvasado = valorFechaEnvasado;
}

public String getPaisOrigen() {
return paisOrigen;
}

public void setPaisOrigen(String valorPaisOrigen) {
paisOrigen = valorPaisOrigen;
}

//Método toString utilizado para obtener en cadena los valores de las propiedades del objeto
public String toString(){
return "Fecha caducidad: "+getFechaCaducidad()+" //Numero de lote: "+getNumeroLote()+" //Fecha envasado: "+fechaEnvasado+" //Pais de origen: "+paisOrigen;
}
}


ProductoRefrigerado

Código: [Seleccionar]
package aplicacion;

public class ProductoRefrigerado extends Producto{

private int codigoOrganismo;

//Constructor sobrecargado
public ProductoRefrigerado(int codigoOrganismo, String fechaCaducidad, int numeroLote){
super(fechaCaducidad, numeroLote);
this.codigoOrganismo = codigoOrganismo;
}

//Getters and Setters
public int getCodigoOrganismo() {
return codigoOrganismo;
}

public void setCodigoOrganismo(int valorCodigoOrganismo) {
codigoOrganismo = valorCodigoOrganismo;
}

//Método toString utilizado para obtener en cadena los valores de las propiedades del objeto
public String toString(){
return "Fecha caducidad: "+getFechaCaducidad()+" //Numero de lote: "+getNumeroLote()+" //Código de organismo: "+codigoOrganismo;
}
}


ProductoCongelado

Código: [Seleccionar]
package aplicacion;

public class ProductoCongelado extends Producto {

private double temperaturaCongelacion;

//Constructor sobrecargado
public ProductoCongelado(String fechaCaducidad, int numeroLote, double temperaturaCongelacion) {
super(fechaCaducidad, numeroLote);
this.temperaturaCongelacion = temperaturaCongelacion;
}


//Getters and Setters
public double getTemperaturaCongelacion() {
return temperaturaCongelacion;
}

public void setTemperaturaCongelacion(double valorTemperaturaCongelacion) {
temperaturaCongelacion = valorTemperaturaCongelacion;
}

//Método toString utilizado para obtener en cadena los valores de las propiedades del objeto
public String toString(){
return "Fecha caducidad: "+getFechaCaducidad()+" //Numero de lote: "+getNumeroLote()+" //Temperatura de congelación: "+temperaturaCongelacion;
}
}


Ejecución del programa

Citar
Prueba de lo que contiene el objeto de la clase Producto: Fecha de caducidad 23/07/2016 //Numero de lote: 22
Prueba de lo que contiene el objeto de la clase ProductoFresco: Fecha caducidad: 12/12/2017 //Numero de lote: 40 //Fecha envasado: 23/07/2016 //Pais de origen: España
Prueba de lo que contiene el objeto de la clase ProductoRefrigerado: Fecha caducidad: 23/04/2020 //Numero de lote: 804 //Código de organismo: 50
Prueba de lo que contiene el objeto de la clase ProductoCongelado: Fecha caducidad: 24/05/2025 //Numero de lote: 45 //Temperatura de congelación: -30.0

Saludos  ;D
Título: Re:Resolución ejercicio Herencia uso de palabras clave extends y super CU00686B
Publicado por: pedro,, en 15 de Abril 2017, 14:30
Buenas dferna.

Todo bien resuelto, solo comentarte que el método toString() ni la sobrescritura de métodos no se explica en el curso hasta el tema CU00694B, en este caso hubiese valido con crear un método en cada una de las clases mostrase la información de cada producto como se mostraba en el ejemplo del tema.

Te dejo una solución basada en lo que pide el enunciado:

https://www.aprenderaprogramar.com/foros/index.php?topic=1179.msg6500#msg6500

Saludos. ;D