Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado 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
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
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
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;}
}
-
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.
-
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á.
-
Ok, muchas gracias por la ayuda, pondré atención en las partes que dijiste y las corregire
-
Bueno, he revisado y parece ahora si el código corre de manera correcta, lo dejo a continuación
SalonCasa
//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
//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
//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
-
Hola Bcks7
En la clase Casa tienes este método:
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.
-
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.
-
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.
-
Gracias por la respuesta, bueno pues a seguir picando piedra para llegar a ser un programador experto.