Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: matru en 21 de Marzo 2016, 23:42
-
Respuesta al ejercicio CU00686B del tutorial java desde cero:
public class Producto{
private String nombreDeProducto, fechaDeCaducidad;
private int numeroDeLote;
public Producto(String nombreDeProducto, String fechaDeCaducidad, int numeroDeLote){
this.nombreDeProducto = nombreDeProducto;
this.fechaDeCaducidad = fechaDeCaducidad;
this.numeroDeLote = numeroDeLote;
}
public Producto(){}
public void setNombreDeProducto(String nombreDeProducto){
this.nombreDeProducto = nombreDeProducto;
}
public String getNombreDeProducto(){return nombreDeProducto;}
public void setFechaDeCaducidad(String fechaDeCaducidad){
this.fechaDeCaducidad = fechaDeCaducidad;
}
public String getFechaDeCaducidad(){return fechaDeCaducidad;}
public void setNumeroDeLote(int numeroDeLote){
this.numeroDeLote = numeroDeLote;
}
public int getNumeroDeLote(){return numeroDeLote;}
}
public class ProductoFresco extends Producto{
private String fechaEnvasado;
private String paisOrigen;
public ProductoFresco(String nombre, String fechaCaducidad, int numeroLote, String fechaEnvasado, String paisOrigen){
super(nombre, fechaCaducidad, numeroLote);
this.fechaEnvasado = fechaEnvasado;
this.paisOrigen= paisOrigen;
}
public ProductoFresco(String nombre, String fechaCaducidad, int numeroLote){
super(nombre, fechaCaducidad, numeroLote);
}
public ProductoFresco(){
super();
}
public void setFechaEnvasado(String fechaEnvasado){
fechaEnvasado = fechaEnvasado;
}
public String getFechaEnvasado(){return fechaEnvasado;}
public void setPaisDeOrigen(String paisOrigen){
paisOrigen = paisOrigen;
}
public String getPaisOrigen(){return paisOrigen;}
public void mostrarProFresco(){
System.out.println("Contenido del Producto Fresco\nNombre: "+getNombreDeProducto()+"\nNumero de lote: "+ getNumeroDeLote() +
"\nPais de Origen: "+ getPaisOrigen()+"\nFecha de Envasado: "+ getFechaEnvasado()+"\nFecha de Caducidad: " + getFechaDeCaducidad()+"\n");
}
}
public class ProductoRefigerado extends ProductoFresco
{
private String codigoSupervisionAlimentaria;
public ProductoRefigerado(){
super();}
public ProductoRefigerado(String nombre, String fechaDeCaducidad, int numero, String codigo){
super( nombre, fechaDeCaducidad, numero);
codigoSupervisionAlimentaria = codigo;
}
public ProductoRefigerado(String nombre, String fechaDeCaducidad, int numero){
super(nombre, fechaDeCaducidad, numero);
}
public void setCodigoSupervisionAlimentaria(String codigoSupervisionAlimentaria){
codigoSupervisionAlimentaria = codigoSupervisionAlimentaria;
}
public String getCodigoSupervisionAlimentaria(){return codigoSupervisionAlimentaria;}
public void mostrarProRefigerado(){
System.out.println("Contenido del producto refigerado\n"+ "Nombre: "+ getNombreDeProducto() +"\nFecha de caducidad: "+getFechaDeCaducidad()+"\nNumero de Lote: "+getNumeroDeLote()+"\nCodigo de Supervision Alimentaria: "+getCodigoSupervisionAlimentaria()+"\n");
}
}
public class ProductoCongelado extends ProductoRefigerado
{
private int temperaturaRecomendada;
public ProductoCongelado(){}
public ProductoCongelado(String nombre, String fechaDeCaducidad, int numeroDeLote, int temperatura){
super(nombre, fechaDeCaducidad, numeroDeLote);
temperaturaRecomendada = temperatura;
}
public void setTemperaturaRecomendada(int temperaturaRecomendada){
temperaturaRecomendada = temperaturaRecomendada;
}
public int getTemperaturaRecomendada(){return temperaturaRecomendada;}
public void mostrarProductos(){
System.out.println("Contenido del producto congelado\nNombre: " +getNombreDeProducto()+"\nFecha de Caducidad: "+ getFechaDeCaducidad() + "\nNumero de Lote: " + getNumeroDeLote() +"\nTemperatura de Congelado: "+ getTemperaturaRecomendada()+" grado\n");
}
}
public class TestHerencia
{
// instance variables - replace the example below with your own
public static void main(){
//creacion del objeto producto fresco con nombre productoF
ProductoFresco productoF = new ProductoFresco("Fresa","21/08/2016",825,"21/03/2016","Rep. Dominicana");
//creacion del objeto producto refigerado con nombre productoR
ProductoRefigerado productoR = new ProductoRefigerado("Jugo de Naranja","12/09/2016",698,"FC-2016-17");
//creacion del objeto producto congelado con nombre productoC
ProductoCongelado productoC = new ProductoCongelado("camarones","24/05/2016",125, -1);
//metodo para mostrar el contenido de los productos frescos
productoF.mostrarProFresco();
//metodo para mostrar el contenido de los productos refigerados
productoR.mostrarProRefigerado();
//metodo para mostrar el contenido de los productos congelados
productoC.mostrarProductos();
}
}
-
Buenos días, matru.
Primero, comentarte que las subclases "ProductoFresco", "ProductoRefrigerado" y "ProductoCongelado" deberían de heredar de la superclase "Producto" y no uno del otro. En el ejericicio se dice:
Todos los productos llevan esta información común: fecha de caducidad y número de lote.
Por lo tanto, lo lógico es que todos hereden de una misma clase.
Después, en varios códigos pasas como parámetros variables que luego tienen el mismo nombre que las variables declaradas en la clase, como por ejemplo en la subclase "ProductoFresco":
public void setFechaEnvasado(String fechaEnvasado){
fechaEnvasado = fechaEnvasado;
}
Eso no es correcto, porque el compilador a la hora de compilar no sabe que variable pertenece a la clase y cual es el parámetro. Deberías de haber puesto:
public void setFechaEnvasado(String fechaEnvasado){
this.fechaEnvasado = fechaEnvasado;
}
o también:
public void setFechaEnvasado(String valor_fechaEnvasado){
fechaEnvasado = valor_fechaEnvasado;
}
Te recomiendo que mires más soluciones en el foro.
Un saludo.
-
Al parecer mal interprete esta parte del ejercicio que dice:
Crear el código de las clases Java implementando una relación de herencia desde la
superclase Producto hasta las subclases ProductoFresco, ProductoRefrigerado y ProductoCongelado.
sacame de la duda!
-
Hola, Matru.
La relación de la herencia debería ser como se muestra en https://www.aprenderaprogramar.com/foros/index.php?topic=2342.0.
A mi también me costó entenderlo. Y realmente puede prestar confusión, un poco, el ejericico pero lo que deberías interpretar es que la herencia sea desde "Producto" hacia "ProductoFresco", desde "Producto" hacia "ProductoRefrigerado" y desde "Producto" hacia "ProductoCongelado".
Y las propiedades comunes de: "ProductoFresco", "ProductoRefrigerado" y "ProductoCongelado" se deberán heredar de la clase "Producto" (cada subclase desde la superclase) y no en escala.
Espero que te haya ayudado y aclarado la duda.
-
Hola dimiste muchas gracias por la correccion ahora me queda bien claro, iba a cometer el mismo error en el sioguiente ejercicio corregire eso ahora mismo
-
Todos los compañeros estamos aquí para eso, para ayudarnos mutuamente :)
De todas maneras, te recomiendo que mires más soluciones en el foro.
Saludos.