A continuación comento tu ejercicio.
Clase SalonCasa: variables, valores iniciales, nombres de métodos, todo correcto.
Clase CocinaCasa: todo correcto.
Clase Casa: Aunque podría ser aceptable, algunos puntos referentes a los metodos setters y getters para los atributos tipo objeto merecen ser comentados.
El nombre del metodo setSalonCasa, no es apropiado. El nombre de un método set o get, ha de ser una combinacion del prefijo "set" o "get" + exactamente el nombre de la variable asociada a este, por ejemplo puesto que la variable relacionada a este método es la variable "salon" un nombre correcto seria setSalon, si el nombre de la variable fuera "salonCasa" pues el nombre que has utilizado seria perfecto. Lo mismo para los métodos getters de los campos (variables) tipo objeto.
Por otra parte, en los métodos setters de los campos tipo objeto es preferible eliminar la siguiente linea de codigo:
salon = new SalonCasa();
(Lo mismo para el metodo set de la variable "cocina") debido a que ya a la variable "salon" se le a asignado un objeto tipo SalonCasa en el constructor de la clase "Casa" y es sobre este objeto que realizaremos los cambios deseados.
Para realizar cambios en este objeto tenemos varias opciones, por ejemplo invocar los métodos setter de los objetos pasandoles como parámetros los valores deseados, o definir en la clase Casa los métodos setters de los campos tipo objeto para que reciban como parámetro un objeto del tipo necesario. Tu tienes una combinación de estas dos opciones donde por ejemplo invocas sobre el campo "salon" métodos (setNumeroDeTvs() y setTipoSalon()) propios de la clase SalonCasa, y usas los valores de un objeto introducido como parámetro del método setSalonCasa
(de la clase Casa) para pasarlos como valores de parámetros en los métodos setNumeroDeTvs() y setTipoSalon() invocados sobre la variable "salon". Esto se podría decir que es complicado y confuso a la ves.
Algo mas sencillo y eficiente seria definir tu método setSalonCasa así:
public void setSalonCasa(SalonCasa valorSalonCasa)
{
Salon = valorSalonCasa;
}
Donde si creas constructores que reciban parámetros en las clases SalonCasa y CocinaCasa, pues notarias el gran potencial de este tipo de signatura.
Digamos que en la clase SalonCasa tienes el siguiente constructor con parámetros:
//Constructor con parámetros
public SalonCasa(int valorNumeroDeTvs, String valorTipoSalon){
numeroDeTvs = valorNumeroDeTvs;
tipoSalon = valorTipoSalon;
}
Ahora digamos que creas un objeto de la clase Casa, y que invocas el método
setSalonCasa(SalonCasa valorSalonCasa); donde al invocarlo escribirás como valor de campo:
new SalonCasa(10, "Salon de video juegos");
ahora consulta el valor del campo "salon" y el contenido del objeto que contiene. notas algún cambio?
Sobre tu duda:
Donde "salonCasa (tipo SalonCasa) y cocina (tipo CocinaCasa)... tienen los perentesis y al igual yo los agregue pero al momento que intentaba compilar me enviaba un error, se deben de poner los paréntesis o solo era para diferenciar lo que se debia colocar... me confundi un poco.
Es tal y como comenta Fernando, lo que esta dentro de los paréntesis es algo que se supone no debería de ser escrito porque deberias de deducirlo, (pero se escribe para mayor claridad) por eso se pone entre paréntesis, y hace referencia al tipo de la variable.
Sobre lo que comentas:
Entrego mi ejercicio, seré sincero probe mi ejercicio pero aun no entiendo muy bien si lo que hace esta correcto. Por alguna razon quede bloqueado y no termino de entender la verdadera funcion de las clases que utilizan otras clases en este ejercicio. Si me pudieran decir si lo que hice esta bien ó si me hace falta alguna cosa, cualquier comentario que pueda retroalimentar mi ejercicio.
Hay muchas cosas que las entenderás a su debido tiempo, cosas como por ejemplo: para que una clase utiliza a otra clase? yo podría ponerme a escribir y explicarte para que o porque unas clases utilizan a otras clases, pero algunas respuestas es mejor darlas en su momento oportuno para evitar confusiones, conforme avances en el curso tu mismo seras capas de responderte, por ahora lo importante es que asimiles lo que haces y que continúes avanzando.
Saludos!