Autor Tema: Ejercicio resuelto Java orientación objetos POO cuándo pasar parámetros CU00641B  (Leído 2088 veces)

micaelasol

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 33
    • Ver Perfil
Hola! Aquí va el desarrollo de la actividad CU00641B del tutorial pdf Java de aprenderaprogramar.

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. Para comprobar si es correcta tu solución puedes consultar en los foros aprenderaprogramar.com.


Clase Casa:

Código: [Seleccionar]
public class Casa {
    private double superficie;
    private String direccion;
    private SalonCasa salonCasa;
    private CocinaCasa cocinaCasa;
   
    public Casa (double superficieCasa, String direccionCasa, SalonCasa salonCasaCasa, CocinaCasa cocinaCasaCasa){
        superficie = superficieCasa;
        direccion = direccionCasa;
        salonCasa = new SalonCasa ();
        cocinaCasa = new CocinaCasa ();
    }
   
    public void setSuperficie (double valorSuperficie){
        superficie = valorSuperficie;
    }
   
    public void setDireccion (String valorDireccion){
        direccion = valorDireccion;
    }
   
    public void setSalonCasa (SalonCasa valorSalonCasa){
        salonCasa = valorSalonCasa;
    }
   


Clase SalonCasa

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;}
   
}


CocinaCasa

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;}
   
}

Muchas gracias.
« Última modificación: 16 de Abril 2022, 15:48 por Alex Rodríguez »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 989
    • Ver Perfil
Re: Ejercicio Java orientación a objetos CU00641B
« Respuesta #1 en: 11 de Enero 2022, 01:13 »
Hola y bienvenido.

El constructor de la clase Casa...
Código: [Seleccionar]
    public Casa (double superficieCasa, String direccionCasa, SalonCasa salonCasaCasa, CocinaCasa cocinaCasaCasa){
        superficie = superficieCasa;
        direccion = direccionCasa;
        salonCasa = new SalonCasa ();
        cocinaCasa = new CocinaCasa ();
    }

 ...no cumple exactamente con lo que pide el enunciado:
Citar
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.

Es decir, debería recibir valores entre los paréntesis.
Simplemente inicializar la variables primitivas a unos valores "genéricos" por defecto (por ejemplo valor 0 para los datos numéricos y una cadena vacía para los String) e instanciar nuevos objetos para los variables que sean objetos e clase (esta parte sí la has hecho bien).

Y ya luego, para terminar de afinar la clase, completar los getter y setter.

Un saludo.
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

micaelasol

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 33
    • Ver Perfil
Re: Ejercicio Java orientación a objetos CU00641B
« Respuesta #2 en: 11 de Enero 2022, 14:41 »
Gracias por responder con tanta rapidez y por las correcciones!
Aquí va entonces el código corregido:
Casa:
Código: [Seleccionar]
public class Casa {
    private double superficie;
    private String direccion;
    private SalonCasa salonCasa;
    private CocinaCasa cocinaCasa;
   
    public Casa (double valorSuperficie, String valorDireccion, SalonCasa valorSalonCasa, CocinaCasa valorCocinaCasa){
        superficie = 0.0;
        direccion = "";
        salonCasa = new SalonCasa ();
        cocinaCasa = new CocinaCasa ();
    }
   
    public void setSuperficie (double valorSuperficie){
        superficie = valorSuperficie;
    }
   
    public void setDireccion (String valorDireccion){
        direccion = valorDireccion;
    }
   
    public void setSalonCasa (SalonCasa valorSalonCasa){
        salonCasa = valorSalonCasa;
    }
   
    public void setCocinaCasa (CocinaCasa valorCocinaCasa){
        cocinaCasa = valorCocinaCasa;
    }
   
    public double getSuperficie () {return superficie;}
   
    public String getDireccion () {return direccion;}
   
    public SalonCasa getSalonCasa () {return salonCasa;}
   
    public CocinaCasa getCocinaCasa () {return cocinaCasa;}
   
}

Muchas gracias nuevamente!

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 989
    • Ver Perfil
Re: Ejercicio Java orientación a objetos CU00641B
« Respuesta #3 en: 12 de Enero 2022, 00:18 »
Mejor, pero sigue sin ser necesarios los parámetros recibidos por paréntesis.

Citar
    public Casa (double valorSuperficie, String valorDireccion, SalonCasa valorSalonCasa, CocinaCasa valorCocinaCasa){
        superficie = 0.0;
        direccion = "";
        salonCasa = new SalonCasa ();
        cocinaCasa = new CocinaCasa ();
    }

La mayoría de veces, sí vamos a querer recibir parámetros por los paréntesis del constructor y usarlos para asignarlos a los atributos.
E incluso verás que será habitual tener dos (o más) constructores, uno que no reciba parámetros y otro que sí.

Pero en este ejercicio en concreto, no los vamos a necesitar, por lo que el constructor quedaría así:
Citar
    public Casa(){
        superficie = 0.0;
        direccion = "";
        salonCasa = new SalonCasa();
        cocinaCasa = new CocinaCasa();
    }

Sigue compartiendo tus dudas, espero que aprendas y te diviertas con el curso Java.
Un saludo.
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

micaelasol

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 33
    • Ver Perfil
Re: Ejercicio Java orientación a objetos CU00641B
« Respuesta #4 en: 12 de Enero 2022, 01:44 »
Genial, ya lo he entendido! Muchísimas gracias!!

 

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