Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Jlinos en 16 de Junio 2018, 11:44

Título: Cómo comprender conceptos de la programación Java orientada a objetos CU00641B
Publicado por: Jlinos en 16 de Junio 2018, 11:44
Buenos días. Adjunto el ejercicio de la Entrega Nº 41 (CU00641B) del programa formativo en programación Java de aprenderaprogramar: "Clases que utilizan objetos", para que den su opinión.

Gracias

Clase Casa

Código: [Seleccionar]
public class Casa
{
    // instance variables
    private double superficie;
    private String direccion;
    private SalonCasa salonCasa;
    private CocinaCasa cocina;
    //Constructor
    public Casa(){
        superficie = 0.0;
        direccion = "Desconocida";
        salonCasa = new SalonCasa();
        cocina = new CocinaCasa();
    }//Cierre del constructor
   
    //Métodos setter y getter
    public void setSuperficie(double valorSuperficie){
        superficie = valorSuperficie;
    }//Cierre del método
   
    public void setDireccion(String valorDireccion){
        direccion = valorDireccion;
    }//Cierre del método
   
    public void setNumeroDeTelevisores(int valorNumeroDeTelevisores){
          salonCasa.setNumeroDeTelevisores(valorNumeroDeTelevisores);
    }//Cierre del método
   
    public void setTipoSalon(String valorTipoSalon){
        salonCasa.setTipoSalon(valorTipoSalon);
    }//Cierre del método
   
    public void setEsIndependiente(boolean valorEsIndependiente){
        cocina.setEsIndependiente(valorEsIndependiente);
    }//Cierre del método
   
    public void setNumeroDeFuegos(int valorNumeroDeFuegos){
        cocina.setNumeroDeFuegos(valorNumeroDeFuegos);
    }//Cierre del método
   
    public String getDatosCasa(){
        int numeroDeTelevisores = salonCasa.getNumeroDeTelevisores();
        String tipoSalon = salonCasa.getTipoSalon();
        boolean esIndependiente = cocina.getEsIndependiente();
        String cadenaEsIndependiente = "";
        if(esIndependiente==true){
            cadenaEsIndependiente = "si";
        }else if(esIndependiente==false){
            cadenaEsIndependiente = "no";
        }
        int numeroDeFuegos = cocina.getNumeroDeFuegos();
        String datosCasa = "\nSuperficie: "+superficie+ "\nDireccion: "+direccion+ "\nNumero de televisores: "
        +numeroDeTelevisores+ "\nTipo Salon: "+tipoSalon+ "\nEs independiente: "+cadenaEsIndependiente+
        "\nNumero fuegos " +numeroDeFuegos;
       
        System.out.println(datosCasa);
        return datosCasa;
    }
   
}//Cierre de la clase Casa

Clase SalonCasa

Código: [Seleccionar]
public class SalonCasa
{
    //Atributos
    private int numeroDeTelevisores;
    private String tipoSalon;
   
    //Constructor
    public SalonCasa(){
        numeroDeTelevisores = 0;
        tipoSalon = "Desconocido";
    }//Cierre del constructor
   
    //Métodos setter y getter
    public void setNumeroDeTelevisores(int valorNumeroDeTelevisores){
        numeroDeTelevisores = valorNumeroDeTelevisores;
    }//Cierre del método
   
    public int getNumeroDeTelevisores(){
        return numeroDeTelevisores;
    }//Cierre del método
   
    public void setTipoSalon(String valorTipoSalon){
        tipoSalon = valorTipoSalon;
    }//Cierre del método
   
    public String getTipoSalon(){
        return tipoSalon;
    }//Cierre del método
   
}//Cierre de la clase SalonCasa

Clase CocinaCasa

Código: [Seleccionar]
public class CocinaCasa
{
    //Atributos
    private boolean esIndependiente;
    private int numeroDeFuegos;
   
    //Constructor
    public CocinaCasa(){
        esIndependiente = false;
        numeroDeFuegos = 0;
    }//Cierre del constructor
   
    //Métodos getter y setter
    public void setEsIndependiente(boolean valorEsIndependiente){
        esIndependiente = valorEsIndependiente;
    }//Cierre del método
   
    public boolean getEsIndependiente(){
        return esIndependiente;
    }//Cierre del método
   
    public void setNumeroDeFuegos(int valorNumeroDeFuegos){
        numeroDeFuegos = valorNumeroDeFuegos;
    }//Cierre del método
   
    public int getNumeroDeFuegos(){
        return numeroDeFuegos;
    }//Cierre del método
   
Título: Re:Cómo comprender conceptos de la programación Java orientada a objetos CU00641B
Publicado por: Alex Rodríguez en 08 de Julio 2018, 13:36
Hola, este ejercicio no está bien resuelto porque no se trabaja adecuadamente con los objetos que son atributos de la clase Casa. Por ejemplo no existen los métodos get y set para los atributos objeto. Comprender esto puede resultar un poco trabajoso.

Para el entendiemiento de estos conceptos recomendamos leer estos hilos con calma:

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

Una vez leídos, lo recomendable es volver a escribir la propuesta de solución al ejercicio pues así se verá si se han entendido bien los conceptos o no.

Saludos
Título: Re:Cómo comprender conceptos de la programación Java orientada a objetos CU00641B
Publicado por: Jlinos en 08 de Julio 2018, 17:02
Buenas tardes Alex.
Te vuelvo a agradecer la aclaración, después de revisar los hilos que me has enviado he visto el fallo de los objetos que son  atributos de la clase Casa.
Gracias.
Casa
Código: [Seleccionar]
public class Casa
{
    // instance variables
    private double superficie;
    private String direccion;
    private SalonCasa salonCasa;
    private CocinaCasa cocina;
    //Constructor
    public Casa(){
        superficie = 0.0;
        direccion = "Desconocida";
        salonCasa = new SalonCasa();
        cocina = new CocinaCasa();
    }//Cierre del constructor
   
    //Métodos setter y getter
    public void setSuperficie(double valorSuperficie){
        superficie = valorSuperficie;
    }//Cierre del método
   
    public void setDireccion(String valorDireccion){
        direccion = valorDireccion;
    }//Cierre del método
   
    public double getSuperficie(){
        return superficie;
    }//Cierre del método
   
    public String getDireccion(){
        return direccion;
    }//Cierre del método
   
    public void setSalon(SalonCasa valorSalonCasa){
        salonCasa = new SalonCasa();
        salonCasa.setNumeroDeTelevisores(valorSalonCasa.getNumeroDeTelevisores());
        salonCasa.setTipoSalon(valorSalonCasa.getTipoSalon());
    }
   
    public void setCocina(CocinaCasa valorCocinaCasa){
        cocina = new CocinaCasa();
        cocina.setEsIndependiente(valorCocinaCasa.getEsIndependiente());
        cocina.setNumeroDeFuegos(valorCocinaCasa.getNumeroDeFuegos());
    }
   
    public String getDatosCasa(){
        int numeroDeTelevisores = salonCasa.getNumeroDeTelevisores();
        String tipoSalon = salonCasa.getTipoSalon();
        boolean esIndependiente = cocina.getEsIndependiente();
        String cadenaEsIndependiente = "";
        if(esIndependiente==true){
            cadenaEsIndependiente = "si";
        }else if(esIndependiente==false){
            cadenaEsIndependiente = "no";
        }
        int numeroDeFuegos = cocina.getNumeroDeFuegos();
        String datosCasa = "\nSuperficie: "+superficie+ "\nDireccion: "+direccion+ "\nNumero de televisores: "
        +numeroDeTelevisores+ "\nTipo Salon: "+tipoSalon+ "\nEs independiente: "+cadenaEsIndependiente+
        "\nNumero fuegos " +numeroDeFuegos;
       
        System.out.println(datosCasa);
        return datosCasa;
    }
   
}//Cierre de la clase Casa
SalonCasa
Código: [Seleccionar]
public class SalonCasa
{
    //Atributos
    private int numeroDeTelevisores;
    private String tipoSalon;
   
    //Constructor
    public SalonCasa(){
        numeroDeTelevisores = 0;
        tipoSalon = "Desconocido";
    }//Cierre del constructor
   
    //Métodos setter y getter
    public void setNumeroDeTelevisores(int valorNumeroDeTelevisores){
        numeroDeTelevisores = valorNumeroDeTelevisores;
    }//Cierre del método
   
    public int getNumeroDeTelevisores(){
        return numeroDeTelevisores;
    }//Cierre del método
   
    public void setTipoSalon(String valorTipoSalon){
        tipoSalon = valorTipoSalon;
    }//Cierre del método
   
    public String getTipoSalon(){
        return tipoSalon;
    }//Cierre del método
   
}//Cierre de la clase SalonCasa
CocinaCasa
Código: [Seleccionar]
public class CocinaCasa
{
    //Atributos
    private boolean esIndependiente;
    private int numeroDeFuegos;
   
    //Constructor
    public CocinaCasa(){
        esIndependiente = false;
        numeroDeFuegos = 0;
    }//Cierre del constructor
   
    //Métodos getter y setter
    public void setEsIndependiente(boolean valorEsIndependiente){
        esIndependiente = valorEsIndependiente;
    }//Cierre del método
   
    public boolean getEsIndependiente(){
        return esIndependiente;
    }//Cierre del método
   
    public void setNumeroDeFuegos(int valorNumeroDeFuegos){
        numeroDeFuegos = valorNumeroDeFuegos;
    }//Cierre del método
   
    public int getNumeroDeFuegos(){
        return numeroDeFuegos;
    }//Cierre del método
   
}//Cierre de la clase CocinaCasa
Título: Re:Cómo comprender conceptos de la programación Java orientada a objetos CU00641B
Publicado por: Alex Rodríguez en 08 de Julio 2018, 18:53
Ahora bien. Posiblemente el método getDatosCasa() excede un tanto las responsabilidades que tendría un método de la clase Casa. Se dice que una clase es responsable de sus atributos, y por ejemplo el número de televisores no es un atributo de la clase Casa, con lo cual no debería manejarse dentro de esta clase. De cualquier forma esto no es muy relevante, el ejercicio está bien.

Saludos