Autor Tema: Java dificultad de planteamiento de la programación orientada a objetos CU00642B  (Leído 4969 veces)

Bcks7

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 48
    • Ver Perfil
Dejo este ejercicio CU00642B del tutorial básico de programador Java, aunque a pesar de haber comparado mi código con otros códigos donde el ejercicio esta bien resuelto me aparece un error, dejare un comentario para que sepan que parte del codigo es con su respectiva descripción.

SalonCasa
Código: [Seleccionar]
public class SalonCasa{//Inicio de la clase
   
    private int numeroTelevisores;
    private String tipoSalon;
   
    public SalonCasa(){//Constructor
       
        numeroTelevisores = 0;
        tipoSalon = "Desconocido";
    }
   
    //Metodo establecer valores de atributos
    public void setNumeroTelevisores(int valorNumeroTelevisores){
        numeroTelevisores = valorNumeroTelevisores;
    }
    public void setTipoSalon(String valorTipoSalon){
        tipoSalon = valorTipoSalon;
    }
   
    //Metodo obtener valores de atributos
    public int getNumeroTelevisores(){return numeroTelevisores;}
   
    public String getTipoSalon(){return tipoSalon;}
}//Cierre de la clase

CocinaCasa
Código: [Seleccionar]
public class CocinaCasa{//Inicio de la clase
   
    private boolean esIndependiente;
    private int numeroDeFuegos;
   
    public CocinaCasa(){//Constructor
       
        esIndependiente = false;
        numeroDeFuegos = 0;
    }
   
    //Metodo establecer valores de atributos
    public void setEsIndependiente(boolean valorEsIndependiente){
        esIndependiente = valorEsIndependiente;
    }
    public void setNumeroDeFuegos(int valorNumeroDeFuegos){
        numeroDeFuegos = valorNumeroDeFuegos;
    }
   
    //Metodos obtener valores de atributos
    public boolean getEsIndependiente(){return esIndependiente;}
   
    public int getNumeroDeFuegos(){return numeroDeFuegos;}
}//Cierre de la claseEs


Casa
Código: [Seleccionar]
public class Casa{
   
    private double superficie;
    private String direccion;
    private SalonCasa salonCasa;
    private CocinaCasa cocina;
   
    public Casa (){
       
        superficie = 0.0;
        direccion = "";
        salonCasa = new SalonCasa();
        cocina = new CocinaCasa();
    }
     //constuctor con parametros
    public Casa (double valorSuperficie, String valorDireccion, SalonCasa objetoSalonCasa, CocinaCasa objetoCocinaCasa) {
        superficie = valorSuperficie;
        direccion = valorDireccion;
        salonCasa = new SalonCasa (objetoSalonCasa.getNumeroTelevisores(), objetoSalonCasa.getTipoSalon() );//Esta parte del codigo es el error y marca "constructor
SalonCasa in class Saloncasak cannot be applied to given types;
        cocina = new CocinaCasa (objetoCocinaCasa.getEsIndependente(), objetoCocinaCasa.getNumeroDeFuegos() );
    }

    //setters de esta clase
    public void setSuperficie (double valorSuperficie) {
        superficie = valorSuperficie;
    }

    public void setDireccion (String valorDireccion) {
        direccion = valorDireccion;
    }

    //setters de las otras clases

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

    public void setCocina (boolean valorEsIndependiente, int valorNumeroDeFuegos) {
        cocina.setEsIndependiente(valorEsIndependiente);
        cocina.setNumeroDeFuegos(valorNumeroDeFuegos);
    }

    //getters de esta clase
    public double getSuperficie () {return superficie;}

    public String getDireccion () {return direccion;}

    //getters de las otras clases
    public SalonCasa getSalonCasa () {return salonCasa;}

    public CocinaCasa getCocina () {return cocina;}
}

[code]public class Casa{
   
    private double superficie;
    private String direccion;
    private SalonCasa salonCasa;
    private CocinaCasa cocina;
   
    public Casa (){
       
        superficie = 0.0;
        direccion = "";
        salonCasa = new SalonCasa();
        cocina = new CocinaCasa();
    }
     //constuctor con parametros
    public Casa (double valorSuperficie, String valorDireccion, SalonCasa objetoSalonCasa, CocinaCasa objetoCocinaCasa) {
        superficie = valorSuperficie;
        direccion = valorDireccion;
        salonCasa = new SalonCasa (objetoSalonCasa.getNumeroTelevisores(), objetoSalonCasa.getTipoSalon() )
        cocina = new CocinaCasa (objetoCocinaCasa.getEsIndependente(), objetoCocinaCasa.getNumeroDeFuegos() );
    }

    //setters de esta clase
    public void setSuperficie (double valorSuperficie) {
        superficie = valorSuperficie;
    }

    public void setDireccion (String valorDireccion) {
        direccion = valorDireccion;
    }

    //setters de las otras clases

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

    public void setCocina (boolean valorEsIndependiente, int valorNumeroDeFuegos) {
        cocina.setEsIndependiente(valorEsIndependiente);
        cocina.setNumeroDeFuegos(valorNumeroDeFuegos);
    }

    //getters de esta clase
    public double getSuperficie () {return superficie;}

    public String getDireccion () {return direccion;}

    //getters de las otras clases
    public SalonCasa getSalonCasa () {return salonCasa;}

    public CocinaCasa getCocina () {return cocina;}
}


   

       
« Última modificación: 28 de Septiembre 2016, 21:45 por Alex Rodríguez »

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
Re:Java desde cero CU00642B Ayuda!!!
« Respuesta #1 en: 20 de Septiembre 2016, 04:03 »
Estaba revisando tu código he encontrado errores como dijiste lo que note es que vos a tu atributos escribiste en minúscula y cuando le pasa como parámetros a tu constructor le pasaste en mayúscula el objeto tiene que ser ambos en mayúscula. Y otra cosa no creaste el el constructor con parámetros en tu clase SalonCasa y CocinaCasa, por eso te daba error en esa parte que mencionaste porque vos al crear un nuevo objeto SalonCasa(paramentos) lo que le pasa y como no tiene eso creado en tu clase no le pode llamar.

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
Re:Java desde cero CU00642B Ayuda!!!
« Respuesta #2 en: 20 de Septiembre 2016, 04:06 »
Tu getter y setter esta mal planteado también en la clase casa pero primero modifica el del constructor y el de los mayúscula y minúscula y ahí te va a dar cuenta de tu getter y setter cualquier duda o consulta estamos acá.

Bcks7

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 48
    • Ver Perfil
Re:Java desde cero CU00642B Ayuda!!!
« Respuesta #3 en: 20 de Septiembre 2016, 05:17 »
Ok, muchas gracias por la ayuda, pondré atención en las partes que dijiste y las corregire

Bcks7

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 48
    • Ver Perfil
Re:Java desde cero CU00642B Ayuda!!!
« Respuesta #4 en: 21 de Septiembre 2016, 03:43 »
Bueno, he revisado y parece ahora si el código corre de manera correcta, lo dejo a continuación

SalonCasa
Código: [Seleccionar]
//CU00642B PASO DE OBJETOS COMO PARAMETROS A UN METODO O CONSTRUCTOR EN JAVA
public class SalonCasa{//Inicio de la clase
   
    private int numeroDeTelevisores;
    private String tipoSalon;
   
    public SalonCasa(){//Constructor sin parametros
        numeroDeTelevisores = 0;
        tipoSalon = "Desconocido";
    }
   
    //Constructor con parametros   
    public SalonCasa(int valorNumeroDeTelevisores, String valorTipoSalon){
        numeroDeTelevisores = valorNumeroDeTelevisores;
        tipoSalon = valorTipoSalon;
    }
   
    //Setters
    public void setNumeroDeTelevisores(int valorNumeroDeTelevisores){
        numeroDeTelevisores = valorNumeroDeTelevisores;
    }
    public void setTipoSalon(String valorTipoSalon){
        tipoSalon = valorTipoSalon;
    }
   
    //Getters
    public int getNumeroDeTelevisores(){return numeroDeTelevisores;}
    public String getTipoSalon(){return tipoSalon;}
}//Cierre de la clase

CocinaCasa
Código: [Seleccionar]
//CU00642B PASO DE OBJETOS COMO PARAMETROS A UN METODO O CONSTRUCTOR EN JAVA
public class CocinaCasa{//Inicio de la clase
   
    private boolean esIndependiente;
    private int numeroDeFuegos;
   
    public CocinaCasa(){//Constructor sin parametros
        esIndependiente = false;
        numeroDeFuegos = 0;
    }
   
    //Constructor con parametros
    public CocinaCasa(boolean valorEsIndependiente, int valorNumeroDeFuegos){
        esIndependiente = valorEsIndependiente;
        numeroDeFuegos = valorNumeroDeFuegos;
    }
   
    //Setters
    public void setEsIndependiente(boolean valorEsIndependiente){
        esIndependiente = valorEsIndependiente;
    }
    public void setNumeroDeFuegos(int valorNumeroDeFuegos){
        numeroDeFuegos = valorNumeroDeFuegos;
    }
   
    //Getters
    public boolean getEsIndependiente(){return esIndependiente;}
    public int getNumeroDeFuegos(){return numeroDeFuegos;}
}//Cierre de la clase

Casa
Código: [Seleccionar]
//CU00642B PASO DE OBJETOS COMO PARAMETROS A UN METODO O CONSTRUCTOR EN JAVA
public class Casa{//Inicio de la clase
   
    private double superficie;
    private String direccion;
    private SalonCasa salonCasa;
    private CocinaCasa cocina;
   
    //Constructor sin parametros
    public Casa(){
        superficie = 0;
        direccion = "";
        salonCasa = new SalonCasa();
        cocina = new CocinaCasa();
    }
   
    //Constructor con parametros
    public Casa(double valorSuperficie, String valorDireccion, SalonCasa objetoSalonCasa, CocinaCasa objetoCocinaCasa){
        superficie = valorSuperficie;
        direccion = valorDireccion;
        salonCasa = new SalonCasa (objetoSalonCasa.getNumeroDeTelevisores(), objetoSalonCasa.getTipoSalon());
        cocina = new CocinaCasa (objetoCocinaCasa.getEsIndependiente(), objetoCocinaCasa.getNumeroDeFuegos());
    }
   
    //Setters
    public void setSuperficie(double valorSuperficie){
        superficie = valorSuperficie;
    }
    public void setDireccion(String valorDireccion){
        direccion = valorDireccion;
    }
    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);
    }
   
    //Getters
    public double getSuperficie(){return superficie;}
    public String getDireccion(){return direccion;}
    public SalonCasa getSalonCasa(){return salonCasa;}
    public CocinaCasa getCocina(){return cocina;}
}//Cierre de la clase

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:Java desde cero CU00642B Ayuda!!!
« Respuesta #5 en: 28 de Septiembre 2016, 21:44 »
Hola Bcks7

En la clase Casa tienes este método:

Código: [Seleccionar]
    public void setSalonCasa(int valorNumeroDeTelevisores, String valorTipoSalon){
        salonCasa.setNumeroDeTelevisores(valorNumeroDeTelevisores);
        salonCasa.setTipoSalon(valorTipoSalon);
    }

Esto en general (por convención) se considera no correcto. No es que no se pueda hacer (sí se puede hacer), pero solo lo haríamos en circunstancias muy concretas.

En general se considera que un método set solo debe manipular atributos de la clase. El atributo es un objeto SalonCasa, por ello el método debería recibir un objeto SalonCasa y no numero de televisores y tipo de salón que son atributos de otra clase. Cada clase debe operar solo sobre sus propios atributos.

Puedes leer comentarios sobre esto en https://www.aprenderaprogramar.com/foros/index.php?topic=1238.0

Saludos.

Bcks7

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 48
    • Ver Perfil
Hola Alex, gracias por la corrección, tengo curiosidad por saber en qué circunstancias podría emplearse de la manera en que lo he puesto ya que dices solo en circunstancias muy particulares, y me gustaría saber si podrías darme un ejemplo por favor.

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola, las circunstancias particulares serían que fueras un programador experto y por algún motivo justificado decidieras hacerlo así. Mientras no se sea experto recomendamos seguir los estándares. Saludos.

Bcks7

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 48
    • Ver Perfil
Gracias por la respuesta, bueno pues a seguir picando piedra para llegar a ser un programador experto.

 

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