Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Wolf en 08 de Abril 2015, 13:51

Título: Ejemplo herencia Java uso de palabras clave extends y super CU00686B
Publicado por: Wolf en 08 de Abril 2015, 13:51
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());

}
}
Título: Re:Ejemplo herencia Java CU00686B uso de palabras clave extends y super
Publicado por: Mario R. Rancel 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
Título: Re:Ejemplo herencia Java CU00686B uso de palabras clave extends y super
Publicado por: Wolf 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.