Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: arcanFAC en 27 de Marzo 2015, 23:16

Título: Aprender java CU00641B. Ejercicio resuelto de una clase que usa a otras clases
Publicado por: arcanFAC en 27 de Marzo 2015, 23:16
Aqui les traigo el ejercio con lo que faltaba, vuelvo a adjuntar el ejercicio:

Citar
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. Compila el código para comprobar que no presenta errores, crea un objeto de tipo Casa. Comprueba que se inicializan correctamente consultando el valor de sus atributos después de haber creado los objetos.


Código: [Seleccionar]
public class SalonCasa{
    private int numeroDeTelevisores;
    private String tipoSalon;
   
    public SalonCasa(){
        numeroDeTelevisores = 0;
        tipoSalon = "desconocido";
    }
   
    public void setNumeroDeTelevisores(int valorNumeroDeTelevisores){
        numeroDeTelevisores = valorNumeroDeTelevisores;
    }
    public void setTipoSalon(String valorTipoSalon){
        tipoSalon = valorTipoSalon;
    }
   
    public int getNumeroDeTelevisores(){return numeroDeTelevisores;}
    public String getTipoSalon(){return tipoSalon;}
}


Código: [Seleccionar]
public class CocinaCasa{
    private boolean esIndependiente;
    private int numeroDeFuegos;
   
    public CocinaCasa(){
        esIndependiente = false;
        numeroDeFuegos = 0;
    }
   
    public void setEsIndependiente(boolean valorEsIndependiente){
        esIndependiente = valorEsIndependiente;   
    }
    public void setNumeroDeFuegos(int valorNumeroDeFuegos){
        numeroDeFuegos = valorNumeroDeFuegos;
    }
   
    public boolean getEsIndependiente(){return esIndependiente;}
    public int getNumeroDeFuegos(){return numeroDeFuegos;}
}


Código: [Seleccionar]
public class Casa{
    private double superficie;
    private String direccion;
    private SalonCasa salonCasa;
    private CocinaCasa cocina;
   
    public Casa(){
        superficie = 0.0;
        direccion = "";
        salonCasa = new SalonCasa();
        cocina = new CocinaCasa();
    }
   
    public void setSuperficie(double valorSuperficie){
        superficie = valorSuperficie;
    }
    public void setDireccion(String valorDireccion){
        direccion = valorDireccion;
    }
    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);
    }
   
    public double getSuperficie(){return superficie;}
    public String getDireccion(){return direccion;}
   
    public String getDatosCasa(){
        int numeroDeTelevisores = salonCasa.getNumeroDeTelevisores();
        String tipoSalon = salonCasa.getTipoSalon();
        boolean esIndependiente = cocina.getEsIndependiente();
        int numeroDeFuegos = cocina.getNumeroDeFuegos();
        String independiente = "";
        if(esIndependiente == true){
            independiente = "es independiente";
        }
        else {
            independiente = "no es independiente";
        }
       
        String datosCasa = "El objeto Casa presenta estos datos. Número de TV´s : " + numeroDeTelevisores + ", de salon tipo: " + tipoSalon + ", con cocina que: " + independiente + ", con " + numeroDeFuegos + " numero de fuegos, ubicada en la dirección: " + direccion + " y que presenta la siguiente superficie: " + superficie;
        System.out.println(datosCasa);
        return datosCasa;
    }
}

Título: Re:Aprender java CU00641B. Ejercicio resuelto de una clase que usa a otras clases
Publicado por: Ogramar en 29 de Marzo 2015, 17:47
Hola arcanFAC, el código de la clase SalonCasa está bien. También está bien el código de la clase CocinaCasa.

El código de la clase Casa es el que presenta problemas.

1)   El número de televisores es un atributo de los objetos SalonCasa, por tanto no debe existir un set para numeroTelevisores en ninguna clase que no sea SalonCasa. Cada clase es responsable de sus atributos. Una clase no hace set sobre atributos de otras clases.


Mal:

  public void setNumeroDeTelevisores(int valorNumeroDeTelevisores){
        salonCasa.setNumeroDeTelevisores(valorNumeroDeTelevisores);
    }

2) Lo mismo para todos los atributos que no pertenecen a la clase Casa

3) Todo atributo, sea de tipo primitivo o sea objeto, debe tener sus getters y sus setters. En tu clase Casa faltan los getters y setters para salonCasa y cocina.

Para comprender mejor esto consulta https://www.aprenderaprogramar.com/foros/index.php?topic=1220.0

Tu método getDatosCasa está muy bien.

Salu2