Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: BelCrow en 02 de Septiembre 2014, 02:26
-
Aquí mi practica CU00642B, por favor revisar....
(Nota: tuve que agregarles un constructor con parámetros a CocinaCasa y a SalonCasa, para que no me tire el error en la Compilación de Casa, aun ambas clases tiene su constructor que les defina valores por defecto también. )
SalonCasa:
//clase
public class SalonCasa {
private int numeroDeTelevisores;
private String tipoSalon;
//constructor
public SalonCasa () {
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;}
}
CocinaCasa:
//clase
public class CocinaCasa {
private boolean esIndependiente;
private int numeroDeFuegos;
//constructor
public CocinaCasa () {
esIndependiente = false;
numeroDeFuegos = 0;
}
//contructor 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;
}
//gettes
public boolean getEsIndependente () {return esIndependiente;}
public int getNumeroDeFuegos () {return numeroDeFuegos;}
}
Casa:
//clase con otras clases
public class Casa {
private double superficie;
private String direccion;
private SalonCasa salonCasa;
private CocinaCasa cocina;
//constructor
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.getNumeroDeTelevisores(), 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 valorNumeroDeTelevisores, String valorTipoSalon) {
salonCasa.setNumeroDeTelevisores(valorNumeroDeTelevisores);
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;}
}
-
Has puesto como referencia CU006342B pero ese número no existe...
El código es correcto aunque este fragmento:
Clase Casa:
//setters de las otras clases
public void setSalonCasa (int valorNumeroDeTelevisores, String valorTipoSalon) {
salonCasa.setNumeroDeTelevisores(valorNumeroDeTelevisores);
salonCasa.setTipoSalon(valorTipoSalon);
}
public void setCocina (boolean valorEsIndependiente, int valorNumeroDeFuegos) {
cocina.setEsIndependiente(valorEsIndependiente);
cocina.setNumeroDeFuegos(valorNumeroDeFuegos);
}
Sería mejor resolverlo usando objetos como comentamos aquí: https://www.aprenderaprogramar.com/foros/index.php?topic=1220.0
Cuanto antes te acostumbres a trabajar con objetos mejor para tí.
Saludos!!!
-
haaa en CU006342B se me fue un 3 de sobra :P sorry....
respecto a lo del fragmento :
//setters de las otras clases
public void setSalonCasa (int valorNumeroDeTelevisores, String valorTipoSalon) {
salonCasa.setNumeroDeTelevisores(valorNumeroDeTelevisores);
salonCasa.setTipoSalon(valorTipoSalon);
}
public void setCocina (boolean valorEsIndependiente, int valorNumeroDeFuegos) {
cocina.setEsIndependiente(valorEsIndependiente);
cocina.setNumeroDeFuegos(valorNumeroDeFuegos);
}
me habías dicho que esa parte esta bien orientada a objetos de acuerdo a la forma 3 que fue la que utilice..
Forma 1 (trabajando con objetos):
Recibir un objeto e igualar el atributo al objeto recibido. Sería:
public void setSalonCasa (SalonCasa objetoSalon) {
salonCasa = objetoSalon;
}
Forma 2 (trabajando con objetos):
Recibir un objeto y crear un nuevo objeto cuyos atributos sean iguales a los del objeto recibido:
public void setSalonCasa (SalonCasa objetoSalon) {
salonCasa = new SalonCasa();
salonCasa.setNumeroDeTelevisores(objetoSalon.getNumeroDeTelevisores);
salonCasa.setTipoSalon(objetoSalon.getTipoSalon);
}
Forma 3 (recibiendo parámetros primitivos):
La forma que tú has definido.
Forma 4:
Incluiría otras formas de hacer las cosas.
utilice la misma clase Casa del CU00641 para este ejercicio CU00643..
pero para ver si entendí bien, me recomiendas que utilice la forma 2 que utiliza objetos en los parámetros, de esta forma?
Casa:
//clase con otras clases
public class Casa {
private double superficie;
private String direccion;
private SalonCasa salonCasa;
private CocinaCasa cocina;
//constructor
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.getNumeroDeTelevisores(), 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 (SalonCasa objetoSalon) {
salonCasa = new SalonCasa();
salonCasa.setNumeroDeTelevisores(objetoSalon.getNumeroDeTelevisores());
salonCasa.setTipoSalon(objetoSalon.getTipoSalon());
}
public void setCocina (CocinaCasa objetoCocina) {
cocina = new CocinaCasa();
cocina.setEsIndependiente(objetoCocina.getEsIndependente());
cocina.setNumeroDeFuegos(objetoCocina.getNumeroDeFuegos());
}
//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;}
}
nota: quieres decir que el metodo del fragmento no esta mal pero para acostumbrarme a trabajar con objetos utilice la forma 2? favor de corregirme si me equivoco Mario, me es de mucha ayuda!!!.
-
Hola, en programación las cosas se pueden hacer de muchas maneras. Si te fijas en las observaciones que te había hecho en el ejercicio CU00641B si te fijas en la forma 1 y forma 2 te puse entre paréntesis (Trabajando con objetos) y en la forma 3 te puse (recibiendo parámetros primitivos)
>>quieres decir que el metodo del fragmento no esta mal pero para acostumbrarme a trabajar con objetos utilice la forma 2?
Exactamente, acostúmbrate a trabajar con objetos.
Has entendido bien y tu definición del código es ahora mejor.
Fíjate que ya que tienes constructores con parámetros podrías hacer:
public void setCocina (CocinaCasa objetoCocina) {
cocina = new CocinaCasa(objetoCocina.getEsIndependente(), objetoCocina.getNumeroDeFuegos() );
}
Pruébalo a ver si te funciona. En caso de que te funcione, piensa que en general será mejor usar dos líneas de código antes que cuatro ;)
Saludos
-
Si hace lo mismo y con 2 lineas menos....... muchas gracias Mario..
Casa:
//clase con otras clases
public class Casa {
private double superficie;
private String direccion;
private SalonCasa salonCasa;
private CocinaCasa cocina;
//constructor
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.getNumeroDeTelevisores(), 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 (SalonCasa objetoSalon) {
salonCasa = new SalonCasa(objetoSalon.getNumeroDeTelevisores(), objetoSalon.getTipoSalon());
}
public void setCocina (CocinaCasa objetoCocina) {
cocina = new CocinaCasa(objetoCocina.getEsIndependente(), objetoCocina.getNumeroDeFuegos());
}
//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;}
}