Autor Tema: Java ejercicio resuelto CU00642B Pasar objetos como parámetros a un constructor  (Leído 2356 veces)

felipevega

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 6
    • Ver Perfil
Hola compañeros. Adjunto mi ejercicio CU00642B del curso básico de programación Java de aprenderaprogramar, desarrollado para esta unidad diferente a otros que he visto, de esta manera fue como lo entendí.

Clase CocinaCasa

Código: [Seleccionar]
public class CocinaCasa{

    private boolean esIndependiente;
    private int numeroDeFuegos;
   
    public CocinaCasa(){
   
        esIndependiente = false;
        numeroDeFuegos = 0;       
       
    }
   
    private void setInde(boolean vInde){esIndependiente = vInde;}
    private void setnumFuego(int vNumFuego){numeroDeFuegos = vNumFuego;}
   
    private boolean getInde(){return esIndependiente;}
    private int getnumFuego(){return numeroDeFuegos;}
   
   
}//Cierre clase


Clase SalonCasa

Código: [Seleccionar]
public class SalonCasa{

    private int numeroDeTelevisores;
    private String TipoSalon;
   
    public SalonCasa(){
   
        numeroDeTelevisores = 0;
        TipoSalon = "Desconocido";
    }
   
    public void setnumTv(int numTv){numeroDeTelevisores = numTv;}
    public void setTipoSalon(String vTipoSalon){TipoSalon = vTipoSalon;}
   
    public int getnumTv(){return numeroDeTelevisores;}
    public String getTipoSalon (){return TipoSalon;}
       
}//Cierre clase


Clase Casa

Código: [Seleccionar]
public class Casa{

    private double superficie;
    private String direccion;
    private SalonCasa salonCasa;
    private CocinaCasa cocina;
   
    //primer constructor
    public Casa(){
   
        superficie = 0;
        direccion = "";
        salonCasa = new SalonCasa();
        cocina = new CocinaCasa();
       
    }
   
    //Segundo constructor
   
    public Casa (double superficie, String direccion, SalonCasa salonCasa, CocinaCasa cocina ){
        this.superficie = superficie;
        this.direccion = direccion;
        this.salonCasa = salonCasa;
        this.cocina = cocina;
    }
   
    public void setSuperficie(double superficie){
        this.superficie = superficie;
    }
   
    public void setDireccion(String direccion){
        this.direccion = direccion;
    }
   
    public void setCocinaCasa(CocinaCasa cocina){
        this.cocina = cocina;
    }
   
    public void setSalonCasa(SalonCasa salonCasa){
        this.salonCasa = salonCasa;
    }
   
    public double getSuperficie(){return superficie;}
    public String getDireccion(){return direccion;}
    public SalonCasa getSalonCasa(){return salonCasa;}
    public CocinaCasa getCocinaCasa(){return cocina;}

   
}//Cierre clase

Muchas gracias compañeros por su retroalimentacion
« Última modificación: 12 de Abril 2022, 19:18 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re: Java: (CU00642B) Pasar objetos como parámetros a un constructor Java
« Respuesta #1 en: 21 de Abril 2021, 21:33 »
Hola Felipe, bienvenido a los foros. Te comento algunas cuestiones.

Revisa https://aprenderaprogramar.com/foros/index.php?topic=1460.0 donde hay distintas indicaciones para escribir en los foros. Es importante seguir las pautas para poner título a los temas, pegar el código con el formato adecuado, etc.

En el ejercicio algunas cuestiones a mejorar serían:

- Los métodos set y get por convenio van seguidos del nombre del atributo. En lugar de setInde y getInde es más adecuado setEsIndependiente y getEsIndependiente. No significa que el código no funcione como tú lo has escrito, sino que no se atiene al convenio que siguen los programadores java.

- Si comparas tu segundo constructor con el que aparece en https://aprenderaprogramar.com/foros/index.php?topic=1238.0 verás algunas diferencias. La principal es que tal y como has escrito tú el código, los objetos que se reciben como parámetros pasan a ser atributos y pueden ser modificados. Con el código tal y como está escrito en ese otro hilo se crean nuevos objetos salonCasa y cocina, de modo que su modificación no afectaría a los objetos que se recibieron como parámetros.

- Con tus métodos setCocinaCasa y setSalonCasa ocurre lo mismo: los objetos recibidos como parámetros pasan a ser atributos. Esto implica que si se manipulan, se verán afectados también los objetos recibidos. Pongo un ejemplo. Supongamos que tú tienes una casa llamada casaFelipe con una cocina llamada cocinaFelipe. Y ahora creamos otra casa llamada casaJuan con una cocina llamada cocinaJuan. Si tú pasas la cocinaFelipe para crear la cocinaJuan, tal y como tú tienes escrito el código, si se modifica la cocinaJuan se modificará también la cocinaFelipe ¿Por qué? Porque estableces el propio objeto recibido como parámetro como atributo en lugar de crear uno nuevo. En cambio con el código como se explica en el hilo indicado puede evitarse esto, que en general es preferible.

Si no entiendes bien esto ahora no te preocupes, apúntalo para revisarlo más adelante.

Saludos

felipevega

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 6
    • Ver Perfil
Re: Java: (CU00642B) Pasar objetos como parámetros a un constructor Java
« Respuesta #2 en: 21 de Abril 2021, 21:52 »
Mil gracias por tu retroalimentación Alex, voy a reescribir el código para compararlo con los demás y poder ir entendiendo mejor estos conceptos.


 

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