Autor Tema: Método Java que devuelva texto informando de propiedades de objeto CU00641B  (Leído 5318 veces)

rubens23

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 30
    • Ver Perfil
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;
    }
}
« Última modificación: 28 de Abril 2015, 17:18 por Alex Rodríguez »

Lorenzo31

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 381
    • Ver Perfil
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;
    }
« Última modificación: 27 de Abril 2015, 20:05 por Lorenzo31 »

rubens23

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 30
    • Ver Perfil
Vale, lo tendré en cuenta para la próxima.
Muchas gracias
Un saludo.

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
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

rubens23

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 30
    • Ver Perfil
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;
    }
}

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
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.

rubens23

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 30
    • Ver Perfil
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;
    }
}

Mario R. Rancel

  • Administrador
  • Experto
  • ********
  • APR2.COM
  • Mensajes: 1978
    • Ver Perfil
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

 

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