Autor Tema: Ejemplo herencia Java uso de palabras clave extends y super CU00686B  (Leído 4486 veces)

Wolf

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 13
    • Ver Perfil
Tengo una duda. No entiendo los métodos setters en la Clases Producto, ProductosFrescos,etc. ¿Si ya inicializamos las variables con el Constructor, para qué necesitamos esos métodos? Supongo que tendré muchos fallos. Agradecería las correcciones. Gracias. Adjunto el código:

Código: [Seleccionar]
package paqueteherencia;

public class Producto {

String fechaCaducidad, nombre;
String nLote;

public Producto(String fechaCaducidad, String nombre,String nLote){

this.fechaCaducidad=fechaCaducidad;
this.nombre=nombre;
this.nLote=nLote;

}

public String getfechaCaduciad(){

return fechaCaducidad;
}

public String getnLote(){

return nLote;
}

public String getnombre(){

return nombre;
}

public void setfechaCaducidad(String fechaCaducidad){

this.fechaCaducidad=fechaCaducidad;
}

public void setnLote(String nLote){

this.nLote=nLote;
}

public void setnombre(String nombre){

this.nombre=nombre;
}

}

Código: [Seleccionar]
package paqueteherencia;

public class ProductosFrescos extends Producto {

private String FechaEnvasado;
private String PaisOrigen;

public ProductosFrescos( String fechaCaducidad,  String nombre, String nLote, String FechaEnvasado, String PaisOrigen){

super(fechaCaducidad, nombre, nLote);

this.FechaEnvasado=FechaEnvasado;
this.PaisOrigen=PaisOrigen;
}


public String getFechaEnvasado(){

return FechaEnvasado;
}

public String getPaisOrigen(){

return PaisOrigen;
}

public void setFechaEnvasado(String FechaEnvasado){

this.FechaEnvasado=FechaEnvasado;
}

public void setPaisOrigen(String PaisOrigen){

this.PaisOrigen=PaisOrigen;
}

public String getDatosProductosFrescos(){

return "Fecha de envasado: "+ FechaEnvasado +" Fecha caducidad: "+ fechaCaducidad +  ". País de orígen: " + PaisOrigen
+ " Nombre: " + nombre + " Número de lote: " + nLote;
}

}

Código: [Seleccionar]
package paqueteherencia;

public class ProductosRefrigerados extends Producto {

private String CodigoSupervision;

public ProductosRefrigerados(String fechaCaducidad, String nombre,String nLote, String CodigoSupervision){

super(fechaCaducidad, nombre,nLote);

this.CodigoSupervision=CodigoSupervision;

}

public String getCodigoSupervision(){

return CodigoSupervision;
}

public void setCodigoSupervision(String CodigoSupervision){

this.CodigoSupervision=CodigoSupervision;
}

public String getDatosProductosRefrigerados(){

return  "Fecha caducidad: "+ fechaCaducidad + " Nombre: " + nombre + " Número de lote: " + nLote + " Código: " + CodigoSupervision;
}

}

Código: [Seleccionar]
package paqueteherencia;

public class ProductosCongelados extends Producto {

private String TemperaturaRecomendada;

public ProductosCongelados(String fechaCaducidad,  String nombre, String nLote, String TemperaturaRecomendada ){

super (fechaCaducidad,nombre,nLote);

this.TemperaturaRecomendada = TemperaturaRecomendada;
}

public String getTemperaturaRecomendada(){

return TemperaturaRecomendada;
}

public void setTemperaturaRecomendada(String TemperaturaRecomendada){

this.TemperaturaRecomendada=TemperaturaRecomendada;
}

public String getDatosProductosCongelados(){

return "Fecha caducidad: "+ fechaCaducidad + " Nombre: " + nombre + " Número de lote: " + nLote + " Temperatura: " + TemperaturaRecomendada;

}
}

Código: [Seleccionar]
package paqueteherencia;

public class Uso_Herencia {

public static void main(String[] args) {
// TODO Auto-generated method stub

ProductosFrescos LechugaProductoFresco = new ProductosFrescos("25-10-2017", "Lechuga", "03590","2-12-2012", "Uruguay" );
ProductosRefrigerados YogurProductoRefrigerado=new ProductosRefrigerados ("18-12-2020", "Yogur", "251183", "COD213456T");
ProductosCongelados PizzaProductoCongelado =new ProductosCongelados("24-1-2019", "Pizza", "434546-T", "-3º");



System.out.println("Atributos Productos Frescos: " + LechugaProductoFresco.getDatosProductosFrescos());
System.out.println("Atributos Productos Refrigerados: " + YogurProductoRefrigerado.getDatosProductosRefrigerados());
System.out.println("Atributo Productos Congelados: " + PizzaProductoCongelado.getDatosProductosCongelados());

}
}
« Última modificación: 07 de Agosto 2019, 18:44 por Ogramar »

Mario R. Rancel

  • Administrador
  • Experto
  • ********
  • APR2.COM
  • Mensajes: 1978
    • Ver Perfil
Re:Ejemplo herencia Java CU00686B uso de palabras clave extends y super
« Respuesta #1 en: 09 de Abril 2015, 10:31 »
Hola Wolf, el ejericio está bien resuelto, en líneas generales puede decirse que es una buena respuesta.

Si has seguido el curso desde el principio y has ido viendo las soluciones propuestas en los foros, verás que tanto los métodos get como los set los solemos incluir "por norma" dentro de las clases Java, independientemente de que las variables se inicialicen en el constructor. El constructor define lo que pasa cuando se inicializa el objeto, pero ¿qué ocurre si necesitas cambiar el objeto después de inicializado? En ese caso usarías un método set.

Como podrás leer en otros hilos recomendamos poner nombres a las clases en singular. No ProductosFrescos por ejemplo, sino ProductoFresco, porque la clase representa, permite crear, objetos de tipo ProductoFresco. No suena igual decir "he creado un ProductoCongelado" que "he creado un ProductoCongelados".

En la clase ProductosCongelados has declarado private String TemperaturaRecomendada; pero hubiera sido mejor private int temperaturaRecomendada; porque ese dato es un valor numérico, y para manejar valores numéricos se deben usar tipos numéricos.

También recuerda que los nombres de atributos de clase por convención deben empezar con minúscula.

Espero que estas indicaciones te sirvan de ayuda

Saludos
« Última modificación: 30 de Agosto 2015, 10:52 por Mario R. Rancel »

Wolf

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 13
    • Ver Perfil
Re:Ejemplo herencia Java CU00686B uso de palabras clave extends y super
« Respuesta #2 en: 09 de Abril 2015, 10:40 »
Hola Mario, muchísimas gracias por contestar. La verdad que no he seguido el curso desde el principio, por que ya tengo nociones de programar y me interesaba hacer algún ejercicio sobre Herencia. De todas formas, me viene bien las correcciones que me has dado. Las tendré en cuenta. Muchas gracias de nuevo. Un saludo.

 

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