Autor Tema: Cómo se puede meter un objeto dentro de otro objeto en Java CU00641B  (Leído 13926 veces)

nani

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 63
    • Ver Perfil
Hola a todos aquì les va mi soluciòn, quiero saber si està bien hasta aquì o habìa que hacer algo con los nuevos objetos creados dentro de la clase Casa.

Código: [Seleccionar]
//Clase SalonCasa
public class SalonCasa{
    private int numeroDeTelevisores;
    private String TipoSalon;

    //Constructor
    public SalonCasa(){
        numeroDeTelevisores=0;
        TipoSalon="desconocido";
    }

    //Mètodos set
    public void setNumeroDeTelevisores(int valorNumDeTelevisores){
        numeroDeTelevisores=valorNumDeTelevisores;
    }

    public void setTipoSalon(String valorTipoSalon){
        TipoSalon=valorTipoSalon;
    }

    //Mètodos get
    public int getNumeroDeTelevisores(){
        return numeroDeTelevisores;

    }

    public String getTipoSalon(){
        return TipoSalon;

    }
}


Código: [Seleccionar]
//Clase CocinaCasa
public class CocinaCasa{
    private boolean esIndependiente;
    private int numeroDeFuegos;
    //Constructor
    public CocinaCasa(){
        esIndependiente=false;
        numeroDeFuegos=0;
    }
    //Mètodos Set
    public void setEsIndependiente(boolean valorEsIndependiente){
        esIndependiente=valorEsIndependiente;
    }

    public void setNumeroDeFuegos(int valorNumDeFuegos){
        numeroDeFuegos=valorNumDeFuegos;
    }
    //Mètodos Get
    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.00;
        direccion="";
        salonCasa=new SalonCasa();
        cocina=new CocinaCasa();

    }
    //Mètodos Set
    public void setSuperficie(double valorSuperficie){
        superficie=valorSuperficie;
    }

    public void setDireccion(String valorDireccion){
        direccion=valorDireccion;
    }
    //Mètodos get
    public double getSuperficie(){
        return superficie;

    }

    public String getDireccion(){
        return direccion;
    }
}
« Última modificación: 15 de Abril 2015, 10:04 por Ogramar »

Mastermind

  • Experto
  • *****
  • Mensajes: 536
    • Ver Perfil
Re:CU00641B Cómo se puede meter un objeto dentro de otro objeto en Java
« Respuesta #1 en: 09 de Abril 2015, 14:22 »
Hola nani, en la clase casa te faltan los métodos get y set para los atributos que son objetos. No sólo los tipos primitivos deben llevar set y get. En este caso al ser objetos hay que tratarlos de forma un poco distinta a si fueran atributos primitivos. Puedes guiarte por lo que se explica aquí para corregir tu ejercicio, https://www.aprenderaprogramar.com/foros/index.php?topic=1220

Saludos!!

nani

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 63
    • Ver Perfil
Re:CU00641B Cómo se puede meter un objeto dentro de otro objeto en Java
« Respuesta #2 en: 11 de Abril 2015, 17:50 »
Gracias por la respuesta me has dado tremenda ayuda porque no me quedaba claro en el ejercicio que tenìa que hacer con los objetos..aquì te dejo la clase Casa con la implementaciòn de los mètodos get y set de los objetos, te agradecerìa que me la revisaras sobre todo los mètodos get, una cosa que querìa decir para los que son nuevos como yo en el curso y no lo saben, cuando estemos haciendo uso de objetos y estemos implementando sus mètodos, en el editor Bluej despùes de poner el punto por ejemplo: cocina. apretamos ctrl+barra espaciadora y se nos muestran los mètodos a los que tiene acceso el objeto que estemos usando esto facilita mucho el trabajo...

Código: [Seleccionar]
public class Casa{
    private double superficie;
    private String direccion;
    private SalonCasa salonCasa;
    private CocinaCasa cocina;

    public Casa(){
        superficie=0.00;
        direccion="";
        salonCasa=new SalonCasa();
        cocina=new CocinaCasa();

    }
    //Mètodos Set
    public void setSuperficie(double valorSuperficie){
        superficie=valorSuperficie;
    }

    public void setDireccion(String valorDireccion){
        direccion=valorDireccion;
    }
     public void setNumeroDeTelevisores(int valorNumDeTelevisores){
       salonCasa.setNumeroDeTelevisores(valorNumDeTelevisores);
    }   
    public void setTipoSalon(String valorTipoSalon){
       salonCasa.setTipoSalon(valorTipoSalon);
    }
    public void setEsIndependiente(boolean valorEsIndependiente){
       cocina.setEsIndependiente(valorEsIndependiente);
    }
     public void setNumeroDeFuegos(int valorNumDeFuegos){
        cocina.setNumeroDeFuegos(valorNumDeFuegos);
    }

    //Mètodos get
    public double getSuperficie(){
        return superficie;
    }

    public String getDireccion(){
        return direccion;
    }
     public int getNumeroDeTelevisores(){
        return salonCasa.getNumeroDeTelevisores();

    }

    public String getTipoSalon(){
        return salonCasa.getTipoSalon();

    }
     public boolean getEsIndependiente(){
        return cocina.getEsIndependiente();
    }

    public int getNumeroDeFuegos(){
        return cocina.getNumeroDeFuegos();
    }
}
« Última modificación: 15 de Abril 2015, 17:54 por Alex Rodríguez »

Mastermind

  • Experto
  • *****
  • Mensajes: 536
    • Ver Perfil
Re:CU00641B Cómo se puede meter un objeto dentro de otro objeto en Java
« Respuesta #3 en: 12 de Abril 2015, 11:44 »
Hola todavía no lo tienes bien. Los métodos setEsIndependiente y setTipoSalon o getEsIndependiente y getTipoSalon no deben ir en esta clase porque esIndependiente y tipoSalon no son atributos de esta clase. Cada clase gestiona sólo sus atributos, no los de otras clases. En este caso los atributos son objetos.

Deberían trabajarse como objetos como se indica en https://www.aprenderaprogramar.com/foros/index.php?topic=1220.msg6735#msg6735

Mira cómo está hecho en www.aprenderaprogramar.com/foros/index.php?topic=2111, ahí está bien resuelto: sólo métodos get y set para atributos propios de la clase.

Saludos!

nani

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 63
    • Ver Perfil
Re:CU00641B Cómo se puede meter un objeto dentro de otro objeto en Java
« Respuesta #4 en: 14 de Abril 2015, 18:12 »
Gracias, tengo una duda en algo en esa clase ponen como ejemplo este còdigo


Código: [Seleccionar]
Escribe y compila el siguiente código:
//Ejemplo de clase que utiliza tipos definidos en otras clases (usa otras clases)
public class TaxiCond {
private Taxi vehiculoTaxi;
private Persona conductorTaxi;
//Constructor
public TaxiCond () {
vehiculoTaxi = new Taxi (); //Creamos un objeto Taxi con el constructor general de Taxi
conductorTaxi = new Persona (); //Creamos un objeto Persona con el constructor general de Persona
}
public void setMatricula (String valorMatricula) { vehiculoTaxi.setMatricula(valorMatricula); }
//Método que devuelve la información sobre el objeto TaxiCond
public String getDatosTaxiCond () {
String matricula = vehiculoTaxi.getMatricula();
String distrito = vehiculoTaxi.getDistrito();
int tipoMotor = vehiculoTaxi.getTipoMotor();
String cadenaTipoMotor = "";



Mi duda es, el mètodo setMatricula que es de la clase Taxi porque lo iplementan en esta clase, llamando el mètdo a travès del objeto creado de tipo taxi, mis mètodos los hice guiàndome por ahì pero bueno tu me dices que està mal, no puedo continuar con el curso hasta no aclarar esa duda, respòndeme lo màs pronto posible please...saludos
« Última modificación: 15 de Abril 2015, 17:54 por Alex Rodríguez »

Mastermind

  • Experto
  • *****
  • Mensajes: 536
    • Ver Perfil
Re:CU00641B Cómo se puede meter un objeto dentro de otro objeto en Java
« Respuesta #5 en: 15 de Abril 2015, 08:49 »
Hola nani, tienes que pensar que tendrás que ser tú como programador quien tenga que tomar las decisiones. Por tanto tú puedes decidir manipular un atributo de otra clase de forma indirecta, y si tu decisión está bien justificada bien estará. Pero cuando no se tiene experiencia la recomendación es seguir los criterios que te puedan dar personas más experimentadas porque estás acostumbradas a lo que se denomina "buenas prácticas de programación". En este caso mi recomendación es no manipular atributos desde clases que no sean las responsables directas de los atributos. Aunque esto se podría discutir, matizar, etc. creo que es un buen punto de partida por el que deberías guiarte, aunque podrás oir opiniones de otras personas que quizá piensen de distinta manera. SaludoS!!!

nani

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 63
    • Ver Perfil
En conclusiòn no es una buena pràctica de programaciòn manipular atributos o mètodos desde clases que no sean las responsables directas, ufff y yo que pensaba que esta era una de las ventajas de crear objetos, sigo sin entender porque entonces lo hicieron asì en el ejemplo que pusieron en la clase, de todas formas gracias seguirè tu consejo, ahora gracias a tu aclaraciòn puedo seguir con el curso un saludo ;)

 

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