Autor Tema: Ejercicio CU00641B tutorial java meter objetos dentro de otros objetos  (Leído 3628 veces)

rodrigo_avia

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 8
    • Ver Perfil
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.

Código: [Seleccionar]
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;}
 }
Código: [Seleccionar]
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;}
 }

Código: [Seleccionar]
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
« Última modificación: 18 de Diciembre 2014, 08:53 por Alex Rodríguez »

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Re:Ejercicio CU00641B
« Respuesta #1 en: 17 de Diciembre 2014, 21:49 »
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:

Código: [Seleccionar]
    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

Jorge lopez

  • Sniper
  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 248
  • @SniperOfElite
    • Ver Perfil
Re:Ejercicio CU00641B
« Respuesta #2 en: 18 de Diciembre 2014, 00:31 »
 Hola rodrigo_avia!

Con relación a tu duda:
Citar
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:
Citar
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!
while(estesVivo)
{
  aprende();
  ayuda();
  enseña();
}
if(mueres){teRecordaran();}

rodrigo_avia

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 8
    • Ver Perfil
Re:Ejercicio CU00641B tutorial java meter objetos dentro de otros objetos
« Respuesta #3 en: 19 de Diciembre 2014, 16:48 »
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.

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".