Autor Tema: Ejercicio-CU00641B/Clases que usan objetos, relación de uso entre clases java.  (Leído 4663 veces)

KillerNemesis

  • Sin experiencia
  • *
  • Mensajes: 25
    • Ver Perfil
Que tal!!

Entrego mi ejercicio, seré sincero probe mi ejercicio pero aun no entiendo muy bien si lo que hace esta correcto. Por alguna razon quede bloqueado y no termino de entender la verdadera funcion de las clases que utilizan otras clases en este ejercicio. Si me pudieran decir si lo que hice esta bien ó si me hace falta alguna cosa, cualquier comentario que pueda retroalimentar mi ejercicio.

una duda que tengo es esta:

-
Citar
La clase Casa tendrá los siguientes atributos de clase: superficie (double), direccion (String), salonCasa (tipo SalonCasa) y cocina (tipo CocinaCasa).
Donde "salonCasa (tipo SalonCasa) y cocina (tipo CocinaCasa)... tienen los perentesis y al igual yo los agregue pero al momento que intentaba compilar me enviaba un error, se deben de poner los parentesis o solo era para diferenciar lo que se debia colocar...  me confundi un poco.

CASA
Código: [Seleccionar]
/*KillerNemesis - aprendeaprogramar.com - EjercicioCU00641B*/

//Crear una clase que Utilice otras clases

public class Casa{
   
   private double superficie;
   private String direccion;
   private SalonCasa salon;
   private CocinaCasa cocina;
   
    //CONSTRUCTOR
   
    public Casa (){
        superficie = 0.0;
        direccion = "desconocido";
        salon = new SalonCasa ();//Se inicializa nuevo salon
        cocina = new CocinaCasa ();//Se inicializa un nuevo salon
    } //Fin del Constructor
   
    //Metodos Setter`s de la clase Casa
   
    public void setSuperficie (double valueSuperficie){
        superficie = valueSuperficie;
    }
   
    public void setDireccion (String valueDireccion) {
        direccion = valueDireccion;
    }
   
    //Metodo Setter´s de otras clases
    public void setSalonCasa (SalonCasa valueSalon) {
        salon = new SalonCasa();
        salon.setNumeroDeTvs (valueSalon.getNumeroDeTvs());
        salon.setTipoSalon (valueSalon.getTipoSalon());
    }
   
    public void setCocinaCasa (CocinaCasa valueCocina) {
        cocina = new CocinaCasa();
        cocina.setEsIndependiente (valueCocina.getEsIndependiente());
        cocina.setNumeroDeFuegos (valueCocina.getNumeroDeFuegos());
    }  //Cierre del metodo Setter
   
       
    //Metodos Getter´s
   
    public double getSuperficie() {return superficie;}
    public String getDireccion() {return direccion;}
   
    //Metodo Getter de otras clases
    public SalonCasa getSalonCasa() {return salon;}
    public CocinaCasa getCocinaCasa() {return cocina;}
}//Fin de la Clase Casa

CocinaCasa
Código: [Seleccionar]
/* KillerNemesis - aprendeaprogramar.com - EjercicioCU00641B*/

//Aprenderemos a usar clases que utilizan objetos

public class CocinaCasa{   
   private boolean esIndependiente;
   private int numeroDeFuegos;

    //CONSTRUCTOR
   
    public CocinaCasa(){
       
        esIndependiente = false;
        numeroDeFuegos = 0;
    }
   
    //Metodos Setter´s
   
    public void setEsIndependiente (boolean valueEsIndependiente){
       
        esIndependiente = valueEsIndependiente;
    }
   
    public void setNumeroDeFuegos (int valueNumeroDeFuegos){
       
        numeroDeFuegos = valueNumeroDeFuegos;
    }
   
    //Metodos Getter´s
   
    public boolean getEsIndependiente() {return esIndependiente;}
   
   public int getNumeroDeFuegos() {return numeroDeFuegos;}
   
}//Final de la clase CocinaCasa

SalonCasa
Código: [Seleccionar]
/* KillerNemesis - aprendeaprogramar.com*/
 
 //Ejercicio Relacion de uso entre clases
 
 public class SalonCasa{
     private int numeroDeTvs;
     private String tipoSalon;
         
    //Constructor
    public SalonCasa(){
    numeroDeTvs = 0;
    tipoSalon = "desconocido";
}
    //Metodos Setter´s
   
    public void setNumeroDeTvs (int valueNumeroDeTvs){
       
        numeroDeTvs = valueNumeroDeTvs;
    }
   
    public void setTipoSalon (String valueTipoSalon){
       
        tipoSalon = valueTipoSalon;
    }
   
    //Metodos Getter´s
   
    public int getNumeroDeTvs() {return numeroDeTvs;}
   
    public String getTipoSalon() {return tipoSalon;}

}//Final de la clase SalonCasa



Agradezco sus comentarios

Saludos!!!
« Última modificación: 31 de Octubre 2014, 03:19 por Jorge lopez »

Fernando

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 11
    • Ver Perfil
Lo que te trata de explicar es que en el parentesis van los diferenters tipos de dato que son por ejemplo: un numero real de enteros seria: numero(int), que esta es un atributo de nombre"numero" que son de tipo enteros"int"
« Última modificación: 31 de Octubre 2014, 03:19 por Jorge lopez »

Jorge lopez

  • Sniper
  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 248
  • @SniperOfElite
    • Ver Perfil
Hola KillerNemesis!

Estoy verificando tu ejercicio, en breve te comento referente a posibles mejoras!
« Última modificación: 31 de Octubre 2014, 03:20 por Jorge lopez »
while(estesVivo)
{
  aprende();
  ayuda();
  enseña();
}
if(mueres){teRecordaran();}

Jorge lopez

  • Sniper
  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 248
  • @SniperOfElite
    • Ver Perfil
 A continuación comento tu ejercicio.

Clase SalonCasa: variables, valores iniciales, nombres de métodos, todo correcto.

Clase CocinaCasa: todo correcto.

Clase Casa: Aunque podría ser aceptable, algunos puntos referentes a los metodos setters y getters para los atributos tipo objeto merecen ser comentados.

El nombre del metodo setSalonCasa, no es apropiado. El nombre de un método set o get, ha de ser una combinacion del prefijo "set" o "get" + exactamente el nombre de la variable asociada a este, por ejemplo puesto que la variable relacionada a este método es la variable "salon" un nombre correcto seria setSalon, si el nombre de la variable fuera "salonCasa" pues el nombre que has utilizado seria perfecto. Lo mismo para los métodos getters de los campos (variables) tipo objeto.

Por otra parte, en los métodos setters de los campos tipo objeto es preferible eliminar la siguiente linea de codigo:
Código: [Seleccionar]
salon = new SalonCasa(); (Lo mismo para el metodo set de la variable "cocina") debido a que ya a la variable "salon" se le a asignado un objeto tipo SalonCasa en el constructor de la clase "Casa" y es sobre este objeto que realizaremos los cambios deseados.

Para realizar cambios en este objeto tenemos varias opciones, por ejemplo invocar los métodos setter de los objetos pasandoles como parámetros los valores deseados, o definir en la clase Casa los métodos setters de los campos tipo objeto para que reciban como parámetro un objeto del tipo necesario. Tu tienes una combinación de estas dos opciones donde por ejemplo invocas sobre el campo "salon" métodos (setNumeroDeTvs() y setTipoSalon()) propios de la clase SalonCasa, y usas los valores de un objeto introducido como parámetro del método setSalonCasa
(de la clase Casa) para pasarlos como valores de parámetros en los métodos setNumeroDeTvs() y setTipoSalon() invocados sobre la variable "salon".  Esto se podría decir que es complicado y confuso a la ves.

Algo mas sencillo y eficiente seria definir tu método setSalonCasa así:
Código: [Seleccionar]
public void setSalonCasa(SalonCasa valorSalonCasa)
    {
        Salon = valorSalonCasa;
    }
Donde si creas constructores que reciban parámetros en las clases SalonCasa y CocinaCasa, pues notarias el gran potencial de este tipo de signatura.

Digamos que en la clase SalonCasa tienes el siguiente constructor con parámetros:
Código: [Seleccionar]
//Constructor con parámetros
    public SalonCasa(int valorNumeroDeTvs, String valorTipoSalon){
      numeroDeTvs = valorNumeroDeTvs;
      tipoSalon = valorTipoSalon;
    }
Ahora digamos que creas un objeto de la clase Casa, y que invocas el método
setSalonCasa(SalonCasa valorSalonCasa); donde al invocarlo escribirás como valor de campo:
Código: [Seleccionar]
new SalonCasa(10, "Salon de video juegos"); ahora consulta el valor del campo "salon" y el contenido del objeto que contiene. notas algún cambio?

Sobre tu duda:
Citar
Donde "salonCasa (tipo SalonCasa) y cocina (tipo CocinaCasa)... tienen los perentesis y al igual yo los agregue pero al momento que intentaba compilar me enviaba un error, se deben de poner los paréntesis o solo era para diferenciar lo que se debia colocar...  me confundi un poco.
Es tal y como comenta Fernando, lo que esta dentro de los paréntesis es algo que se supone no debería de ser escrito porque deberias de deducirlo, (pero se escribe para mayor claridad) por eso se pone entre paréntesis, y hace referencia al tipo de la variable.

Sobre lo que comentas:
Citar
Entrego mi ejercicio, seré sincero probe mi ejercicio pero aun no entiendo muy bien si lo que hace esta correcto. Por alguna razon quede bloqueado y no termino de entender la verdadera funcion de las clases que utilizan otras clases en este ejercicio. Si me pudieran decir si lo que hice esta bien ó si me hace falta alguna cosa, cualquier comentario que pueda retroalimentar mi ejercicio.
Hay muchas cosas que las entenderás a su debido tiempo, cosas como por ejemplo: para que una clase utiliza a otra clase? yo podría ponerme a escribir y explicarte para que o porque unas clases utilizan a otras clases, pero algunas respuestas es mejor darlas en su momento oportuno para evitar confusiones, conforme avances en el curso tu mismo seras capas de responderte, por ahora lo importante es que asimiles lo que haces y que continúes avanzando.

Saludos!
« Última modificación: 31 de Octubre 2014, 03:20 por Jorge lopez »
while(estesVivo)
{
  aprende();
  ayuda();
  enseña();
}
if(mueres){teRecordaran();}

KillerNemesis

  • Sin experiencia
  • *
  • Mensajes: 25
    • Ver Perfil
Hola!!

Agradezco sus comentarios Fernando y Sniper Eso es lo que haré Sniper Modificare esas lineas de código y Seguiré avanzando con toda la actitud en el curso, y todo a su tiempo...! (Ya quiero "correr" en esto de la programación sin antes haber aprendido a "caminar") (Y). ;D


Saludos!!! 
« Última modificación: 31 de Octubre 2014, 04:01 por KillerNemesis »

 

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".