Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: jaivcaba en 21 de Octubre 2014, 07:15
-
PARA LA CLASE CASA
/**
* Write a description of class Casa here.
*
* @author (jaivcaba)
* @version (19/10/2014)
*/
public class Casa
{
// instance variables - replace the example below with your own
private double superficie;
private String direccion;
private SalonCasa salonCasa;
private CocinaCasa cocina;
/**
* Constructor for objects of class Casa
*/
public Casa()
{
// initialise instance variables
superficie = 0.0;
direccion = " calle _ carrera _";
salonCasa = new SalonCasa ();
cocina = new CocinaCasa ();
}
public void setSuperficie (double valorSuperficie){
superficie = valorSuperficie;
}
public void setDireccion (String valorDireccion){
direccion = valorDireccion;
}
public double getSuperficie (){return superficie;}
public String getDireccion () {return direccion;}
}
PARA LA CLASE SalonCasa
/**
* Write a description of class SalonCasa here.
*
* @author (jaivcaba)
* @version (19/10/14)
*/
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()
{
// initialise instance variables
numeroDeTelevisores = 0;
tipoSalon = "Desconocido";
}
public void setNumeroDeTVs (int valorNumeroDeTVs){
numeroDeTelevisores = valorNumeroDeTVs;
}
public void setTipoSalon (String valorTipoSalon){
tipoSalon = valorTipoSalon;
}
public int getNumeroDeTVs (){return numeroDeTelevisores;}
public String getTipoSalon (){return tipoSalon;}
}
PARA LA CLASE CocinaCasa
/**
* Write a description of class CocinaCasa here.
*
* @author (jaivacaba)
* @version (19/10/14)
*/
public class CocinaCasa
{
// instance variables - replace the example below with your own
private boolean esIndependiente;
private int numeroDeFuegos;
/**
* Constructor for objects of class CocinaCasa
*/
public CocinaCasa()
{
// initialise instance variables
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;}
}
-
Hola jaivcaba
Tu ejercicio está bien en parte.
En primer lugar, sin ser un error, en la clase SalonCasa, tienes los métodos del atributo 'numeroDeTelevisores' que has bautizado
setNumeroDeTVs
getNumeroDeTVs
acortando los nombres para que no sean tan largos. Tienes que acostumbrarte a que los setters y getters se compongan con el nombre del atributo anteponiéndoles los prefijos 'set' y 'get'.
Esta convención facilita las cosas al programador. Piensa que si dentro de un mes vuelves a este proyecto vas a tener que pararte a pensar porque son diferentes estos métodos a lo estipulado.
También que podías arreglarlo cambiando el atributo a
int numeroDeTVs
Y así los métodos son correctos.
En segundo lugar en la clase Casa te faltan los setters y getters de los atributos salonCasa y cocinaCasa que en lugar de ser de tipo primitivo como int o boolean son de tipo SalonCasa y CocinaCasa (tipos creados por nosotros en sus clases respectivas)
Estos métodos deberían ser:
public void setSalonCasa (SalonCasa salonCasa){
this.salonCasa = salonCasa;
}
public void setCocinaCasa (CocinaCasa cocinaCasa){
this.cocinaCasa = cocinaCasa;
}
public SalonCasa getSalonCasa (){return salonCasa;}
public CocinaCasa getCocinaCasa (){return cocinaCasa;}
Esto de trabajar con atributos de tipos que hemos creado nosotros con nuestras clases (o las que nos proporciona el API de java) lo vamos a ver a menudo a partir de ahora.
Así que debes empezar a practicar.
Saludos
-
gracias por tomarte el tiempo y responder
aqui las correcciones.
para Casa
/**
* Write a description of class Casa here.
*
* @author (jaivcaba)
* @version (19/10/2014)
*/
public class Casa
{
// instance variables - replace the example below with your own
private double superficie;
private String direccion;
private SalonCasa salonCasa;
private CocinaCasa cocinaCasa;
/**
* Constructor for objects of class Casa
*/
public Casa()
{
// initialise instance variables
superficie = 0.0;
direccion = " calle _ carrera _";
salonCasa = new SalonCasa ();
cocinaCasa = new CocinaCasa ();
}
public void setSuperficie (double valorSuperficie){
superficie = valorSuperficie;
}
public void setDireccion (String valorDireccion){
direccion = valorDireccion;
}
public void setSalonCasa (SalonCasa valorsalonCasa){
this.salonCasa = valorsalonCasa;
}
public void setCocinaCasa (CocinaCasa valorcocinaCasa){
this.cocinaCasa = valorcocinaCasa;
}
public double getSuperficie (){return superficie;}
public String getDireccion () {return direccion;}
public SalonCasa getsalonCasa () { return salonCasa;}
public CocinaCasa getcocinacasa (){return cocinaCasa;}
}
para SalonCasa
/**
* Write a description of class SalonCasa here.
*
* @author (jaivcaba)
* @version (19/10/14)
*/
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()
{
// initialise instance variables
numeroDeTelevisores = 0;
tipoSalon = "Desconocido";
}
public void setNumeroDeTelevisores (int valorNumeroDeTelevisores){
numeroDeTelevisores = valorNumeroDeTelevisores;
}
public void setTipoSalon (String valorTipoSalon){
tipoSalon = valorTipoSalon;
}
public int getNumeroDeTelevisores (){return numeroDeTelevisores;}
public String getTipoSalon (){return tipoSalon;}
}
He entendido tus recomendaciones... muchas gracias por responder.
Me pregunto porque en los métodos de los atributos cocinaCasa y salonCasa se debe escribir This.¿ podrian explicarme un poco mas acerca de esta orden?
gracias.
-
Hola jaivcaba
Ahora tu ejercicio de clases que utilizan objetos está perfecto. OK
En cuanto al uso de la palabra clave 'this', me he avanzado a la entrega CU00652B donde se explica su uso.
Un caso particular del uso de this es el que te puse en el código
public void setSalonCasa (SalonCasa salonCasa){
this.salonCasa = salonCasa;
}
Como ves, el atributo de la clase se llama salonCasa, y el parámetro que recibe el método se llama igual. Pues bien, para que el compilador sepa quien es quien, le decimos.
El atributo de esta clase salonCasa (this.salonCasa) es igual al parámetro recibido que se llama también (salonCasa)
Este mismo método se puede usar sin 'this' haciendo los siguientes cambios
public void setSalonCasa (SalonCasa valorSalonCasa){
salonCasa = valorSalonCasa;
}
Donde al no haber coincidencia de nombres no es necesario el uso de 'this'.
Aunque la siguiente signatura no solo es válida sino que se explica ella sola identificando quién es el atributo de la clase.
public void setSalonCasa (SalonCasa valorSalonCasa){
this.salonCasa = valorSalonCasa;
}
Hay programadores que evitan si pueden el uso de this, y otros lo utilizan a la mínima oportunidad. Eso depende de cada cual
Saludos
-
muchas gracias!! me ha quedado claro.