Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: nicatardi en 23 de Noviembre 2015, 04:43

Título: Java Cómo hacer métodos get y set para atributos campos que son objetos CU00641B
Publicado por: nicatardi en 23 de Noviembre 2015, 04:43
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
Título: Re:Java Cómo hacer métodos get y set para atributos campos que son objetos CU00641B
Publicado por: Ogramar en 25 de Noviembre 2015, 08:31
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
Título: Re:Java Cómo hacer métodos get y set para atributos campos que son objetos CU00641B
Publicado por: nicatardi en 25 de Noviembre 2015, 22:40
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
Título: Re:Java Cómo hacer métodos get y set para atributos campos que son objetos CU00641B
Publicado por: Ogramar en 26 de Noviembre 2015, 07:56
Buenas ahora todo bien, a seguir

Salu2