Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: rubens23 en 27 de Abril 2015, 19:36

Título: Método Java que devuelva texto informando de propiedades de objeto CU00641B
Publicado por: rubens23 en 27 de Abril 2015, 19:36
CLASES QUE UTILIZAN OBJETOS. RELACIÓN DE USO ENTRE CLASES. DIAGRAMAS DE CLASES.

Código de la clase SalonCasa
Código: [Seleccionar]
public class SalonCasa{
    private int numeroDeTelevisores;
    private String tipoSalon;
    //Constructor
    public SalonCasa(){
        numeroDeTelevisores = 0;
        tipoSalon = "desconocido";
    }
    //metodo procedimiento
    public void setNumeroDeTelevisores(int valorNumeroDeTelevisores){
        numeroDeTelevisores = valorNumeroDeTelevisores;
    }
    public void setTipoSalon(String valorTipoSalon){
        tipoSalon = valorTipoSalon;
    }
    //metodo función
    public int getNumeroDeTelevisores(){return numeroDeTelevisores;}
    public String getTipoSalon(){return tipoSalon;}
       
}

Código de la clase CocinaCasa
Código: [Seleccionar]
public class CocinaCasa{
    private boolean esIndependiente;
    private int numeroDeFuegos;
    //Constructor
    public CocinaCasa(){
        esIndependiente = false;
        numeroDeFuegos = 0;
    }
    //metodo procedimiento
    public void setEsIndependiente(boolean valorEsIndependiente){
        esIndependiente = valorEsIndependiente;
    }
    public void setNumeroDeFuegos(int valorNumeroDeFuegos){
        numeroDeFuegos = valorNumeroDeFuegos;
    }
    //metodo funcion
    public boolean getEsIndependiente(){return esIndependiente;}
    public int getNumeroDeFuegos(){return numeroDeFuegos;}
}

Código de la clase Casa
Código: [Seleccionar]
public class Casa{
    private double superficie;
    private String direccion;
    private SalonCasa salonCasa;
    private CocinaCasa cocina;
    //constructor
    public Casa (){
        salonCasa = new SalonCasa();
        cocina = new CocinaCasa();
        superficie = 0.0;
        direccion = "desconocida";
    }
    //metodos procedimiento
    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 void setSuperficie(double valorSuperficie){
        superficie = valorSuperficie;
    }
    public void setDirección(String valorDireccion){
        direccion = valorDireccion;
    }
    //metodo funcion
    public String getDatosCasa(){
        int numeroDeTelevisores = salonCasa.getNumeroDeTelevisores();
        String tipoSalon = salonCasa.getTipoSalon();
        boolean esIndependiente = cocina.getEsIndependiente();
        int numeroDeFuegos = cocina.getNumeroDeFuegos();
        String datosCasa = "Los datos de la casa son: Televisiones "+ numeroDeTelevisores + ", tipo de salón " +
        tipoSalon+ ", cocina independiente " + esIndependiente + ", numero de fuegos de la cocina " + numeroDeFuegos +
        ", superficie de la casa "+ superficie + " m2, dirección " + direccion;
        System.out.println(datosCasa);
        return datosCasa;
    }
}
Título: Re:Entrega nº41 del curso"Aprender programación Java desde cero" Ejercicio CU00641B
Publicado por: Lorenzo31 en 27 de Abril 2015, 19:56
Buenas rubens23 en principio todo lo veo ok.

Incluso la modificación de atributos de los objetos SalonCasa y CocinaCasa.


Si me dejas decirte algo, en tu funcion getDatosCasa(),
        int numeroDeTelevisores = salonCasa.getNumeroDeTelevisores();
        String tipoSalon = salonCasa.getTipoSalon();
        boolean esIndependiente = cocina.getEsIndependiente();
        int numeroDeFuegos = cocina.getNumeroDeFuegos();

esto podrias ahorrartelo, de la siguiente forma:

 public String getDatosCasa(){
       
        String datosCasa = "Los datos de la casa son: Televisiones "+ salonCasa.getNumeroDeTelevisores() + ", tipo de salón " + salonCasa.getTipoSalon() + ", cocina independiente " + cocina.getEsIndependiente() + ", numero de fuegos de la cocina " + cocina.getNumeroDeFuegos() + ", superficie de la casa "+ superficie + " m2, dirección " + direccion;
     
        return datosCasa;
    }
Título: Re:Entrega nº41 del curso"Aprender programación Java desde cero" Ejercicio CU00641B
Publicado por: rubens23 en 28 de Abril 2015, 08:30
Vale, lo tendré en cuenta para la próxima.
Muchas gracias
Un saludo.
Título: Re:Entrega nº41 del curso"Aprender programación Java desde cero" Ejercicio CU00641B
Publicado por: Alex Rodríguez en 28 de Abril 2015, 17:18
Hola rubens23 :) Ninguna observación sobre las clases SalonCasa y CocinaCasa. En cambio para la clase casa además de lo indicado por Lorenzo31, indicarte varias cosas erróneas:

Los métodos setTipoSalon(String valorTipoSalon), setEsIndependiente(boolean valorEsIndependiente), setNumeroDeFuegos(int valorNumeroDeFuegos) no deben ir en esta clase.

Por otro lado, te faltan los getters y los setters para los atributos objeto SalonCasa y CocinaCasa.

Es importante entender cómo se trabaja con objetos y el por qué esos métodos no deben ir ahí. Esto lo encuentras explicado en https://www.aprenderaprogramar.com/foros/index.php?topic=1220.0

Saludos
Título: Re:Método Java que devuelva texto informando de propiedades de objeto CU00641B
Publicado por: rubens23 en 29 de Abril 2015, 08:33
Creo que ya está corregido, espero vuestra respuesta  ;)
Código: [Seleccionar]
public class Casa{
    private double superficie;
    private String direccion;
    private SalonCasa salonCasa;
    private CocinaCasa cocina;
    //constructor
    public Casa (){
        salonCasa = new SalonCasa();
        cocina = new CocinaCasa();
        superficie = 0.0;
        direccion = "desconocida";
    }
    //metodos procedimiento
    public void setSalonCasa(int valorNumeroDeTelevisores, String valorTipoSalon){
        salonCasa.setNumeroDeTelevisores(valorNumeroDeTelevisores);
        salonCasa.setTipoSalon(valorTipoSalon);
    }
    public void setCocinaCasa(boolean valorEsIndependiente, int valorNumeroDeFuegos){
        cocina.setEsIndependiente(valorEsIndependiente);
        cocina.setNumeroDeFuegos(valorNumeroDeFuegos);
    }
   public void setSuperficie(double valorSuperficie){
        superficie = valorSuperficie;
    }
    public void setDirección(String valorDireccion){
        direccion = valorDireccion;
    }
    //metodo funcion
    public double getSuperficie(){return superficie;}
    public String getDireccion(){return direccion;}
    public SalonCasa getSalonCasa(){return salonCasa;}
    public CocinaCasa getCocinaCasa(){return cocina;}
    public String getDatosCasa(){
        int numeroDeTelevisores = salonCasa.getNumeroDeTelevisores();
        String tipoSalon = salonCasa.getTipoSalon();
        boolean esIndependiente = cocina.getEsIndependiente();
        int numeroDeFuegos = cocina.getNumeroDeFuegos();
        String datosCasa = "Los datos de la casa son: Televisiones "+ numeroDeTelevisores + ", tipo de salón " +
        tipoSalon+ ", cocina independiente " + esIndependiente + ", numero de fuegos de la cocina " + numeroDeFuegos +
        ", superficie de la casa "+ superficie + " m2, dirección " + direccion;
        System.out.println(datosCasa);
        return datosCasa;
    }
}
Título: Re:Método Java que devuelva texto informando de propiedades de objeto CU00641B
Publicado por: Alex Rodríguez en 29 de Abril 2015, 22:19
Hola, aquí estás manipulando en una clase atributos de otra clase, cosa que en principio no es recomendable:

Citar
    public void setSalonCasa(int valorNumeroDeTelevisores, String valorTipoSalon){
        salonCasa.setNumeroDeTelevisores(valorNumeroDeTelevisores);
        salonCasa.setTipoSalon(valorTipoSalon);
    }

En lugar de esto debes usar una signatura como:

public void setSalonCasa (SalonCasa salonRecibido) {
...
}

Escribe CU00641B en el buscador del foro y mira las soluciones propuestas.

Saludos.
Título: Re:Método Java que devuelva texto informando de propiedades de objeto CU00641B
Publicado por: rubens23 en 30 de Abril 2015, 09:07
Bueno, creo que por fin está bien.
Tengo una duda, y es que en el metodo getDatosCasa no se si está bien que incluya los métodos de las otras clases o no, o si habrá alguna otra forma de hacerlo o no. Le he estado dando vueltas y no se me ocurre otra forma, ya se que no hace falta incluirlo pero tengo esa curiosidad.
Saludos.
Código: [Seleccionar]
public class Casa{
    private double superficie;
    private String direccion;
    private SalonCasa salonCasa;
    private CocinaCasa cocina;
    //constructor
    public Casa (){
        salonCasa = new SalonCasa();
        cocina = new CocinaCasa();
        superficie = 0.0;
        direccion = "desconocida";
    }
    //metodos procedimiento
    public void setSalonCasa(SalonCasa salonRecibido){
        salonCasa = salonRecibido;
    }

    public void setCocinaCasa(CocinaCasa cocinaRecibido){
        cocina = cocinaRecibido;
    }

    public void setSuperficie(double valorSuperficie){
        superficie = valorSuperficie;
    }

    public void setDirección(String valorDireccion){
        direccion = valorDireccion;
    }
    //metodo funcion
    public double getSuperficie(){return superficie;}

    public String getDireccion(){return direccion;}

    public SalonCasa getSalonCasa(){return salonCasa;}

    public CocinaCasa getCocinaCasa(){return cocina;}

    public String getDatosCasa(){

        String datosCasa = "Los datos de la casa son: Televisiones "+ salonCasa.getNumeroDeTelevisores() + ", tipo de salón " +
            salonCasa.getTipoSalon() + ", cocina independiente " + cocina.getEsIndependiente() + ", numero de fuegos de la cocina " + cocina.getNumeroDeFuegos() +
            ", superficie de la casa "+ superficie + " m2, dirección " + direccion;
        System.out.println(datosCasa);
        return datosCasa;
    }
}
Título: Re:Método Java que devuelva texto informando de propiedades de objeto CU00641B
Publicado por: Mario R. Rancel en 01 de Mayo 2015, 08:34
Hola rubens, puedes considerar el ejercicio como resuelto. El método getDatosCasa puedes darlo por bueno también. Más adelante en el curso verás que hay distintas cosas que se pueden cambiar o mejorar, pero hay que ir poco a poco, así que ¡a seguir avanzando!

Saludos