Autor Tema: Java trabajar con objetos como si fueran tipos datos normales concepto CU00642B  (Leído 3263 veces)

Jlinos

  • Sin experiencia
  • *
  • Mensajes: 15
    • Ver Perfil
Buenas tardes. Envío el ejercicio CU00642B del curso gratuito de programación Java como si estuviera en primero para recibir vuestra opinión y consejos. Gracias

CocinaCasa

Código: [Seleccionar]
public class CocinaCasa
{   
    //Atributos
    private boolean esIndependiente;
    private int numeroDeFuegos;

    //Constructor
    public CocinaCasa(){
        esIndependiente = false;
        numeroDeFuegos = 0;
    }
   
    //Constructor 2
    public CocinaCasa(int valorNumeroDeFuegos,boolean valorEsIndependiente){
        numeroDeFuegos = valorNumeroDeFuegos;
        esIndependiente = valorEsIndependiente;
    }

    //Métodos setter y getter
    public void setEsIndependiente(boolean valorEsIndependiente){
        esIndependiente = valorEsIndependiente;
    }

    public void setNumeroDeFuegos(int valorNumeroDeFuegos){
        numeroDeFuegos = valorNumeroDeFuegos;
    }

    public boolean getEsIndependiente(){
        return esIndependiente;
    }

    public int getNumeroDeFuegos(){
        return numeroDeFuegos;
    }

}//Cierre de la clase CocinaCasa


SalonCasa

Código: [Seleccionar]
public class SalonCasa
{
    //Atributos
    private int numDeTelev;
    private String tipoSalon;

    //Constructor
    //Inicializa a 0 y "desconocido".
    public SalonCasa(){
        numDeTelev = 0;
        tipoSalon = "desconocido";
    }//Cierre del constructor
   
     //Constructor 2
    public SalonCasa(int valorNumDeTelev,String valorTipoSalon){
        numDeTelev = valorNumDeTelev;
        tipoSalon = valorTipoSalon;
    }//Cierre del segundo constructor

    //Métodos setter y getter
    public void setNumDeTelev(int valorNumDeTelev){
        numDeTelev = valorNumDeTelev;
    }

    public void setTipoSalon(String valorTipoSalon){
        tipoSalon = valorTipoSalon;
    }

    public int getNumDeTelev(){
        return numDeTelev;
    }

    public String getTipoSalon(){
        return tipoSalon;
    }
}//Cierre de la clase SalonCasa


Casa

Código: [Seleccionar]
public class Casa
{
    /**
     * La clase Casa tendrá los siguientes atributos de clase: superficie (double), direccion (String),
     * salonCasa (tipo SalonCasa) y cocina (tipo CocinaCasa).
     */
    private double superficie;
    private String direccion;
    private SalonCasa salonCasa;
    private CocinaCasa cocina;
    /**
     * Define un constructor para la clase Casa que establezca a
     * unos valores de defecto los atributos simples y que cree nuevos objetos si se trata de atributos objeto.
     */
    public Casa(){
        superficie = 0;
        direccion = "desconocida";
        salonCasa = new SalonCasa();
        cocina = new CocinaCasa();
    }//Cierre del constructor
    /**
     * Define otro constructor que reciba como parámetros la superficie, dirección y un objeto de tipo SalonCasa
     * y otro de tipo CocinaCasa.
     */
    public Casa(double valorSuperficie,String valorDireccion,SalonCasa objetoSalonCasa,CocinaCasa objetoCocinaCasa){
        superficie = valorSuperficie;
        direccion = valorDireccion;
        salonCasa = new SalonCasa(objetoSalonCasa.getNumDeTelev(),objetoSalonCasa.getTipoSalon());
        cocina = new CocinaCasa(objetoCocinaCasa.getNumeroDeFuegos(),objetoCocinaCasa.getEsIndependiente());
    }

    //Métodos getter y setter de la clase
    public void setSuperficie(double valorSuperficie){
        superficie = valorSuperficie;
    }

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

    public double getSupericie(){
        return superficie;
    }

    public String getDireccion(){
        return direccion;
    }
}//Cierre de la clase Casa
« Última modificación: 23 de Julio 2018, 13:09 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola Jlinos, el código está bastante bien planteado. En la clase Casa, están muy bien los constructores. En uno de ellos, que no recibe parámetros, se inicializan objetos SalonCasa y CocinaCasa vacíos. En otro, que sí recibe objetos como parámetros, se inicializan nuevos objetos que toman los atributos de los objetos recibidos.

Lo único que te ha faltado es:

- En la clase Casa, tienes 4 atributos. Cada uno de ellos debe tener métodos get y set, resultando un total de 8 métodos. Por tanto te faltan los métodos get y set de los atributos que son objetos. Una idea clave en Java es que hay que acostumbrarse a trabajar con objetos y tratarlos como cualquier otro atributo (teniendo en cuenta sus particularidades).

Por tanto deberías reescribir el código de la clase Casa para mejorar esto. Si quieres orientarte antes de hacerlo lee estos hilos:

https://aprenderaprogramar.com/foros/index.php?topic=1220.0

https://aprenderaprogramar.com/foros/index.php?topic=1238.0

Saludos

Jlinos

  • Sin experiencia
  • *
  • Mensajes: 15
    • Ver Perfil
Hola Alex, vuelvo a darte las gracias por tu labor en este foro.
Entiendo que a falta de los métodos setter y getter de los atributos que son objetos lo
demás está bien. Solo envío la clase Casa con la corrección que me apuntas en tu respuesta.
Código: [Seleccionar]
public class Casa
{
    /**
     * La clase Casa tendrá los siguientes atributos de clase: superficie (double), direccion (String),
     * salonCasa (tipo SalonCasa) y cocina (tipo CocinaCasa).
     */
    private double superficie;
    private String direccion;
    private SalonCasa salonCasa;
    private CocinaCasa cocina;
    /**
     * Define un constructor para la clase Casa que establezca a
     * unos valores de defecto los atributos simples y que cree nuevos objetos si se trata de atributos objeto.
     */
    public Casa(){
        superficie = 0;
        direccion = "desconocida";
        salonCasa = new SalonCasa();
        cocina = new CocinaCasa();
    }//Cierre del constructor
    /**
     * Define otro constructor que reciba como parámetros la superficie, dirección y un objeto de tipo SalonCasa
     * y otro de tipo CocinaCasa.
     */
    public Casa(double valorSuperficie,String valorDireccion,SalonCasa objetoSalonCasa,CocinaCasa objetoCocinaCasa){
        superficie = valorSuperficie;
        direccion = valorDireccion;
        salonCasa = new SalonCasa(objetoSalonCasa.getNumDeTelev(),objetoSalonCasa.getTipoSalon());
        cocina = new CocinaCasa(objetoCocinaCasa.getNumeroDeFuegos(),objetoCocinaCasa.getEsIndependiente());
    }//Cierre del constructor

    //Métodos setter y getter de los atributos objeto
    public void setSalonCasa(SalonCasa objetoSalonCasa){
        salonCasa = objetoSalonCasa;
    }//Cierre del método

    public void setCocinaCasa(CocinaCasa objetoCocinaCasa){
        cocina = objetoCocinaCasa;
    }//Cierre del método
   
    public SalonCasa getSalonCasa(){
        return salonCasa;
    }//Cierre del método
   
    public CocinaCasa getCocinaCasa(){
        return cocina;
    }//Cierre del método

    //Métodos getter y setter de la clase
    public void setSuperficie(double valorSuperficie){
        superficie = valorSuperficie;
    }//Cierre del método

    public void setDireccion(String valorDireccion){
        direccion = valorDireccion;
    }//Cierre del método

    public double getSupericie(){
        return superficie;
    }//Cierre del método

    public String getDireccion(){
        return direccion;
    }//Cierre del método
}//Cierre de la clase Casa

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola, sí, solo se trataba de modificar la clase Casa como has hecho. En https://aprenderaprogramar.com/foros/index.php?topic=1220.msg6735#msg6735 hay una explicación importante, ya que como tú lo has hecho es una forma de hacerlo, pero posiblemente sean más interesantes otras. Ahora no te recomiendo que te detengas demasiado en esto, pero sí te recomendaría que más adelante volvieras a repasar este ejercicio para entender mejor por qué posiblemente sea más correcto crear un objeto nuevo con el set que establecer la igualdad con el objeto recibido. Pero como te comento, no te detengas ahora en esto, revísalo un poco más adelante.

Saludos

 

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