Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Bcks7 en 20 de Septiembre 2016, 03:13

Título: Java dificultad de planteamiento de la programación orientada a objetos CU00642B
Publicado por: Bcks7 en 20 de Septiembre 2016, 03:13
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;}
}


   

       
Título: Re:Java desde cero CU00642B Ayuda!!!
Publicado por: DRANXZ88 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.
Título: Re:Java desde cero CU00642B Ayuda!!!
Publicado por: DRANXZ88 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á.
Título: Re:Java desde cero CU00642B Ayuda!!!
Publicado por: Bcks7 en 20 de Septiembre 2016, 05:17
Ok, muchas gracias por la ayuda, pondré atención en las partes que dijiste y las corregire
Título: Re:Java desde cero CU00642B Ayuda!!!
Publicado por: Bcks7 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
Título: Re:Java desde cero CU00642B Ayuda!!!
Publicado por: Alex Rodríguez 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.
Título: Re:Java dificultad de planteamiento de la programación orientada a objetos CU00642B
Publicado por: Bcks7 en 28 de Septiembre 2016, 21:56
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.
Título: Re:Java dificultad de planteamiento de la programación orientada a objetos CU00642B
Publicado por: Alex Rodríguez en 01 de Octubre 2016, 13:09
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.
Título: Re:Java dificultad de planteamiento de la programación orientada a objetos CU00642B
Publicado por: Bcks7 en 05 de Octubre 2016, 01:16
Gracias por la respuesta, bueno pues a seguir picando piedra para llegar a ser un programador experto.