Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: nicatardi en 23 de Noviembre 2015, 04:43
-
Hola! Me gustaria saber si está correctamente escrito el código para no adquirir malas costumbres. Muchas gracias!
//EJERCICIO CU00641B
/**
Define tres clases: Casa, SalonCasa y CocinaCasa. La clase SalonCasa debe tener como atributos
numeroDeTelevisores (int) y tipoSalon (String) y disponer de un constructor que los inicialice
a 0 y “desconocido”. La clase CocinaCasa debe tener como atributos esIndependiente (boolean) y
numeroDeFuegos (int) y un constructor que los inicialice a false y 0. La clase Casa tendrá los
siguientes atributos de clase: superficie (double), direccion (String), salonCasa (tipo SalonCasa)
y cocina (tipo CocinaCasa). Define un constructor para la clase Casa que establezca a unos valores
de defecto los atributos simples y que cree nuevos objetos si se trata de atributos objeto.
*/
public class Casa{
private double superficie;
private String direccion;
private SalonCasa salonCasa;
private CocinaCasa cocina;
//Constructor
public Casa(){
superficie = 0;
direccion = "";
salonCasa = new SalonCasa();
cocina = new CocinaCasa();
}//Cierre constructor
//Métodos tipo procedimiento
public void setSuperficie(double valorSuperficie){superficie = valorSuperficie;}
public void setDireccion(String valorDireccion){direccion = valorDireccion;}
//Métodos tipo procedimiento adquiriendo objetos de otra clase
public void setNumeroDeTelevisores(int valorNumeroDeTelevisores){salonCasa.setNumeroDeTelevisores(valorNumeroDeTelevisores);}
public void setTipoSalon(String valorTipoSalon){salonCasa.setTipoSalon(valorTipoSalon);}
public void setEsIndependiente(boolean valorEsIndependiente){cocina.setEsIndependiente(valorEsIndependiente);}
public void setNumeroDeFuegos(int valorNumeroDeFuegos){cocina.setNumeroDeFuegos(valorNumeroDeFuegos);}
//Métodos tipo función
public double getSuperficie(){return superficie;}
public String getDireccion(){return direccion;}
//Métodos tipo función adquiriendo objetos de otra clase
public int getNumeroDeTelevisores(){int numeroDeTelevisores = salonCasa.getNumeroDeTelevisores(); return numeroDeTelevisores;}
public String getTipoSalon(){String tipoSalon = salonCasa.getTipoSalon(); return tipoSalon;}
public boolean getEsIndependiente(){boolean esIndependiente = cocina.getEsIndependiente(); return esIndependiente;}
public int getNumeroDeFuegos(){int numeroDeFuegos = cocina.getNumeroDeFuegos(); return numeroDeFuegos;}
}//Cierre de clase
//Clase para utilizar como objeto en la clase Casa (CU00641B)
public class SalonCasa{
private int numeroDeTelevisores;
private String tipoSalon;
//Constructor
public SalonCasa(){
numeroDeTelevisores = 0;
tipoSalon = "Desconocido";
}//Cierre constructor
//Métodos tipo procedimiento
public void setNumeroDeTelevisores(int valorNumeroDeTelevisores){numeroDeTelevisores = valorNumeroDeTelevisores;}
public void setTipoSalon(String valorTipoSalon){tipoSalon = valorTipoSalon;}
//Métodos tipo Función
public int getNumeroDeTelevisores(){return numeroDeTelevisores;}
public String getTipoSalon(){return tipoSalon;}
}//Cierre de la clase
//Clase para utilizar como objeto por la clase Casa (CU00641B)
public class CocinaCasa{
private boolean esIndependiente;
private int numeroDeFuegos;
//Constructor
public CocinaCasa(){
esIndependiente = false;
numeroDeFuegos = 0;
}//Cierre constructor
//Métodos tipo procedimiento
public void setEsIndependiente(boolean valorEsIndependiente){esIndependiente = valorEsIndependiente;}
public void setNumeroDeFuegos(int valorNumeroDeFuegos){numeroDeFuegos = valorNumeroDeFuegos;}
//Métodos tipo función
public boolean getEsIndependiente(){return esIndependiente;}
public int getNumeroDeFuegos(){return numeroDeFuegos;}
}//Cierre de clase
-
Buenas nicatardi
El código compila correctamente, pero presenta un problema en la clase Casa. El problema es que una clase no maneja los atributos de otra clase, sino sólo sus atributos propios. En la clase Casa tienes un método getNumeroDeTelevisores, pero ¿es numeroDeTelevisores un atributo de la clase Casa? No, entonces esta clase no debe tener métodos get ni set para estos atributos. Hay una explicación en https://www.aprenderaprogramar.com/foros/index.php?topic=1220.0, después de estudiar esa explicación deberías reformular tu código.
Salu2
-
Gracias Ogramar por tu respuesta! :)
Modifique el codigo y creo que acomode lo que me dijiste. Si no es así, me encantaria que me lo digas.
Muy bueno el curso felicidades!
//EJERCICIO CU00641B
/**
Define tres clases: Casa, SalonCasa y CocinaCasa. La clase SalonCasa debe tener como atributos
numeroDeTelevisores (int) y tipoSalon (String) y disponer de un constructor que los inicialice
a 0 y “desconocido”. La clase CocinaCasa debe tener como atributos esIndependiente (boolean) y
numeroDeFuegos (int) y un constructor que los inicialice a false y 0. La clase Casa tendrá los
siguientes atributos de clase: superficie (double), direccion (String), salonCasa (tipo SalonCasa)
y cocina (tipo CocinaCasa). Define un constructor para la clase Casa que establezca a unos valores
de defecto los atributos simples y que cree nuevos objetos si se trata de atributos objeto.
*/
public class Casa{
private double superficie;
private String direccion;
private SalonCasa salonCasa;
private CocinaCasa cocina;
//Constructor
public Casa(){
superficie = 0;
direccion = "";
salonCasa = new SalonCasa();
cocina = new CocinaCasa();
}//Cierre constructor
//Constructor2
public Casa(double valorSuperficie, String valorDireccion, SalonCasa objetoSalon, CocinaCasa objetoCocina){
superficie = valorSuperficie;
direccion = valorDireccion;
salonCasa = new SalonCasa(objetoSalon.getNumeroDeTelevisores(), objetoSalon.getTipoSalon());
cocina = new CocinaCasa(objetoCocina.getEsIndependiente(), objetoCocina.getNumeroDeFuegos());
}//Cierre Constructor2
//Métodos tipo procedimiento
public void setSuperficie(double valorSuperficie){superficie = valorSuperficie;}
public void setDireccion(String valorDireccion){direccion = valorDireccion;}
//Métodos tipo procedimiento adquiriendo objetos de otra clase
public void setSalonCasa(SalonCasa objetoSalon){
salonCasa.setTipoSalon(objetoSalon.getTipoSalon());
salonCasa.setNumeroDeTelevisores(objetoSalon.getNumeroDeTelevisores());
}
public void setCocina(CocinaCasa objetoCocina){
cocina.setEsIndependiente(objetoCocina.getEsIndependiente());
cocina.setNumeroDeFuegos(objetoCocina.getNumeroDeFuegos());
}
//Métodos tipo función
public double getSuperficie(){return superficie;}
public String getDireccion(){return direccion;}
//Métodos tipo función adquiriendo objetos de otra clase
public SalonCasa getSalon(){
return salonCasa;
}
public CocinaCasa getCocina(){
return cocina;
}
}//Cierre de clase
-
Buenas ahora todo bien, a seguir
Salu2