Autor Tema: Ejercicio curso Java CU00641B Relación de uso entre clases...  (Leído 4072 veces)

jaivcaba

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 42
    • Ver Perfil
PARA LA CLASE CASA
Código: [Seleccionar]
/**
 * 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

Código: [Seleccionar]
/**
 * 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

Código: [Seleccionar]
/**
 * 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;}
}


« Última modificación: 24 de Octubre 2014, 08:47 por Alex Rodríguez »

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Re:Ejercicio CU00641B Relación de uso entre clases...
« Respuesta #1 en: 21 de Octubre 2014, 20:37 »
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

jaivcaba

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 42
    • Ver Perfil
Re:Ejercicio CU00641B uso entre clases ... que indica this?
« Respuesta #2 en: 22 de Octubre 2014, 05:01 »
gracias por tomarte el tiempo y responder

aqui las correcciones.

para Casa

Código: [Seleccionar]
/**
 * 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

Código: [Seleccionar]
/**
 * 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.

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Re:Ejercicio CU00641B Relación de uso entre clases...
« Respuesta #3 en: 22 de Octubre 2014, 19:40 »
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

jaivcaba

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 42
    • Ver Perfil
Re:Ejercicio CU00641B Relación de uso entre clases...
« Respuesta #4 en: 23 de Octubre 2014, 00:13 »
muchas gracias!! me ha quedado claro.

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".