Hola.
Respecto al código que has agregado....
Para que la clase
Casa pueda mostrar toda la información, como el número de televisores, etc... no es necesario que añadas nuevos atributos, porque en realidad la clase
Casa ya dispone de esa información, solo que está encapsulada en otros objetos.
Además, esos atributos "añadidos", aunque se llamen igual, son distintos de los atributos "originales" y no tendrán los mismos valores.
El
número de televisores y el
tipo de salón, se los podemos solicitar al objeto
SalonCasapublic class Casa {
private double superficie;
private String direccion;
private SalonCasa salonCasa;
private CocinaCasa cocinaCasa;
private int numeroDeTelevisores;
private String tipoSalon;
private boolean esIndependiente;
private int numeroDeFuegos;
Y el
número de fuegos que tiene la cocina y saber si esta
es independiente, se lo podemos preguntar al objeto
CocinaCasapublic class Casa {
private double superficie;
private String direccion;
private SalonCasa salonCasa;
private CocinaCasa cocinaCasa;
private int numeroDeTelevisores;
private String tipoSalon;
private boolean esIndependiente;
private int numeroDeFuegos;
Así que no se necesitan más atributos, es suficiente con estos:
public class Casa {
private double superficie;
private String direccion;
private SalonCasa salonCasa;
private CocinaCasa cocinaCasa;
¿Y cómo hacemos que la clase
Casa tenga getters para mostrar esos datos "encapsulados" en
SalonCasa y
CocinaCasa?
Pues hacemos que los getters de
Casa, invoquen a los getters de esos objetos.
Por ejemplo, para que
Casa pueda informar del nº de televisores:
public int getNumeroDeTelevisores () {return salonCasa.getNumeroDeTelevisores();}
¿Ves? Un método no tiene por qué retornar siempre el valor de una variable. Puede retornar también el valor que nos retorne otro método.
Así que el
getNumeroDeTelevisores() de
Casa, retorna lo que resulte de llamar al
getNumeroDeTelevisores() de
SalonCasa, quien a su vez retorna el valor de su atributo
numeroDeTelevisores.
Este último atributo es el válido, el auténtico, el que tiene el valor que nos interesa.
Si añades otro atributo a
Casa, aunque tenga el mismo nombre, no tendrá nada que ver con el de
SalonCasa y podrían tener valores distintos.
Esto mismo es aplicable a los setters.
Si quisiéramos que la clase
Casa pudiera recibir y modificar el número de televisores, lo que haría será llamar al setter de
SalonCasa y transferir el valor que ha recibido:
public void setNumeroDeTelevisores (int valorNumeroDeTelevisores){
salonCasa.setNumeroDeTelevisores(valorNumeroDeTelevisores);
}
Espero haberme explicado bien.
Prueba a corregir los otros getters y setters de
Casa para que interactúen con los correspondientes getter/setters de sus atributos
SalonCasa y
CocinaCasa