Hola javalopez:
Revisé tu código y he de decirte que tu ejercicio está muy bien! Felicitaciones.
Destaco sobre todo que el código está muy bien estructurado, y que has nombrado las clases, los métodos, y los parámetros respetando las convenciones.
Me resta únicamente hacerte una observación que es la siguiente:
En el constructor de la clase Casa se deberían inicializar todas los campos de instancia. Es decir que además de crear los objetos tipo SalonCasa y CocinaCasa, deberíamos inicializar el campo dirección y superficie a valores por defecto.
La consigna del ejercicio decía:
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.
De esta manera el constructor de la clase Casa quedaría:
public Casa(){
salonCasa=new SalonCasa();
cocinaCasa=new CocinaCasa();
superficie=0.0;
direccion="";
}
Por último destaco hayas codificado un nuevo método, el cual no se pedía en la consigna del ejercicio, celebro esa iniciativa!
El nombre del método getDatosCasa() está perfectamente elegido ya que has definido un método tipo función, donde se devuelve un atributo tipo String llamado datosCasa.
Una cuestión interesante de analizar es la siguiente: si el método tipo funcion getDatosCasa() devuelve un String, esa debería ser su única tarea, es para lo que sirve el método, una tarea bien específica. Por lo tanto no debería exisitir aquí una línea como:
System.out.println (datosCasa);
pero por el momento dejaremos esta línea en el método.
Pero sí ten en cuenta para el futuro, que un método que imprima por consola, debería ser un método tipo procedimiento y cuya función solamente fuese esa: sacar datos por consola (no retornar datos), a la cual podríamos nombrar como mostrarDatosCasa() o un nombre similar.