Autor Tema: Cómo plantear una herencia simple, extends y super en Java. Ejercicio CU00687B  (Leído 3012 veces)

sinolab

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 2
    • Ver Perfil
Hola. Os envío el ejercicio CU00687B del curso de aprender a programar en JAVA para que si es posible le echeis un ojo.

Agregué un concepto que dais un poco más adelante, clases abstractas.
No sé si están bien aplicadas al ejercicio y también tengo la duda de si el metodo mostrarInformacion debo incluirlo como lo incluyo yo en las subclases.

También dudo sobre si los toString están bien y si hace falta poner el get para obtener los atributos de la misma clase.

Muchas gracias  :)




Productos
Código: [Seleccionar]
/**
 *
 */
package ejercicioHerenciaAprenderAProgramar;

/**
 * @author sinolab
 *
 */
public abstract class Productos {

private String nombre;
private String fechaCaducidad;
private String numeroLote;
private String fechaEnvasado;
private String paisOrigen;

public Productos() {

nombre="";
fechaCaducidad="";
numeroLote="";
fechaEnvasado="";
paisOrigen="";

}
public Productos(String nom, String feEn,String feCa, String nuLo,  String paOr){

nombre=nom;
fechaCaducidad=feCa;
numeroLote=nuLo;
fechaEnvasado=feEn;
paisOrigen=paOr;
}




public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getFechaCaducidad() {
return fechaCaducidad;
}
public void setFechaCaducidad(String fechaDeCaducidad) {
this.fechaCaducidad = fechaDeCaducidad;
}
public String getNumeroLote() {
return numeroLote;
}
public void setNumeroLote(String numeroDeLote) {
this.numeroLote = numeroDeLote;
}

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;
}

public abstract void mostrarInformacion();
public abstract String toString();
public void setFechaCaducidad() {

}

}


Frescos

Código: [Seleccionar]
package ejercicioHerenciaAprenderAProgramar;

public class Frescos extends Productos {

public Frescos() {
super();
}

public Frescos(String nom, String feEn, String feCa, String nuLo, String paOr) {
super(nom, feEn, feCa, nuLo, paOr);
}

public void mostrarInformacion() {

System.out.println(this);
System.out.println();

}

public String toString() {

return "Nombre: " + getNombre() + "     Fecha de Envasado: " + getFechaEnvasado() + "     Fecha de caducidad: "
+ getFechaCaducidad() + "     Numero de lote: " + getNumeroLote() + "     Pais de origen: "
+ getPaisOrigen();

}

}


Refrigerados

Código: [Seleccionar]
package ejercicioHerenciaAprenderAProgramar;

public class Refrigerados extends Productos {

private String codigoOrganismoSupervisionAlimentaria;
private double temperaturaMantenimientoRecomendada;

public Refrigerados() {
super();
}

public Refrigerados(String nom, String feEn, String feCa, String nuLo, String paOr, String cod, double temp) {
super(nom, feEn, feCa, nuLo, paOr);
codigoOrganismoSupervisionAlimentaria = cod;
temperaturaMantenimientoRecomendada = temp;

}

public String getCodigoOrganismoSupervisionAlimentaria() {
return codigoOrganismoSupervisionAlimentaria;
}

public void setCodigoOrganismoSupervisionAlimentaria(String codigoOrganismoSupervisionAlimentaria) {
this.codigoOrganismoSupervisionAlimentaria = codigoOrganismoSupervisionAlimentaria;
}

public double getTemperaturaMantenimientoRecomendada() {
return temperaturaMantenimientoRecomendada;
}

public void setTemperaturaMantenimientoRecomendada(double temperaturaMantenimientoRecomendada) {
this.temperaturaMantenimientoRecomendada = temperaturaMantenimientoRecomendada;
}

public void mostrarInformacion() {
System.out.println(this);
System.out.println();

}

public String toString() {

return "Nombre: " + getNombre() + "     Fecha de Envasado: " + getFechaEnvasado() + "     Fecha de caducidad: "
+ getFechaCaducidad() + "     Numero de lote: " + getNumeroLote() + "     Pais de origen: "
+ getPaisOrigen() + "     Codigo: " + codigoOrganismoSupervisionAlimentaria + "     Temperatura ideal: "
+ temperaturaMantenimientoRecomendada;
}

}


Congelados

Código: [Seleccionar]
package ejercicioHerenciaAprenderAProgramar;

public abstract class Congelados extends Productos {

private double temperaturaMantenimientoRecomendada;

public Congelados() {
super();
}

public Congelados(String nom, String feEn, String feCa, String nuLo, String paOr, double temp) {
super(nom, feEn, feCa, nuLo, paOr);

temperaturaMantenimientoRecomendada = temp;

}

public double getTemperaturaMantenimientoRecomendada() {
return temperaturaMantenimientoRecomendada;
}

public void setTemperaturaMantenimientoRecomendada(double temp) {
temperaturaMantenimientoRecomendada = temp;
}

public abstract void mostrarInformacion();


public abstract String toString();

}


CongeladosAire

Código: [Seleccionar]
package ejercicioHerenciaAprenderAProgramar;

public class CongeladosAire extends Congelados {

private double nitrogeno;
private double oxigeno;
private double dioxidoCarbono;
private double vaporAgua;

public CongeladosAire() {

}

public CongeladosAire(String nom, String feEn, String feCa, String nuLo, String paOr, double temp, double nitro,
double oxi, double diox, double vap) {

super(nom, feEn, feCa, nuLo, paOr, temp);
nitrogeno = nitro;
oxigeno = oxi;
dioxidoCarbono = diox;
vaporAgua = vap;

}

public double getNitrogeno() {
return nitrogeno;
}

public void setNitrogeno(double nitrogeno) {
this.nitrogeno = nitrogeno;
}

public double getOxigeno() {
return oxigeno;
}

public void setOxigeno(double oxigeno) {
this.oxigeno = oxigeno;
}

public double getDioxidoCarbono() {
return dioxidoCarbono;
}

public void setDioxidoCarbono(double dioxidoCarbono) {
this.dioxidoCarbono = dioxidoCarbono;
}

public double getVaporAgua() {
return vaporAgua;
}

public void setVaporAgua(double vaporAgua) {
this.vaporAgua = vaporAgua;
}

public void mostrarInformacion() {
System.out.println(this);
System.out.println();

}

public String toString() {

return "Nombre: " + getNombre() + "     Fecha de Envasado: " + getFechaEnvasado() + "     Fecha de caducidad: "
+ getFechaCaducidad() + "     Numero de lote: " + getNumeroLote() + "     Pais de origen: "
+ getPaisOrigen() + "     Temperatura ideal: " + getTemperaturaMantenimientoRecomendada()
+ "\nNitrogeno: " + nitrogeno + "%" + "\nOxigeno: " + oxigeno + "%" + "\nDioxidoCarbono: "
+ dioxidoCarbono + "%" + "\nVapor de agua: " + vaporAgua + "%";
}

}

CongeladosAgua

Código: [Seleccionar]
package ejercicioHerenciaAprenderAProgramar;

public class CongeladosAgua extends Congelados {

private double salinidadAgua;

public CongeladosAgua() {

}

public CongeladosAgua(String nom, String feEn, String feCa, String nuLo, String paOr, double temp, double sal) {

super(nom, feEn, feCa, nuLo, paOr, temp);
salinidadAgua = sal;

}

public void mostrarInformacion() {
System.out.println(this);
System.out.println();

}


public double getSalinidadAgua() {
return salinidadAgua;
}

public void setSalinidadAgua(double salinidadAgua) {
this.salinidadAgua = salinidadAgua;
}

public String toString() {

return "Nombre: " + getNombre() + "     Fecha de Envasado: " + getFechaEnvasado() + "     Fecha de caducidad: "
+ getFechaCaducidad() + "     Numero de lote: " + getNumeroLote() + "     Pais de origen: "
+ getPaisOrigen() + "     Temperatura ideal: " + getTemperaturaMantenimientoRecomendada()
+ "\nSalinidad del agua: " + salinidadAgua;
}

}

CongeladosNitrogeno

Código: [Seleccionar]
package ejercicioHerenciaAprenderAProgramar;

public class CongeladosNitrogeno extends Congelados {

private String metodo;
private double segundos;

public CongeladosNitrogeno() {


}

public CongeladosNitrogeno(String nom, String feEn, String feCa, String nuLo, String paOr, double temp, String metod, double seg) {

super(nom, feEn, feCa, nuLo, paOr, temp);
metodo=metod;
segundos=seg;

}


public String getMetodo() {
return metodo;
}

public void setMetodo(String metodo) {
this.metodo = metodo;
}

public double getSegundos() {
return segundos;
}

public void setSegundos(double segundos) {
this.segundos = segundos;
}

public void mostrarInformacion() {
System.out.println(this);
System.out.println();

}

public String toString() {

return "Nombre: " + getNombre() + "     Fecha de Envasado: " + getFechaEnvasado() + "     Fecha de caducidad: "
+ getFechaCaducidad() + "     Numero de lote: " + getNumeroLote() + "     Pais de origen: "
+ getPaisOrigen() + "     Temperatura ideal: " + getTemperaturaMantenimientoRecomendada()
+ "\nMetodo de congelación empleado: "+metodo+"\nTiempo de exposicion en segundos: "+segundos+" segundos";
}

}

TestHerencia3

Código: [Seleccionar]
package ejercicioHerenciaAprenderAProgramar;

public class TestHerencia3 {

public static void main(String[] args) {

Frescos f1 = new Frescos("Filetes de ternera", "01/01/2000", "02/02/2022", "203030", "Camerún");
Frescos f2 = new Frescos("Salchichas", "01/01/2011", "02/02/2022", "202020", "Alemania");
Refrigerados re1 = new Refrigerados("Judias", "11/01/2001", "11/10/2100", "34000", "China", "22000", -100);
Refrigerados re2 = new Refrigerados("Alubias", "11/01/2001", "11/10/2100", "34010", "China", "22000", -100);
Refrigerados re3 = new Refrigerados("Lentejas", "11/01/2001", "11/10/2100", "34020", "China", "22000", -100);

CongeladosAire cAi1 = new CongeladosAire("Cerezas", "01/02/2003", "04/05/2006", "10000", "Noruega", -18, 80, 16,
34, 23);
CongeladosAire cAi2 = new CongeladosAire("Geranios", "01/02/2001", "04/05/2100", "10000", "Holanda", -50, 20, 6,
12, 13);
CongeladosAgua cAg1 = new CongeladosAgua("Merluza", "01/02/2003", "04/05/2006", "10009", "Belgica", -5, 0.3);
CongeladosAgua cAg2 = new CongeladosAgua("Caballa", "01/02/2002", "04/05/2006", "10009", "Belgica", -15, 0.5);

CongeladosNitrogeno cNi = new CongeladosNitrogeno("Nata", "01/02/2002", "04/05/2006", "10009", "India", -30,
"Imersión", 10);

f1.mostrarInformacion();
f2.mostrarInformacion();
re1.mostrarInformacion();
re2.mostrarInformacion();
re3.mostrarInformacion();
cAi1.mostrarInformacion();
cAi2.mostrarInformacion();
cAg1.mostrarInformacion();
cAg2.mostrarInformacion();
cNi.mostrarInformacion();

System.out.println(cAg2.getFechaEnvasado());
System.out.println(cAg1.getFechaEnvasado());
System.out.println(f1.getNombre());
System.out.println(f1.getFechaCaducidad());
System.out.println(f1.getNumeroLote());
System.out.println(re1.getNombre());
System.out.println(cAg1.getNombre());
}

}

« Última modificación: 02 de Agosto 2017, 19:03 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola sinolab, por lo que entiendo has ido siguiendo el curso de Java hasta llegar a este ejercicio. Si no es así, te recomiendo seguir el curso pues en él se van explicando ordenadamente todos los conceptos de Java.

Una primera cuestión a comentar es que no estás nombrando adecuadamente las clases Java. Lee este hilo: https://www.aprenderaprogramar.com/foros/index.php?topic=3035.msg13698#msg13698, de acuerdo con él verás que "Productos", ó "Frescos", etc. no son nombres adecuados para estas clases.

El uso de clases abstractas en este ejercicio no es adecuado por tanto no han sido explicadas este tipo de clases dentro de la progresión de aprendizaje que se sigue en el curso. Puedes plantearlo como una variante de ejercicio, o como otro ejercicio, pero no puede considerarse una solución válida dentro de la metodología de aprendizaje que proponemos, donde es fundamental seguir un orden y una progresión ordenada en el aprendizaje.

Lo mismo puedo decirte del método toString.

Comento algunas cuestiones:

no le veo sentido a incluir un método mostrarInformacion() habiendo incluido el método toString. Tampoco le veo sentido a la repetición de código para el método mostrarInformacion() en las distintas clases.

el método toString no lo tienes correctamente implementado en base a un esquema de herencia cohererente, ya que repites código que podrías no repetir, es decir, no haces uso de la reutilización de código.

Para obtener los atributos de una clase no es necesario poner el get, aunque tampoco está prohibido, puedes hacerlo.

No puedo darte una opinión sobre el ejercicio en conjunto porque como te he comentado no has resuelto el ejercicio, sino que has planteado una variante. En el código se ve que manejas correctamente diversos conceptos de la programación Java, no debes pensar que la valoración sea negativa.

Puedes ver una solución a este ejercicio en https://www.aprenderaprogramar.com/foros/index.php?topic=2342.0, estudiar las soluciones propuestas por otras personas en general es bueno para aprender estrategias analizando código.

Si deseas plantear otras soluciones a ejercicios, es recomendable seguir lo que indica el enunciado, y utilizar únicamente contenidos explicados previamente en las entregas del curso que corresponda.

Si te animas, participa con nosotros en los foros y responde a usuarios que estén en las entregas iniciales del curso, como te he comentado además de hacernos un favor, analizar código escrito por otros resulta a la larga útil para aprender a codificar y analizar con rapidez.

Saludos

sinolab

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 2
    • Ver Perfil
Gracias por una respuesta tan amplia.  :)

Revisaré las indicaciones que me has dado y lo resubiré de nuevo conforme a lo que has observado.




Un saludo.

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
De acuerdo, en caso de volver a subir el ejercicio, hazlo poniéndolo como respuesta en este mismo hilo. Saludos.

 

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".