Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: rodrigo_avia en 17 de Diciembre 2014, 12:19
-
Hola a todos.
Dejo mi ejercicio CU00641B. Lo compilo y va bien pero creo que tengo algo mal porque al probar los objetos creados no me relacionan las clases.
public class CocinaCasa{
private boolean eslndependiente;
private int numeroDeFuegos;
public CocinaCasa (){
eslndependiente=false;
numeroDeFuegos=0;}
public void setEslndependiente(boolean valorEslndependiente){
eslndependiente=valorEslndependiente;}
public void setNumeroDeFuegos(int valorNumeroDeFuegos){
numeroDeFuegos=valorNumeroDeFuegos;}
public boolean getEslndependiente(){
return eslndependiente;}
public int getNumeroDeFuegos(){
return numeroDeFuegos;}
}public class SalonCasa{
private int numeroDeTelevisiones;
private String tipoSalon;
public SalonCasa(){
numeroDeTelevisiones=0;
tipoSalon="Desconocido";}
public void setNumeroDeTelevisiones(int valorNumeroDeTelevisiones){
numeroDeTelevisiones=valorNumeroDeTelevisiones;}
public void setTipoSalon(String valorTipoSalon){
tipoSalon=valorTipoSalon;}
public int getNumeroDeTelevisiones(){
return numeroDeTelevisiones;}
public String getTipoSalon(){
return tipoSalon;}
}
public class Casa {
private double superficie;
private String direccion;
private SalonCasa nuevoSalonCasa;
private CocinaCasa nuevaCocinaCasa;
public Casa(){
superficie=0.0;
direccion="";
nuevoSalonCasa = new SalonCasa();
nuevaCocinaCasa = new CocinaCasa();}
public void setSuperficie(double valorSuperficie){
superficie=valorSuperficie;}
public void setDireccion(String valorDireccion){
direccion=valorDireccion;}
public void setSalonCasa(){
nuevoSalonCasa=nuevoSalonCasa;}
public void setCocinaCasa(){
nuevaCocinaCasa=nuevaCocinaCasa;}
public double getSuperficie(){
return superficie;}
public String getDireccion(){
return direccion;}
public SalonCasa getSalonCasa(){
return nuevoSalonCasa;}
public CocinaCasa getCocinaCasa(){
return nuevaCocinaCasa;}
}
Gracias
-
Hola rodrigo_avia
Tus clases SalonCasa y CocinaCasa están bien.
Hay una cosa en CocinaCasa que no es importante, el atributo que tu has nombrado
es(ele)npendiente debería ser
es(I)ndependiente
En la clase Casa lo tienes todo bien excepto los setters de los atributos nuevoSalonCasa y nuevaCocinaCasa, en que ahora igualas los atributos a si mismos cuando deberían ser:
public void setNuevoSalonCasa(SalonCasa valorSalonCasa){
nuevoSalonCasa=valorSalonCasa;}
public void setNuevaCocinaCasa(CocinaCasa valorCocinaCasa){
nuevaCocinaCasa=valorCocinaCasa;}
Si te fijas son muy parecidos a los otros setters de esta clase.
Mira, comparamos los setters de direccion y de nuevoSalonCasa
public void setDireccion
public void setNuevoSalonCasa
setDireccion es el nombre del atributo en mayúsculas precedido del prefijo set
setNuevoSalonCasa es el nombre del atributo en mayúsculas precedido del prefijo set
------------------
String valorDireccion
SalonCasa valorSalonCasa
String es el tipo de objeto que es valorDireccion
SalonCasa es el tipo de objeto que es valorSalonCasa
------------------
direccion es el nombre del atributo que modificamos en este setter
nuevoSalonCasa es el nombre del atributo que modificamos en este setter
valorDireccion es el parámetro de tipo String que asignamos al atributo direccion
valorSalonCasa es el parámetro de tipo SalonCasa que asignamos al atributo nuevoSalonCasa
Y ya está.
Para probar estos métodos set (setSalonCasa y setCocinaCasa), haz lo siguiente:
Crea primero dos objetos, uno de tipo SalonCasa y otro de tipo CocinaCasa
una vez tengas creados estos objetos que aparecen de color rojo en la ventana de BlueJ, cámbiale el valor a sus atributos (por unos valores distintos de los que tiene por defecto) con los métodos set que creaste en cada clase
Luego creas un objeto de tipo Casa. Primero compruebas con los métodos get que los atributos de la clase Casa con los definidos en tu constructor.
Luego invocas uno de los métodos set, por ejemplo setNuevoSalonCasa. BlueJ te preguntará en una ventana como se llama el objeto de tipo SalonCasa que quieres aportar como parámetro, tu escribes el nombre del objeto recién creado de ese tipo o bien haces un clic con el ratón en él. Y aceptas.
Así podrás comprobar con el getter del mismo atributo, que contiene el objeto cuyos parámetros modificaste antes.
Espero que estos pasos te ayuden a entender esta clase (Casa) que ademas de utilizar objetos de tipo String por ejemplo, también utiliza objetos de tipo SalonCasa (que creamos con nuestra clase)
Si hay algo que no te funcione, o no entiendas, nos tienes en el foro. Saludos
-
Hola rodrigo_avia!
Con relación a tu duda: Lo compilo y va bien pero creo que tengo algo mal porque al probar los objetos creados no me relacionan las clases.
Si lo dices porque a la hora de compilar tus clases, Bluej "no crea una relación" entre clases usando la flecha con linea discontinua (ClaseAQueUsa-------------->LaClaseB) entonces te cito el siguiente párrafo de la entrega CU00641B: En algunas circunstancias BlueJ puede mantener
erróneamente indicadores de relación que no son ciertos. En estos casos, las flechas pueden eliminarse
seleccionándolas y con botón derecho eligiendo la opción Remove. También pueden crearse eligiendo
el botón ----> en la parte superior izquierda de la pantalla y a continuación pulsando primero el icono de
la “clase que usa” y luego el icono de la “clase que es usada”.
En ocasiones BlueJ no crea la flecha de relación, pero como se explica en la anterior cita, si estamos consientes de que existe una relación entre clases, podemos indicarlo colocando la flecha de relación de uso manualmente.
Saludos!
-
hola.Muchas gracias.Ya lo e corregido y lo e probado.Ahora lo entiendo mejor.
Le doy un 10 a la pagina y a todos los moderadores por sus respuestas.