Autor Tema: practica CU00642B# inicializar objetos java métodos que reciben objetos y crean  (Leído 3886 veces)

BelCrow

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 46
  • Técnico en Redes (CCNA-IT).
    • Ver Perfil
Aquí mi practica CU00642B, por favor revisar....

(Nota: tuve que agregarles un constructor con parámetros a CocinaCasa y a SalonCasa, para que no me tire el error en la Compilación de Casa, aun ambas clases tiene su constructor que les defina valores por defecto también. )

SalonCasa:

Código: [Seleccionar]
//clase
public class SalonCasa {
    private int numeroDeTelevisores;
    private String tipoSalon;
   
    //constructor
    public SalonCasa () {
        numeroDeTelevisores = 0;
        tipoSalon = "Desconocido";
    }
   
    //constructor con parametros
    public SalonCasa (int valorNumeroDeTelevisores, String valorTipoSalon) {
        numeroDeTelevisores = valorNumeroDeTelevisores;
        tipoSalon = valorTipoSalon;
    }
   
    //setters
    public void setNumeroDeTelevisores (int valorNumeroDeTelevisores) {
        numeroDeTelevisores = valorNumeroDeTelevisores;
    }
   
    public void setTipoSalon (String valorTipoSalon) {
        tipoSalon = valorTipoSalon;
    }
   
    //getters
    public int getNumeroDeTelevisores () {return numeroDeTelevisores;}
   
    public String getTipoSalon () {return tipoSalon;}
}

CocinaCasa:

Código: [Seleccionar]
//clase
public class CocinaCasa {
    private boolean esIndependiente;
    private int numeroDeFuegos;
   
    //constructor
    public CocinaCasa () {
        esIndependiente = false;
        numeroDeFuegos = 0;
    }
   
    //contructor con parametros
    public CocinaCasa (boolean valorEsIndependiente, int valorNumeroDeFuegos) {
        esIndependiente = valorEsIndependiente;
        numeroDeFuegos= valorNumeroDeFuegos;
    }
   
    //setters
    public void setEsIndependiente (boolean valorEsIndependiente) {
        esIndependiente = valorEsIndependiente;
    }
   
    public void setNumeroDeFuegos (int valorNumeroDeFuegos) {
        numeroDeFuegos = valorNumeroDeFuegos;
    }
   
    //gettes
    public boolean getEsIndependente () {return esIndependiente;}
   
    public int getNumeroDeFuegos () {return numeroDeFuegos;}
}

Casa:

Código: [Seleccionar]
//clase con otras clases
public class Casa {
    private double superficie;
    private String direccion;
    private SalonCasa salonCasa;
    private CocinaCasa cocina;

    //constructor
    public Casa () {
        superficie = 0.0;
        direccion = "";
        salonCasa = new SalonCasa ();
        cocina = new CocinaCasa ();
    }

    //constuctor con parametros
    public Casa (double valorSuperficie, String valorDireccion, SalonCasa objetoSalonCasa, CocinaCasa objetoCocinaCasa) {
        superficie = valorSuperficie;
        direccion = valorDireccion;
        salonCasa = new SalonCasa (objetoSalonCasa.getNumeroDeTelevisores(), objetoSalonCasa.getTipoSalon() );
        cocina = new CocinaCasa (objetoCocinaCasa.getEsIndependente(), objetoCocinaCasa.getNumeroDeFuegos() );
    }

    //setters de esta clase
    public void setSuperficie (double valorSuperficie) {
        superficie = valorSuperficie;
    }

    public void setDireccion (String valorDireccion) {
        direccion = valorDireccion;
    }

    //setters de las otras clases

    public void setSalonCasa (int valorNumeroDeTelevisores, String valorTipoSalon) {
        salonCasa.setNumeroDeTelevisores(valorNumeroDeTelevisores);
        salonCasa.setTipoSalon(valorTipoSalon);
    }

    public void setCocina (boolean valorEsIndependiente, int valorNumeroDeFuegos) {
        cocina.setEsIndependiente(valorEsIndependiente);
        cocina.setNumeroDeFuegos(valorNumeroDeFuegos);
    }

    //getters de esta clase
    public double getSuperficie () {return superficie;}

    public String getDireccion () {return direccion;}

    //getters de las otras clases
    public SalonCasa getSalonCasa () {return salonCasa;}

    public CocinaCasa getCocina () {return cocina;}
}
« última modificación: 10 de Noviembre 2015, 08:50 de César Krall »
public lenguajePoderoso () {
          java = "poder";
       }

Mario R. Rancel

  • Administrador
  • Experto
  • ********
  • APR2.COM
  • Mensajes: 1934
    • Ver Perfil
Re:practica CU006342B
« Respuesta #1 : 02 de Septiembre 2014, 08:54 »
Has puesto como referencia CU006342B pero ese número no existe...

El código es correcto aunque este fragmento:

Clase Casa:

Código: [Seleccionar]
    //setters de las otras clases

    public void setSalonCasa (int valorNumeroDeTelevisores, String valorTipoSalon) {
        salonCasa.setNumeroDeTelevisores(valorNumeroDeTelevisores);
        salonCasa.setTipoSalon(valorTipoSalon);
    }

    public void setCocina (boolean valorEsIndependiente, int valorNumeroDeFuegos) {
        cocina.setEsIndependiente(valorEsIndependiente);
        cocina.setNumeroDeFuegos(valorNumeroDeFuegos);
    }


Sería mejor resolverlo usando objetos como comentamos aquí: http://www.aprenderaprogramar.com/foros/index.php?topic=1220.0

Cuanto antes te acostumbres a trabajar con objetos mejor para tí.

Saludos!!!

BelCrow

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 46
  • Técnico en Redes (CCNA-IT).
    • Ver Perfil
Re:practica CU006342B
« Respuesta #2 : 02 de Septiembre 2014, 11:58 »
haaa en CU006342B se me fue un 3 de sobra :P sorry....

respecto a lo del fragmento :

Código: [Seleccionar]
    //setters de las otras clases

    public void setSalonCasa (int valorNumeroDeTelevisores, String valorTipoSalon) {
        salonCasa.setNumeroDeTelevisores(valorNumeroDeTelevisores);
        salonCasa.setTipoSalon(valorTipoSalon);
    }

    public void setCocina (boolean valorEsIndependiente, int valorNumeroDeFuegos) {
        cocina.setEsIndependiente(valorEsIndependiente);
        cocina.setNumeroDeFuegos(valorNumeroDeFuegos);
    }

me habías dicho que esa parte esta bien orientada a objetos de acuerdo a la forma 3 que fue la que utilice..

Citar
Forma 1 (trabajando con objetos):

Recibir un objeto e igualar el atributo al objeto recibido. Sería:

    public void setSalonCasa (SalonCasa objetoSalon) {
        salonCasa = objetoSalon;
    }


Forma 2 (trabajando con objetos):

Recibir un objeto y crear un nuevo objeto cuyos atributos sean iguales a los del objeto recibido:

    public void setSalonCasa (SalonCasa objetoSalon) {
        salonCasa = new SalonCasa();
   salonCasa.setNumeroDeTelevisores(objetoSalon.getNumeroDeTelevisores);
   salonCasa.setTipoSalon(objetoSalon.getTipoSalon);
    }

Forma 3 (recibiendo parámetros primitivos):

La forma que tú has definido.


Forma 4:

Incluiría otras formas de hacer las cosas.

utilice la misma clase Casa del CU00641 para este ejercicio CU00643..

pero para ver si entendí bien, me recomiendas que utilice la forma 2 que utiliza objetos en los parámetros, de esta forma?

Casa:

Código: [Seleccionar]
//clase con otras clases
public class Casa {
    private double superficie;
    private String direccion;
    private SalonCasa salonCasa;
    private CocinaCasa cocina;

    //constructor
    public Casa () {
        superficie = 0.0;
        direccion = "";
        salonCasa = new SalonCasa ();
        cocina = new CocinaCasa ();
    }

    //constuctor con parametros
    public Casa (double valorSuperficie, String valorDireccion, SalonCasa objetoSalonCasa, CocinaCasa objetoCocinaCasa) {
        superficie = valorSuperficie;
        direccion = valorDireccion;
        salonCasa = new SalonCasa (objetoSalonCasa.getNumeroDeTelevisores(), objetoSalonCasa.getTipoSalon() );
        cocina = new CocinaCasa (objetoCocinaCasa.getEsIndependente(), objetoCocinaCasa.getNumeroDeFuegos() );
    }

    //setters de esta clase
    public void setSuperficie (double valorSuperficie) {
        superficie = valorSuperficie;
    }

    public void setDireccion (String valorDireccion) {
        direccion = valorDireccion;
    }

    //setters de las otras clases

    public void setSalonCasa (SalonCasa objetoSalon) {
        salonCasa = new SalonCasa();
        salonCasa.setNumeroDeTelevisores(objetoSalon.getNumeroDeTelevisores());
        salonCasa.setTipoSalon(objetoSalon.getTipoSalon());
    }

    public void setCocina (CocinaCasa objetoCocina) {
        cocina = new CocinaCasa();
        cocina.setEsIndependiente(objetoCocina.getEsIndependente());
        cocina.setNumeroDeFuegos(objetoCocina.getNumeroDeFuegos());
    }

    //getters de esta clase
    public double getSuperficie () {return superficie;}

    public String getDireccion () {return direccion;}

    //getters de las otras clases
    public SalonCasa getSalonCasa () {return salonCasa;}

    public CocinaCasa getCocina () {return cocina;}
}   

nota: quieres decir que el metodo del fragmento no esta mal pero para acostumbrarme a trabajar con objetos utilice la forma 2?     favor de corregirme si me equivoco Mario, me es de mucha ayuda!!!.
public lenguajePoderoso () {
          java = "poder";
       }

Mario R. Rancel

  • Administrador
  • Experto
  • ********
  • APR2.COM
  • Mensajes: 1934
    • Ver Perfil
Re:practica CU006342B
« Respuesta #3 : 02 de Septiembre 2014, 13:07 »
Hola, en programación las cosas se pueden hacer de muchas maneras. Si te fijas en las observaciones que te había hecho en  el ejercicio CU00641B si te fijas en la forma 1 y forma 2 te puse entre paréntesis (Trabajando con objetos) y en la forma 3 te puse (recibiendo parámetros primitivos)

>>quieres decir que el metodo del fragmento no esta mal pero para acostumbrarme a trabajar con objetos utilice la forma 2?

Exactamente, acostúmbrate a trabajar con objetos.

Has entendido bien y tu definición del código es ahora mejor.

Fíjate que ya que tienes constructores con parámetros podrías hacer:

    public void setCocina (CocinaCasa objetoCocina) {
        cocina = new CocinaCasa(objetoCocina.getEsIndependente(), objetoCocina.getNumeroDeFuegos() );
    }

Pruébalo a ver si te funciona. En caso de que te funcione, piensa que en general será mejor usar dos líneas de código antes que cuatro  ;)

Saludos

BelCrow

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 46
  • Técnico en Redes (CCNA-IT).
    • Ver Perfil
Re:practica CU006342B
« Respuesta #4 : 02 de Septiembre 2014, 13:58 »
Si hace lo mismo y con 2 lineas menos....... muchas gracias Mario..

Casa:

Código: [Seleccionar]
//clase con otras clases
public class Casa {
    private double superficie;
    private String direccion;
    private SalonCasa salonCasa;
    private CocinaCasa cocina;

    //constructor
    public Casa () {
        superficie = 0.0;
        direccion = "";
        salonCasa = new SalonCasa ();
        cocina = new CocinaCasa ();
    }

    //constuctor con parametros
    public Casa (double valorSuperficie, String valorDireccion, SalonCasa objetoSalonCasa, CocinaCasa objetoCocinaCasa) {
        superficie = valorSuperficie;
        direccion = valorDireccion;
        salonCasa = new SalonCasa (objetoSalonCasa.getNumeroDeTelevisores(), objetoSalonCasa.getTipoSalon() );
        cocina = new CocinaCasa (objetoCocinaCasa.getEsIndependente(), objetoCocinaCasa.getNumeroDeFuegos() );
    }

    //setters de esta clase
    public void setSuperficie (double valorSuperficie) {
        superficie = valorSuperficie;
    }

    public void setDireccion (String valorDireccion) {
        direccion = valorDireccion;
    }

    //setters de las otras clases

    public void setSalonCasa (SalonCasa objetoSalon) {
        salonCasa = new SalonCasa(objetoSalon.getNumeroDeTelevisores(), objetoSalon.getTipoSalon());
    }

    public void setCocina (CocinaCasa objetoCocina) {
        cocina = new CocinaCasa(objetoCocina.getEsIndependente(), objetoCocina.getNumeroDeFuegos());
    }

    //getters de esta clase
    public double getSuperficie () {return superficie;}

    public String getDireccion () {return direccion;}

    //getters de las otras clases
    public SalonCasa getSalonCasa () {return salonCasa;}

    public CocinaCasa getCocina () {return cocina;}
}
public lenguajePoderoso () {
          java = "poder";
       }

 

Esto es un laboratorio de ideas...
Aprender a programar

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".