Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Akjack en 13 de Marzo 2015, 01:32
-
Buenas noches
llevo desde ayer dándole vueltas y no doy con lo que estoy haciendo mal...pero en la clase casa,me da error :(
a ver si alguien me puede echar una manilla...
public class SalonCasa
{
// instance variables - replace the example below with your own
private int numeroDeTelevisores;
private String tipoSalon;
/**
* Constructor for objects of class SalonCasa
*/
public SalonCasa(int numeroDeTelevisores, String tipoSalon)
{
numeroDeTelevisores = 0;
tipoSalon = "Desconocido";
}
public void setNumeroDeTelevisores(int valorNumeroDeTelevisores){
valorNumeroDeTelevisores = numeroDeTelevisores;
}
public void setTipoSalon (String valorTipoSalon){
valorTipoSalon = tipoSalon;
}
public int getNumeroDeTelevosores(){
return numeroDeTelevisores;
}
public String getTipoSalon(){
return tipoSalon;
}
}
public class CocinaCasa
{
// instance variables - replace the example below with your own
private boolean esIndependiente;
private int numeroDeFuegos;
public CocinaCasa(boolean esIndependiente, int numeroDeFuegos)
{
esIndependiente = false;
numeroDeFuegos = 0;
}
public void setEsIndependiente(boolean valorEsIndependiente){
esIndependiente = valorEsIndependiente;
}
public void setNumeroDeFuegos(int valorNumeroDeFuegos){
numeroDeFuegos = valorNumeroDeFuegos;
}
public boolean getEsIndependiente(){
return esIndependiente;
}
public int getNumeroDeFuegos(){
return numeroDeFuegos;
}
}
public class Casa
{
// instance variables - replace the example below with your own
private double superficie;
private String direccion;
private SalonCasa salonCasa;
private CocinaCasa cocinaCasa;
public Casa()
{
superficie= 0;
direccion = "";
salonCasa= new SalonCasa();
cocinaCasa= new CocinaCasa();
}
public Casa(double valorSuperficie,String valorDireccion,SalonCasa valorSalonCasa,CocinaCasa valorCocinaCasa){
superficie = valorSuperficie;
direccion = valorDireccion;
salonCasa = valorSalonCasa;
cocinaCasa = valorCocinaCasa;
}
public void setSuperficie(int valorSuperficie){
superficie = valorSuperficie;
}
public void setDireccion(String valorDireccion){
direccion=valorDireccion;
}
public void setSalonCasa(SalonCasa valorSalonCasa){
salonCasa=valorSalonCasa;
}
public void setCocinaCasa(CocinaCasa valorCocinaCasa){
cocinaCasa=valorCocinaCasa;
}
public double getValorSuperficie(){
return superficie;
}
public String getValorDireccion(){
return direccion;
}
public SalonCasa getValorSalonCasa(){
return salonCasa;
}
public CocinaCasa getValorCocinaCasa(){
return cocinaCasa;
}
}
Mil gracias por vuestra ayuda de antemano.
Un saludo!
-
Hola Akjack
Si, todo tu código está bien excepto lo que te hace bailar la cabeza en la clase Casa.
En la clase Casa, en el constructor sin parámetros inicializas el objeto salonCasa usando la instrucción:
salonCasa= new SalonCasa();
donde SalonCasa() hace referencia al constructor de la clase SalonCasa que no recibe parámetros (los paréntesis del constructor están vacíos), cuando en tu clase SalonCasa el único constructor que hay recibe dos parámetros.
Ahí está el error.
Por cierto, no tiene sentido crear un constructor con parámetros y luego no usarlos para inicializar los atributos.
Así pues, si el constructor del objeto que quieres crear no recibe parámetros, se invoca el constructor con los paréntesis vacíos. Y si tiene parámetros, se invoca aportando entre los paréntesis los parámetros requeridos.
Lo mismo te ocurre con el atributo cocinaCasa.
Visto esto, creo que sabrás subsanar el error. Si tienes alguna duda, pregunta.
Saludos.
-
Hola Toni,ya no me da error pero no se si esta correcto:
public class Casa
{
// instance variables - replace the example below with your own
private double superficie;
private String direccion;
private SalonCasa salonCasa;
private CocinaCasa cocinaCasa;
public Casa(SalonCasa objetoSalon, CocinaCasa objetoCocina)
{
superficie= 0;
direccion = "";
salonCasa= new SalonCasa(0,"Desconocido");
cocinaCasa= new CocinaCasa(false,0);
}
public Casa(double valorSuperficie,String valorDireccion,SalonCasa valorSalonCasa,CocinaCasa valorCocinaCasa){
superficie = valorSuperficie;
direccion = valorDireccion;
salonCasa = valorSalonCasa;
cocinaCasa = valorCocinaCasa;
}
public void setSuperficie(int valorSuperficie){
superficie = valorSuperficie;
}
public void setDireccion(String valorDireccion){
direccion=valorDireccion;
}
public void setSalonCasa(SalonCasa valorSalonCasa){
salonCasa=valorSalonCasa;
}
public void setCocinaCasa(CocinaCasa valorCocinaCasa){
cocinaCasa=valorCocinaCasa;
}
public double getValorSuperficie(){
return superficie;
}
public String getValorDireccion(){
return direccion;
}
public SalonCasa getValorSalonCasa(){
return salonCasa;
}
public CocinaCasa getValorCocinaCasa(){
return cocinaCasa;
}
}
Pongo solo la clase casa,ya que las otras dos están en el primer mensaje.
La duda es,no debería llamar al constructor de las otras clases para que me pasen el valor en vez de ponerlo yo en el constructor de la clase casa?
o eso es solo para el segundo constructor?
Mil gracias por tu respuesta,ya veo algo de luz :)
Un saludo!
-
Hola Akjack
En este ejercicio no se pedía que las clases SalonCasa y CocinaCasa tuvieran constructores con parámetros, sino que inicializáramos a 0 y desconocido (eso se hace en un constructor sin parámetros)
Para estas clases puedes escribir el constructor sin parámetros y en la clase Casa utilizas esta instrucción para inicializar
salonCasa= new SalonCasa();
Saludos
-
vale,ya lo he pillao
he quitao los parámetros de la clase SalonCasa y CocinaCasa y en la clase Casa el constructor también esta sin parámetros
Si los tenia con parámetros daba error por no tener en Casa los parámetros,y al poner parámetros en Casa,no daba error,pero no es lo que se pedía
ya lo entiendo
Muchas gracias por todo Toni,eres un krak
Saludos!