Autor Tema: Java Cómo hacer métodos get y set para atributos campos que son objetos CU00641B  (Leído 5586 veces)

nicatardi

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 5
    • Ver Perfil
Hola! Me gustaria saber si está correctamente escrito el código para no adquirir malas costumbres. Muchas gracias!

Código: [Seleccionar]
//EJERCICIO CU00641B
/**
   Define tres clases: Casa, SalonCasa y CocinaCasa. La clase SalonCasa debe tener como atributos
   numeroDeTelevisores (int) y tipoSalon (String) y disponer de un constructor que los inicialice
   a 0 y “desconocido”. La clase CocinaCasa debe tener como atributos esIndependiente (boolean) y
   numeroDeFuegos (int) y un constructor que los inicialice a false y 0. La clase Casa tendrá los
   siguientes atributos de clase: superficie (double), direccion (String), salonCasa (tipo SalonCasa)
   y cocina (tipo CocinaCasa). 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 class Casa{
    private double superficie;
    private String direccion;
    private SalonCasa salonCasa;
    private CocinaCasa cocina;
   
    //Constructor
    public Casa(){
        superficie = 0;
        direccion = "";
        salonCasa = new SalonCasa();
        cocina = new CocinaCasa();
    }//Cierre constructor
    //Métodos tipo procedimiento
    public void setSuperficie(double valorSuperficie){superficie = valorSuperficie;}
    public void setDireccion(String valorDireccion){direccion = valorDireccion;}
    //Métodos tipo procedimiento adquiriendo objetos de otra clase
    public void setNumeroDeTelevisores(int valorNumeroDeTelevisores){salonCasa.setNumeroDeTelevisores(valorNumeroDeTelevisores);}
    public void setTipoSalon(String valorTipoSalon){salonCasa.setTipoSalon(valorTipoSalon);}
    public void setEsIndependiente(boolean valorEsIndependiente){cocina.setEsIndependiente(valorEsIndependiente);}
    public void setNumeroDeFuegos(int valorNumeroDeFuegos){cocina.setNumeroDeFuegos(valorNumeroDeFuegos);}
    //Métodos tipo función
    public double getSuperficie(){return superficie;}
    public String getDireccion(){return direccion;}
    //Métodos tipo función adquiriendo objetos de otra clase
    public int getNumeroDeTelevisores(){int numeroDeTelevisores = salonCasa.getNumeroDeTelevisores(); return numeroDeTelevisores;}
    public String getTipoSalon(){String tipoSalon = salonCasa.getTipoSalon(); return tipoSalon;}
    public boolean getEsIndependiente(){boolean esIndependiente = cocina.getEsIndependiente(); return esIndependiente;}
    public int getNumeroDeFuegos(){int numeroDeFuegos = cocina.getNumeroDeFuegos(); return numeroDeFuegos;}
   
}//Cierre de clase

Código: [Seleccionar]
//Clase para utilizar como objeto en la clase Casa (CU00641B)

public class SalonCasa{
    private int numeroDeTelevisores;
    private String tipoSalon;
   
    //Constructor
    public SalonCasa(){
        numeroDeTelevisores = 0;
        tipoSalon = "Desconocido";
    }//Cierre constructor
    //Métodos tipo procedimiento
    public void setNumeroDeTelevisores(int valorNumeroDeTelevisores){numeroDeTelevisores = valorNumeroDeTelevisores;}
    public void setTipoSalon(String valorTipoSalon){tipoSalon = valorTipoSalon;}
    //Métodos tipo Función
    public int getNumeroDeTelevisores(){return numeroDeTelevisores;}
    public String getTipoSalon(){return tipoSalon;}
}//Cierre de la clase

Código: [Seleccionar]
//Clase para utilizar como objeto por la clase Casa (CU00641B)
public class CocinaCasa{
    private boolean esIndependiente;
    private int numeroDeFuegos;
   
    //Constructor
    public CocinaCasa(){
        esIndependiente = false;
        numeroDeFuegos = 0;
    }//Cierre constructor
    //Métodos tipo procedimiento
    public void setEsIndependiente(boolean valorEsIndependiente){esIndependiente = valorEsIndependiente;}
    public void setNumeroDeFuegos(int valorNumeroDeFuegos){numeroDeFuegos = valorNumeroDeFuegos;}
    //Métodos tipo función
    public boolean getEsIndependiente(){return esIndependiente;}
    public int getNumeroDeFuegos(){return numeroDeFuegos;}
}//Cierre de clase
« Última modificación: 25 de Noviembre 2015, 08:30 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Buenas nicatardi

El código compila correctamente, pero presenta un problema en la clase Casa. El problema es que una clase no maneja los atributos de otra clase, sino sólo sus atributos propios. En la clase Casa tienes un método getNumeroDeTelevisores, pero ¿es numeroDeTelevisores un atributo de la clase Casa? No, entonces esta clase no debe tener métodos get ni set para estos atributos. Hay una explicación en https://www.aprenderaprogramar.com/foros/index.php?topic=1220.0, después de estudiar esa explicación deberías reformular tu código.

Salu2

nicatardi

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 5
    • Ver Perfil
Gracias Ogramar por tu respuesta! :)

Modifique el codigo y creo que acomode lo que me dijiste. Si no es así, me encantaria que me lo digas.

Muy bueno el curso felicidades!

Código: [Seleccionar]
//EJERCICIO CU00641B
/**
   Define tres clases: Casa, SalonCasa y CocinaCasa. La clase SalonCasa debe tener como atributos
   numeroDeTelevisores (int) y tipoSalon (String) y disponer de un constructor que los inicialice
   a 0 y “desconocido”. La clase CocinaCasa debe tener como atributos esIndependiente (boolean) y
   numeroDeFuegos (int) y un constructor que los inicialice a false y 0. La clase Casa tendrá los
   siguientes atributos de clase: superficie (double), direccion (String), salonCasa (tipo SalonCasa)
   y cocina (tipo CocinaCasa). 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 class Casa{
    private double superficie;
    private String direccion;
    private SalonCasa salonCasa;
    private CocinaCasa cocina;
   
    //Constructor
    public Casa(){
        superficie = 0;
        direccion = "";
        salonCasa = new SalonCasa();
        cocina = new CocinaCasa();
    }//Cierre constructor
    //Constructor2
    public Casa(double valorSuperficie, String valorDireccion, SalonCasa objetoSalon, CocinaCasa objetoCocina){
        superficie = valorSuperficie;
        direccion = valorDireccion;
        salonCasa = new SalonCasa(objetoSalon.getNumeroDeTelevisores(), objetoSalon.getTipoSalon());
        cocina = new CocinaCasa(objetoCocina.getEsIndependiente(), objetoCocina.getNumeroDeFuegos());
    }//Cierre Constructor2
    //Métodos tipo procedimiento
    public void setSuperficie(double valorSuperficie){superficie = valorSuperficie;}
    public void setDireccion(String valorDireccion){direccion = valorDireccion;}
    //Métodos tipo procedimiento adquiriendo objetos de otra clase
    public void setSalonCasa(SalonCasa objetoSalon){
        salonCasa.setTipoSalon(objetoSalon.getTipoSalon());
        salonCasa.setNumeroDeTelevisores(objetoSalon.getNumeroDeTelevisores());
    }
    public void setCocina(CocinaCasa objetoCocina){
        cocina.setEsIndependiente(objetoCocina.getEsIndependiente());
        cocina.setNumeroDeFuegos(objetoCocina.getNumeroDeFuegos());
    }
    //Métodos tipo función
    public double getSuperficie(){return superficie;}
    public String getDireccion(){return direccion;}
    //Métodos tipo función adquiriendo objetos de otra clase
    public SalonCasa getSalon(){
        return salonCasa;
    }
    public CocinaCasa getCocina(){
        return cocina;
    }
   
}//Cierre de clase

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Buenas ahora todo bien, a seguir

Salu2

 

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