Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Beginer en 20 de Octubre 2014, 17:11
-
Buenos días, estuve un tanto ausente del seguimiento de mi curso pero luego de retomar me constó un poco y con la ayuda de los demás foros quiero presentar mi código para poner a consideración de los moderadores. muchas gracias.
CLASE SalonCasa
public class SalonCasa {
private int numeroDeTelevisores;
private String tipoSalon;
public SalonCasa (){
numeroDeTelevisores = 0;
tipoSalon = "Desconocido";
}
public void setNumeroDeTelevisores (int cantTv){
this.numeroDeTelevisores = cantTv;
}
public void setTipoSalon(String tipoSalon) {
this.tipoSalon = tipoSalon;
}
public int getNumeroDeTelevisores() {
return numeroDeTelevisores;
}
public String getTipoSalon() {
return tipoSalon;
}
}
CLASE CocinaCasa
public class CocinaCasa{
private boolean esIndependiente;
private int numeroDeFuegos;
public CocinaCasa (){
esIndependiente = false;
numeroDeFuegos = 0;
}
public void setEsIndependiente (boolean esIndependiente){
this.esIndependiente = esIndependiente;
}
public void setNumeroDeFuegos (int nroDeFuegos){
numeroDeFuegos = nroDeFuegos;
}
public boolean isEsIndependiente (){return esIndependiente;}
public int getNumeroDeFuegos (){return numeroDeFuegos;}
}
CLASE Casa
public class Casa
{
private double superficie;
private String direccion;
private SalonCasa salon;
private CocinaCasa cocina;
public Casa () {
superficie = 0;
direccion = "";
salon = new SalonCasa ();
cocina = new CocinaCasa ();
}
// SETTERS
public void setSuperficie (double superficie){
this.superficie = superficie;
}
public void setDireccion (String direccion){
this.direccion = direccion;
}
public void setSalon (SalonCasa salon){
salon = new SalonCasa ();
salon.setNumeroDeTelevisores (salon.getNumeroDeTelevisores());
salon.setTipoSalon (salon.getTipoSalon());
}
public void setCocina (CocinaCasa cocina){
this.cocina = new CocinaCasa();
this.cocina.setEsIndependiente (cocina.isEsIndependiente());
this.cocina.setNumeroDeFuegos(cocina.getNumeroDeFuegos());
}
// GETTERS
public double getSuperficie (){return superficie;}
public String getDireccion () {return direccion;}
public SalonCasa getSalon (){return salon;}
public CocinaCasa getCocina (){return cocina;}
public String getDatosDeCasa (){
int nroDeTv = salon.getNumeroDeTelevisores();
String tipoSalon = salon.getTipoSalon();
boolean esIndependiente = cocina.isEsIndependiente();
String ind;
if (esIndependiente == false) { ind = "no independiente "; } else { ind = "independiente ";}
int nroFuegos = cocina.getNumeroDeFuegos();
String DatosCasa = "La casa tiene como dirección, " + direccion + " con una superficie de " + superficie +
" con " + nroDeTv + " cantidad de televisores y de tipo salon " + tipoSalon + " con una cocina " + ind +
" con " + nroFuegos + " numeros de fuegos. " ;
System.out.println (DatosCasa);
return DatosCasa;
}
}
Saludos cordiales..
-
Hola Beginer
Tu ejercicio está bien en parte
No se si has practicado con estas clases lo que se indica en esta imagen de la entrega actual
http://images4.hiboox.com/images/0512/972378d483812d5bb905251af93cccc0.jpg (http://images4.hiboox.com/images/0512/972378d483812d5bb905251af93cccc0.jpg)
Se trata como ves de modificar los atributos de las clases creadas usando sus métodos 'set'
Y cuando en la clase Casa invocas el método
public void setSalon (SalonCasa salon), basta con indicarle el objeto de tipo SalonCasa creado o simplemente hacer clic en él para que se escriba automáticamente
Tu clase SalonCasa, está bien. El uso de la palabra reservada 'this' indica al compilador que nos referimos a los atributos propios de la clase. Perfecto
En la clase CocinaCasa creas el método
public boolean isEsIndependiente ()
Que creo debería ser
public boolean getEsIndependiente ()
Ya sabemos que los métodos que devuelven valores de los atributos de la clase, por convención se reconocen porque empiezan por la partícula 'get'
Si no utilizas esta convención te será dificil recordar que nombre le pusiste al getter del atributo 'esIndependiente'
Finalmente en la clase Casa tienes los setters y getters de los atributos primitivos perfectos, también están bien los getters
public SalonCasa getSalon (){return salon;}
public CocinaCasa getCocina (){return cocina;}
En cambio el setter
public void setSalon (SalonCasa salon){
salon = new SalonCasa ();
salon.setNumeroDeTelevisores (salon.getNumeroDeTelevisores());
salon.setTipoSalon (salon.getTipoSalon());
}
en la línea
salon = new SalonCasa ();
invalidas el salon que recibes como parámetro al crear un salon con los valores por defecto
Si eliminas esta línea, tu setter queda perfecto
Igual sucede con el setter
public void setCocina (CocinaCasa cocina)
Aunque estos métodos se pueden componer también de la siguiente forma
public void setSalon (SalonCasa salon){
this.salon = salon;
}
public void setCocina (CocinaCasa cocina){
this.cocina = cocina;
}
Como ves son unos métodos más compactos. En una sola línea de código traspasas todos los atributos del objeto SalonCasa, tanto si tiene 2 como es el caso como si tiene 10.
Estos nuevos enfoques tienes que tenerlos en cuenta a partir de ahora, en que además de trabajar con atributos de tipo primitivos (int, float,etc..) estamos trabajando con atributos de tipos creados por nosotros (SalonCasa, CocinaCasa)
Saludos
-
Muchas gracias Tony.. muy agradecido por tus observaciones.
Saludos cordiales..