Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: jogonzalezmor en 21 de Junio 2014, 18:56
-
Buenos días.
Como he estado haciendo esto en mi trabajo, para variar, no lo he podido pasar aún por el compilador, aún así, envío el ejercicio.
Clase SalonCasa
/*Ejercicio CU00641B Clase SalonCasa*/
//Declaración de la clase:
public class SalonCasa{
/*Declaración de atributos*/
int numeroDeTelevisores;
String tipoSalon;
//Declaración del constructor:
public Persona(){
/*Inicialización de variables*/
numeroDeTelevisores = 0;
tipoSalon = "desconocido";
}//Cierre de constructor
/*setters y getters*/
public void setTipoSalon (String valorTipoSalon) {
tipoSalon = valorTipoSalon;
} //Cierre del método setter
public void setNumeroDeTelevisores (int valorNumeroDeTelevisores) {
numeroDeTelevisores = valorNumeroDeTelevisores;
} //Cierre del método setter
public int getNumeroDeTelevisores () { return numeroDeTelevisores; } //Cierre del
método getter
public String getTipoSalon () { return tipoSalon; } //Cierre del método getter
}//Fin de la clase
Clase CocinaCasa
/*Ejercicio CU00641B Clase CocinaCasa*/
//Declaración de la clase:
public class CocinaCasa {
/*Declaración de atributos*/
boolean esIndependiente;
int numeroDeFuegos;
//Declaración del constructor:
public CocinaCasa(){
/*Inicializaciòn de Variables*/
esIndependiente = false;
numeroDeFuegos = 0;
}//Cierre de constructor
/*Setters y getters*/
public void setEsIndependiente (boolean valorEsIndependiente) {
esIndependiente = valorEsIndependiente;
} //Cierre del método setter
public void setNumeroDeFuegos (int valorNumeroDeFuegos) {
numeroDeFuegos = valorNumeroDeFuegos;
} //Cierre del método setter
public boolean getEsIndependiente () { return esIndependiente; } //Cierre del
método getter
public int getNumeroDeFuegos () { return numeroDeFuegos; } //Cierre del método
getter
}//Fin de la clase
y por último, la clase Casa
/*Ejercicio CU00641B Clase Casa*/
//Declaración de la clase:
public class Casa {
/*Declaración de atributos*/
double superficie;
String direccion;
private SalonCasa salonCasa;
private CocinaCasa cocina;
//Declaración del constructor:
public Casa(){
/*Inicialización de Variables*/
superficie = 0.0;
direccion = "desconocida";
salonCasa = new SalonCasa();
cocina = new CocinaCasa();
}//Cierre de constructor
/*Setters y getters*/
public void setSuperficie (double valorSuperficie){
superficie = valorSuperficie;
}//Cierre del setter superficie
public void setDireccion (String valorDireccion){
Direccion = valorDireccion;
}//Cierre del setter direccion
public void setDatosSalon (int valorNumeroDeTelevisores, String valorTipoSalon){
salonCasa.setNumeroDeTelevisores(valorNumeroDeTelevisores);
salonCasa.setTipoSalon (valorTipoSalon);}// Cierre del setter DatosSalon
public void setDatosCocina (int valorNumeroDeFuegos, boolean valorEsIndependiente){
cocina.setNumeroDeFuegos(valorNumeroDeFuegos);
cocina.setEsIndependiente (valorEsIndependiente)}// Cierre del setter
DatosCocina
//Método para obtener el valor de un atributo
public double getSuperficie () { return superficie; } //Cierre del método getter
public String getDireccion () { return direccion; } //Cierre del método getter
/*Getters de las clases CocinaCasa y SalonCasa*/
}//Fin de la clase
Como pueden ver, me falta los metodos getter para consegir los datos de cocina y salon, no se me ocurre como obtenerlos T_T :'( :'( :'(
Me podrían ayudar con esto por favor T_T
Salu2
-
Hola, lo he revisado:
En la clase SalonCasa pones public Persona() -- > cambiarlo por public SalonCasa()
En las clases SalonCasa y CocinaCasa te falta poner private delante de la declaración de los atributos.
En la clase casa faltaría private en los atributos superficie y direccion
double superficie;
String direccion;
private SalonCasa salonCasa;
private CocinaCasa cocina;
Los atributos siempre llevan private delante (al menos siempre que específicamente no se pretenda hacer algo especial)
Los métodos setDatosSalon y setDatosCocina no estarían bien planteados: ver comentarios en https://www.aprenderaprogramar.com/foros/index.php?topic=964
Para ver cómo plantear los métodos get de Cocina y Salon ver comentarios en https://www.aprenderaprogramar.com/foros/index.php?topic=964
Saludos
-
En esta clase, no declare los atributos de clase como private debido a que cuando se crea un objeto tipo Casa con los parametros
(int valorNumeroDeTelevisores, String valorTipoSalon) inicializados en el constructor 2 de la clase Casa, el compilador rechaza la accion
por estar estos atributos declarados private, lo que impide que el valor que se les da a estos atributos pertenecientes también al campo tipo objeto
(nuevoSalonCasa) de la clase Casa, no se almacenen como valor del atributo y por ende tampoco se observa el cambio al hacer "Inspect" sobre un objeto tipo casa y luego "Inspect"
sobre un campo tipo objeto (nuevoSalonCasa)
Clase SalonCasa
public class SalonCasa{
int numeroDeTelevisores;
String tipoSalon;
//Constructor general
public SalonCasa(){
numeroDeTelevisores = 0;
tipoSalon = "Desconocido";
}
//setters
public void setNumeroDeTelevisores(int valorNumeroDeTelevisores){numeroDeTelevisores = valorNumeroDeTelevisores;}
public void setTipoSalon(String valorTipoSalon){tipoSalon = valorTipoSalon;}
//getters
public int getNumeroDeTelevisores(){return numeroDeTelevisores;}
public String getTipoSalon(){return tipoSalon;}
}
Clase CocinaCasa
public class CocinaCasa{
private boolean esIndependiente;
private int numeroDeFuegos;
//Constructor general
public CocinaCasa(){
esIndependiente = false;
numeroDeFuegos = 0;
}
//setters
public void setEsIndependiente(boolean valorEsIndependiente){esIndependiente = valorEsIndependiente;}
public void setNumeroDeFuegos(int valorNumeroDeFuegos){numeroDeFuegos = valorNumeroDeFuegos;}
//getters
public boolean getEsIndependiente(){return esIndependiente;}
public int getNumeroDeFuegos(){return numeroDeFuegos;}
}
Clase Casa
public class Casa{
private double superficie;
private String direccion;
private SalonCasa nuevoSalonCasa;
private CocinaCasa nuevaCocinaCasa;
//Constructor 1 (general)
public Casa(){
superficie = 0.0;
direccion = "Desconocida";
nuevoSalonCasa = new SalonCasa();
nuevaCocinaCasa = new CocinaCasa();
}
//Constructor 2 (inicializado)
public Casa(double valorSuperficie , String valorDireccion, SalonCasa objetoSalonCasa, CocinaCasa objetoCocinaCasa,
int valorNumeroDeTelevisores, String valorTipoSalon){
superficie = valorSuperficie;
direccion = valorDireccion;
nuevoSalonCasa = new SalonCasa();
nuevaCocinaCasa = new CocinaCasa();
nuevoSalonCasa.numeroDeTelevisores = valorNumeroDeTelevisores;
nuevoSalonCasa.tipoSalon = valorTipoSalon;
}
//setters para atributos simples de la clase Casa
public void setSuperficie(double valorSuperficie){superficie = valorSuperficie;}
public void setDireccion(String valorDireccion){direccion = valorDireccion;}
//setters para los atributos simples de los objetos tipo SalonCasa dentro de la clase Casa
public void setNumeroDeTelevisores(int valorNumeroDeTelevisores){nuevoSalonCasa.setNumeroDeTelevisores(valorNumeroDeTelevisores);}
public void setTipoSalon(String valorTipoSalon){nuevoSalonCasa.setTipoSalon(valorTipoSalon);}
//setters para los atributos simples de los objetos tipo CocinaCasa dentro de la clase Casa
public void setNumeroDeFuegos(int valorNumeroDeFuegos){nuevaCocinaCasa.setNumeroDeFuegos (valorNumeroDeFuegos);}
public void setEsIndependiente(boolean valorEsIndependiente){nuevaCocinaCasa.setEsIndependiente(valorEsIndependiente);}
}
Salu2
-
Hola sniper, el código planteado es correcto excepto este constructor en la clase Casa:
public Casa(double valorSuperficie , String valorDireccion, SalonCasa objetoSalonCasa, CocinaCasa objetoCocinaCasa,
int valorNumeroDeTelevisores, String valorTipoSalon){
superficie = valorSuperficie;
direccion = valorDireccion;
nuevoSalonCasa = new SalonCasa();
nuevaCocinaCasa = new CocinaCasa();
nuevoSalonCasa.numeroDeTelevisores = valorNumeroDeTelevisores;
nuevoSalonCasa.tipoSalon = valorTipoSalon;
}
Cada objeto debe encargarse de sus atributos, pero no de atributos de otras clases. En este caso la clase Casa tiene que inicializar sus 4 atributos superficie, direccion, nuevoSalonCasa y nuevaCocinaCasa y no debería ocuparse de establecer el número de televisores o el tipo de salón para el objeto de tipo SalonCasa.
El motivo: cada objeto tiene sus tareas y no tiene que inmiscuirse en las tareas propias de otros objetos (principio de la programación orientada a objetos)
Saludos!
-
Entendi2! ;D
-
Espero estar en lo correcto ahora. He retomado el curso después de varios meses con muchas cosas que hacer que no me dejaban tiempo para éste.
Nuevamente, aquí está mi código.
Clase SalonCasa:
/*Ejercicio CU00641B*/
/*Clase SalonCasa*/
//Declaración de la clase SalonCasa
public class SalonCasa(){
private int numeroDeTelevisores;
private String tipoSalon;
//Constructor de objetos de la clase SalonCasa
public SalonCasa(){
numeroDeTelevisores = 0;
tipoSalon = "desconocido";
}//Cierre del constructor
//Métodos setter de la clase
public void setNumeroDeTelevisores(int valorNumeroDeTelevisores){
numeroDeTelevisores = valorNumeroDeTelevisores;
}//Cierre del método
public void setTipoSalon(String valorTipoSalon){
tipoSalon = valorTipoSalon;
}//Cierre del método
//Métodos getter de la clase
public int getNumeroDeTelevisores(){return numeroDeTelevisores;}//Cierre del método
public String getTipoSalon(){return tipoSalon;}//Cierre del método
}//Cierre de la clase
Clase CocinaCasa:
/*Ejercicio CU00641B*/
/*Clase CocinaCasa*/
Declaración de la casa CocinaCasa
public class CocinaCasa(){
private boolean esIndependiente;
private int numeroDeFuegos;
//Constructor de objetos de la clase CocinaCasa
public CocinaCasa(){
esIndependiente = false;
numeroDeFuegos = 0;
}//Cierre del constructor
//Métodos setter de la clase
public void setEsIndependiente(boolean valorEsIndependiente){
esIndependiente = valorEsIndependiente;
}//Cierre del método
public void setNumeroDeFuegos(int valorNumeroDeFuegos){
numeroDeFuegos = valorNumeroDeFuegos;
}//Cierre del método
//Métodos getter de la clase
public boolean getEsIndependiente(){return esIndependiente;}//Cierre del método
public int getNumeroDeFuegos(){return numeroDeFuegos;}//Cierre del método
}//Cierre de la clase
Clase Casa:
/*Ejercicio CU00641B*/
/*Clase Casa*/
//Declaración de la Clase Casa
public class Casa(){
private double superficie;
private String direccion;
private SalonCasa salon;
private CocinaCasa cocina;
//Constructor de objetos de la clase Casa
public Casa(){
superficie = 85;
direccion = "desconocida";
salon = new SalonCasa();//Creamos un objeto salonCasa con el constructor general de SalonCasa
cocina = new CocinaCasa();//Creamos un objeto cocina con el constructor general de CocinaCasa
}//Cierre del constructor
//Métodos setter de la clase
public void setSuperficie(double valorSuperficie){
superficie = valorSuperficie;
}//Cierre del método
public void setDireccion(String valorDireccion){
direccion = valorDireccion;
}//Cierre del método
public void setSalon(SalonCasa valorSalon){
salon = new SalonCasa();
salon.setNumeroDeTelevisores(valor.getNumeroDeTelevisores());
salon.setTipoSalon(valor.getTipoSalon());
}//Cierre del método
public void setCocina(CocinaCasa valorCocina){
cocina = new CocinaCasa();
cocina.setEsIndependiente(valor.getEsIndependiente());
cocina.setNumeroDeFuegos(valor.getNumeroDeFuegos());
}//Cierre del método
//Métodos getter de la clase
public double getSuperficie(){return superficie;}//Cierre del método
public String getDireccion(){return direccion;}//Cierre del método
public SalonCasa getSalon(){return salon;}//Cierre del método
public CocinaCasa getCocina(){return cocina;}//Cierre del método
}//Cierre de la clase
Saludos...
-
Hola jogonzalez
Por lo que veo en las clases que envías, parece que las escribes pero no las compilas ni las pruebas, pues dan errores al compilar.
Tienes errores de sintaxis que el compilador te dice como solucionar, esto es otra muestra de que no compilas.
Tú como creador del código, eres el primer interesado en comprobar que tu código funciona bien.
Te pido que antes de enviar tu código lo compiles. Y si te surgen dudas que no sabes como solucionar, aquí nos tienes para ayudarte.
Pero primero te tienes que ayudar a ti mismo.
En la cabecera de la clase tienes esta línea que presenta un error
public class SalonCasa(){
(Mira como empiezan otras clases.)
Saludos