Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: dlegolas en 26 de Octubre 2015, 20:29
-
Tengo algunas dudas en el ejercicio CU00642B, aunque yo haga creado los objetos SalonCasa y CocinaCasa luego, cuando los invoco desde el objeto Casa (y lo inspecciono) el me trae los valores por defecto de los constructores de los objetos y nos los que cree, eso es correcto?
Clase SalonCasa
public class SalonCasa {
private int numeroDeTelevisores;
private String tipoSalon;
public SalonCasa(){
numeroDeTelevisores = 0;
tipoSalon = "Desconocido";
}
public SalonCasa(int vNumTV, String vTipoSalon){
numeroDeTelevisores = vNumTV;
tipoSalon = vTipoSalon;
}
public void setNumTV (int vNumTV) {
numeroDeTelevisores = vNumTV;
}
public void setTipoSalon(String vTipoSalon){
tipoSalon = vTipoSalon;
}
public int getNumTv(){
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 CocinaCasa(boolean vIndependiente, int vNumFuegos){
esIndependiente = vIndependiente;
numeroDeFuegos = vNumFuegos;
}
public void setEsIndependiente (boolean vEsIndependiente){
esIndependiente = vEsIndependiente;
}
public void setNumeroDeFuegos (int vNumFuegos){
numeroDeFuegos = vNumFuegos;
}
public boolean getEsIndependiente (){
return esIndependiente;
}
public int getNumerodeFuengos (){
return numeroDeFuegos;
}
}
Clase Casa
public class Casa {
private double superficie;
private String direccion;
private SalonCasa salonCasa;
private CocinaCasa cocina;
public Casa(){
superficie = 440.35;
direccion = "La casa 1";
salonCasa = new SalonCasa();
cocina = new CocinaCasa();
}
public Casa (double vSuperficie, String vDireccion, int vNumTV, String vTipoSalon, boolean vIndependiente, int vNumFuegos){
superficie = vSuperficie;
direccion = vDireccion;
salonCasa = new SalonCasa(vNumTV, vTipoSalon);
cocina = new CocinaCasa(vIndependiente, vNumFuegos);
}
public Casa (double vSuperficie, String vDireccion, SalonCasa objetoSalon, CocinaCasa objetoCocina) {
superficie = vSuperficie;
direccion = vDireccion;
salonCasa = new SalonCasa();
cocina = new CocinaCasa();
}
}
-
Hola, las clases CocinaCasa y SalonCasa las tienes bien definidas.
Sin embargo la clase Casa no está bien definida.
Este constructor no está bien diseñado:
public Casa (double vSuperficie, String vDireccion, int vNumTV, String vTipoSalon, boolean vIndependiente, int vNumFuegos)
El constructor de una clase únicamente debe manejar atributos de la clase, y no de otras clases indirectamente. Por tanto no es correcto incluir en este constructor vNumTV, vTipoSalon, vIndependiente, etc.
También faltan en la clase Casa los métodos get y set.
Este otro constructor:
public Casa (double vSuperficie, String vDireccion, SalonCasa objetoSalon, CocinaCasa objetoCocina) {
superficie = vSuperficie;
direccion = vDireccion;
salonCasa = new SalonCasa();
cocina = new CocinaCasa();
}
Es algo más razonable, porque aquí si recibes como parámetros atributos de la clase. Pero al escribir
salonCasa = new SalonCasa();
cocina = new CocinaCasa();
Lo que haces es crear nuevos objetos con los atributos de defecto, por eso cuando los analizas no te muestra los valores de los objetos parámetro sino los valores de defecto, porque new lo que hace es crear un objeto nuevo.
¿Para qué te están sirviendo aquí los parámetros SalonCasa objetoSalon, CocinaCasa objetoCocina
Para nada, porque no los utilizas. De hecho, podrías dejar el constructor así y tendrías los mismos resultados:
public Casa (double vSuperficie, String vDireccion) {
superficie = vSuperficie;
direccion = vDireccion;
salonCasa = new SalonCasa();
cocina = new CocinaCasa();
}
Recomendación: repasar entregas anteriores y consultar este hilo https://www.aprenderaprogramar.com/foros/index.php?topic=1220.0 y este otro, https://www.aprenderaprogramar.com/foros/index.php?topic=1238.0 ejecutando el código de estos hilos y tratando de entenderlo paso a paso
Si tienes dudas consulta
Saludos