Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: micaelasol en 10 de Enero 2022, 16:47
-
Hola! Aquí va el desarrollo de la actividad CU00641B del tutorial pdf Java de aprenderaprogramar.
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. Compila el código para comprobar que no presenta errores, crea un objeto de tipo Casa. Comprueba que se inicializan correctamente consultando el valor de sus atributos después de haber creado los objetos. Para comprobar si es correcta tu solución puedes consultar en los foros aprenderaprogramar.com.
Clase Casa:
public class Casa {
private double superficie;
private String direccion;
private SalonCasa salonCasa;
private CocinaCasa cocinaCasa;
public Casa (double superficieCasa, String direccionCasa, SalonCasa salonCasaCasa, CocinaCasa cocinaCasaCasa){
superficie = superficieCasa;
direccion = direccionCasa;
salonCasa = new SalonCasa ();
cocinaCasa = new CocinaCasa ();
}
public void setSuperficie (double valorSuperficie){
superficie = valorSuperficie;
}
public void setDireccion (String valorDireccion){
direccion = valorDireccion;
}
public void setSalonCasa (SalonCasa valorSalonCasa){
salonCasa = valorSalonCasa;
}
Clase SalonCasa
public class SalonCasa {
private int numeroDeTelevisores;
private String tipoSalon;
public SalonCasa (){
numeroDeTelevisores = 0;
tipoSalon = "desconocido";
}
public void setNumeroDeTelevisores (int valorNumeroDeTelevisores){
numeroDeTelevisores = valorNumeroDeTelevisores;
}
public void setTipoSalon (String valorTipoSalon){
tipoSalon = valorTipoSalon;
}
public int getNumeroDeTelevisores () {return numeroDeTelevisores;}
public String getTipoSalon () {return tipoSalon;}
}
CocinaCasa
public class CocinaCasa {
private boolean esIndependiente;
private int numeroDeFuegos;
public CocinaCasa (){
esIndependiente = false;
numeroDeFuegos = 0;
}
public void setEsIndependiente (boolean valorEsIndependiente){
esIndependiente = valorEsIndependiente;
}
public void setNumeroDeFuegos (int valorNumeroDeFuegos){
numeroDeFuegos = valorNumeroDeFuegos;
}
public boolean getEsIndependiente () {return esIndependiente;}
public int getNumeroDeFuegos () {return numeroDeFuegos;}
}
Muchas gracias.
-
Hola y bienvenido.
El constructor de la clase Casa...
public Casa (double superficieCasa, String direccionCasa, SalonCasa salonCasaCasa, CocinaCasa cocinaCasaCasa){
superficie = superficieCasa;
direccion = direccionCasa;
salonCasa = new SalonCasa ();
cocinaCasa = new CocinaCasa ();
}
...no cumple exactamente con lo que pide el enunciado:
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.
Es decir, debería recibir valores entre los paréntesis.
Simplemente inicializar la variables primitivas a unos valores "genéricos" por defecto (por ejemplo valor 0 para los datos numéricos y una cadena vacía para los String) e instanciar nuevos objetos para los variables que sean objetos e clase (esta parte sí la has hecho bien).
Y ya luego, para terminar de afinar la clase, completar los getter y setter.
Un saludo.
-
Gracias por responder con tanta rapidez y por las correcciones!
Aquí va entonces el código corregido:
Casa:
public class Casa {
private double superficie;
private String direccion;
private SalonCasa salonCasa;
private CocinaCasa cocinaCasa;
public Casa (double valorSuperficie, String valorDireccion, SalonCasa valorSalonCasa, CocinaCasa valorCocinaCasa){
superficie = 0.0;
direccion = "";
salonCasa = new SalonCasa ();
cocinaCasa = new CocinaCasa ();
}
public void setSuperficie (double valorSuperficie){
superficie = valorSuperficie;
}
public void setDireccion (String valorDireccion){
direccion = valorDireccion;
}
public void setSalonCasa (SalonCasa valorSalonCasa){
salonCasa = valorSalonCasa;
}
public void setCocinaCasa (CocinaCasa valorCocinaCasa){
cocinaCasa = valorCocinaCasa;
}
public double getSuperficie () {return superficie;}
public String getDireccion () {return direccion;}
public SalonCasa getSalonCasa () {return salonCasa;}
public CocinaCasa getCocinaCasa () {return cocinaCasa;}
}
Muchas gracias nuevamente!
-
Mejor, pero sigue sin ser necesarios los parámetros recibidos por paréntesis.
public Casa (double valorSuperficie, String valorDireccion, SalonCasa valorSalonCasa, CocinaCasa valorCocinaCasa){
superficie = 0.0;
direccion = "";
salonCasa = new SalonCasa ();
cocinaCasa = new CocinaCasa ();
}
La mayoría de veces, sí vamos a querer recibir parámetros por los paréntesis del constructor y usarlos para asignarlos a los atributos.
E incluso verás que será habitual tener dos (o más) constructores, uno que no reciba parámetros y otro que sí.
Pero en este ejercicio en concreto, no los vamos a necesitar, por lo que el constructor quedaría así:
public Casa(){
superficie = 0.0;
direccion = "";
salonCasa = new SalonCasa();
cocinaCasa = new CocinaCasa();
}
Sigue compartiendo tus dudas, espero que aprendas y te diviertas con el curso Java.
Un saludo.
-
Genial, ya lo he entendido! Muchísimas gracias!!