Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: BelCrow en 02 de Septiembre 2014, 02:26

Título: practica CU00642B# inicializar objetos java métodos que reciben objetos y crean
Publicado por: BelCrow en 02 de Septiembre 2014, 02:26
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;}
}
Título: Re:practica CU006342B
Publicado por: Mario R. Rancel en 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í: https://www.aprenderaprogramar.com/foros/index.php?topic=1220.0

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

Saludos!!!
Título: Re:practica CU006342B
Publicado por: BelCrow en 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!!!.
Título: Re:practica CU006342B
Publicado por: Mario R. Rancel en 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
Título: Re:practica CU006342B
Publicado por: BelCrow en 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;}
}