Autor Tema: Ejercicio resuelto Java con clases que se componen de otras clases CU00641B  (Leído 5378 veces)

ronal.d87

  • Principiante
  • **
  • Mensajes: 72
    • Ver Perfil
Hola a todos, aqui he realizado el desarrollo del ejercicio propuesto en nuestra actividad

Citar
Define tres clases: Casa, SalonCasa y CocinaCasa. La clase SalonCasa debe tener como atributos numeroDeTelevisores (int) y tipoSalon (String) y disponer de un constructor que los inicialice a 0 y “desconocido”. La clase CocinaCasa debe tener como atributos esIndependiente (boolean) y numeroDeFuegos (int) y un constructor que los inicialice a false y 0. La clase Casa tendrá los siguientes atributos de clase: superficie (double), direccion (String), salonCasa (tipo SalonCasa) y cocina (tipo CocinaCasa). Define un constructor para la clase Casa que establezca a unos valores de defecto los atributos simples y que cree nuevos objetos si se trata de atributos objeto. Compila el código para comprobar que no presenta errores, crea un objeto de tipo Casa. Comprueba que se inicializan correctamente consultando el valor de sus atributos después de haber creado los objetos.

Clase Casa

Código: [Seleccionar]
package ejemplo;

public class Casa {
   
    double superficie;
    String direccion;
    SalonCasa salonCasa;
    CocinaCasa cocinaCasa;
   
    public Casa(){
        superficie =0.0;
        direccion = "Desconocido";
        salonCasa = new SalonCasa();
        cocinaCasa = 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;
    }
    //obtener datos del salon de la casa
    public int getTelevisoresSalonCasa(){
        int televisores = salonCasa.getNumeroDeTelevisores();
        return televisores;
    }
   
    public String getTipoSalonCasa(){
        String salon = salonCasa.getTipoSalon();
        return salon;
    }
    //obtener datos de la cocina   
    public int getNumeroFuegos(){
        int fuegos = cocinaCasa.getNumeroDeFuegos();
        return fuegos;
    }
   
    public boolean getEsIndependiente(){
         String independiente = "";
        boolean esIndependiente = cocinaCasa.getEsIndependiente();
        if(esIndependiente == true){
            independiente="Independiente";
            return esIndependiente;
        }else{
            independiente = "No es Independiente";
            return esIndependiente;
        }
       
    }
}



Clase salon SalonCasa


Código: [Seleccionar]
package ejemplo;

public class SalonCasa {
    int numeroDeTelevisores;
    String tipoSalon;
   
    public SalonCasa(){
        numeroDeTelevisores = 0;
        tipoSalon = "desconocido";
    }
   
    public void setNumeroDeTelevisores(int cantidadTelevisores){
        numeroDeTelevisores = cantidadTelevisores;
    }
   
    public void setTipoSalon(String valorTipoSalon){
        tipoSalon = valorTipoSalon;
    }
   
    public int getNumeroDeTelevisores(){
        return numeroDeTelevisores;
    }
   
    public String getTipoSalon(){
        return tipoSalon;
    }
}



clase CocinaCasa

Código: [Seleccionar]
package ejemplo;

public class CocinaCasa {
    boolean esIndependiente;
    int numeroDeFuegos;
   
   
    public CocinaCasa(){
        numeroDeFuegos = 0;
        esIndependiente = false;
    }
   
    public void setNumeroDeFuegos(int cantidadDeFuegos){
        numeroDeFuegos = cantidadDeFuegos;
    }
   
    public void setEsIndependiente(boolean valorEsIndependiente){
        esIndependiente = valorEsIndependiente;
    }
   
    public int getNumeroDeFuegos(){
        return numeroDeFuegos;
    }
   
    public boolean getEsIndependiente(){
       
        return esIndependiente;
    }
   
}



Clase con main

Código: [Seleccionar]
package ejemplo;

public class TestCasa {
   
    public static void main (String [] args){
        Casa casa;
        casa = new Casa();
       
        System.out.println("la direccion de la casa es: "+casa.getDireccion()
                +" cuenta con una superficie de: "+casa.getSuperficie()
                +", la casa tiene un tipo de salon "+casa.getTipoSalonCasa()
        +" con "+casa.getTelevisoresSalonCasa()+" Televisores"+". Su cocina es "
                +casa.getEsIndependiente()+" con "
                + casa.getNumeroFuegos()+" fuegos");
       
    }
}

« Última modificación: 10 de Junio 2015, 08:47 por Alex Rodríguez »
Ronald Mosquera Mancilla

RaGa

  • Moderador Global
  • Intermedio
  • *******
  • APR2.COM
  • Mensajes: 234
    • Ver Perfil
Re:CU00641B
« Respuesta #1 en: 09 de Junio 2015, 22:59 »
Hola Ronal:

He estado leyendo tu ejercicio y a mi entender tiene cosas que están muy bien y cosas que debemos revisar.

Las clases CocinaCasa y SalonCasa están perfectas.

Ahora bien, respecto a la clase Casa están muy bien declarados los atributos y también están muy bien los métodos setSuperficie, setDireccion, getDireccion, y getSuperficie.
Los demás métodos que incluíste en esta clase no deberían existir en esta clase ya que son métodos que correspondan a otras clases (corresponden a las clases SalonCasa y CocinaCasa).

Fíjate lo siguiente: la clase Casa tiene 4 atributos a saber:

Código: [Seleccionar]
    double superficie;
    String direccion;
    SalonCasa salonCasa;
    CocinaCasa cocinaCasa;

Muy bien, por lo tanto la clase Casa deberá tener métodos set y get para esos 4 atributos (no así para los atributos de los atributos). Entonces están perfectos los métodos set y get de los atributos direccion y superficie. Y los métodos set y get de los atributos objetos deberían ser:

Código: [Seleccionar]
   public void setSalonCasa (SalonCasa objetoSalon){
   salonCasa = objetoSalon;}
   public void setCocinaCasa (CocinaCasa objetoCocina)
   {cocinaCasa = objetoCocina;}
   
   public SalonCasa getSalonCasa(){return salonCasa;}
   public CocinaCasa getCocinaCasa(){return cocinaCasa;}

Analízalo y cualquier duda estamos aquí para ayudarte. Saludos.

ronal.d87

  • Principiante
  • **
  • Mensajes: 72
    • Ver Perfil
Correcion al ejercicio CU00641B
« Respuesta #2 en: 10 de Junio 2015, 00:06 »
hola he aqui las correciones..

clase casa
Código: [Seleccionar]
package ejemplo;

public class Casa {
   
    double superficie;
    String direccion;
    SalonCasa salonCasa;
    CocinaCasa cocinaCasa;
 //Constructor  1 
    public Casa(){
        superficie =0.0;
        direccion = "Desconocido";
        salonCasa = new SalonCasa();
        cocinaCasa = new CocinaCasa();
    }
   
    //Constructor 2
    public Casa(double valorSuperficie, String valorDireccion,
            SalonCasa valorSalon, CocinaCasa valorCocina){
        superficie = valorSuperficie;
        direccion = valorDireccion;
        salonCasa = valorSalon;
        cocinaCasa = valorCocina;
    }
   
    public void setSuperficie(double valorSuperficie){
        superficie = valorSuperficie;
    }
   
    public void setDireccion(String valorDireccion){
        direccion = valorDireccion;
    }
   
    public void setSalonCasa(SalonCasa valorSalon){
        salonCasa = valorSalon;
    }
   
    public void setCocinaCasa (CocinaCasa valorCocina){
        cocinaCasa=valorCocina;
    }
   
    public double getSuperficie(){
        return superficie;
    }
   
    public String getDireccion (){
        return direccion;
    }
    //obtener datos del salon de la casa
    public SalonCasa getSalonCasa(){       
        return salonCasa;
    }
   
    //obtener datos de la cocina   
    public CocinaCasa getCocinaCasa(){       
        return cocinaCasa;
    }
}


clase salon Casa
Código: [Seleccionar]
package ejemplo;

public class SalonCasa {
    int numeroDeTelevisores;
    String tipoSalon;
   
    public SalonCasa(){
        numeroDeTelevisores = 0;
        tipoSalon = "desconocido";
    }
   
    public void setNumeroDeTelevisores(int cantidadTelevisores){
        numeroDeTelevisores = cantidadTelevisores;
    }
   
    public void setTipoSalon(String valorTipoSalon){
        tipoSalon = valorTipoSalon;
    }
   
    public int getNumeroDeTelevisores(){
        return numeroDeTelevisores;
    }
   
    public String getTipoSalon(){
        return tipoSalon;
    }
}


clase cocina casa

Código: [Seleccionar]
package ejemplo;

public class CocinaCasa {
    boolean esIndependiente;
    int numeroDeFuegos;
   
   
    public CocinaCasa(){
        numeroDeFuegos = 0;
        esIndependiente = false;
    }
   
    public void setNumeroDeFuegos(int cantidadDeFuegos){
        numeroDeFuegos = cantidadDeFuegos;
    }
   
    public void setEsIndependiente(boolean valorEsIndependiente){
        esIndependiente = valorEsIndependiente;
    }
   
    public int getNumeroDeFuegos(){
        return numeroDeFuegos;
    }
   
       
    public boolean getEsIndependiente(){
         String independiente = "";
         if(esIndependiente == true){
            independiente="Independiente";
            return esIndependiente;
         }else{
            independiente = "No es Independiente";
            return esIndependiente;
        }
       
    }
   
}


clase test casa

Código: [Seleccionar]
package ejemplo;

public class TestCasa {
   
    public static void main (String [] args){
        Casa casa, casa1;
        casa = new Casa();
        casa1 = new Casa();
       
       /* System.out.println("la direccion de la casa es: "+casa.getDireccion()
                +" cuenta con una superficie de: "+casa.getSuperficie()
                +", la casa tiene un tipo de salon "+casa.getTipoSalonCasa()
        +" con "+casa.getTelevisoresSalonCasa()+" Televisores"+". Su cocina es "
                +casa.getEsIndependiente()+" con "
                + casa.getNumeroFuegos()+" fuegos");
        */
        System.out.println("la direccion de la casa es: "+casa1.getDireccion()
                +" cuenta con una superficie de: "+casa1.getSuperficie()
                +", la casa tiene un tipo de salon "+casa1.getSalonCasa().getTipoSalon()
        +" con "+casa1.getSalonCasa().getNumeroDeTelevisores()+" Televisores"+". Su cocina es "
                +casa1.getCocinaCasa().getEsIndependiente()+" con "
                + casa1.getCocinaCasa().getNumeroDeFuegos()+" fuegos");
       
    }
}

Ronald Mosquera Mancilla

RaGa

  • Moderador Global
  • Intermedio
  • *******
  • APR2.COM
  • Mensajes: 234
    • Ver Perfil
Re:CU00641B
« Respuesta #3 en: 10 de Junio 2015, 02:22 »
Hola Ronal:

Excelente, ahora veo muy bien el ejercicio!
Aprovechando que lo resolviste correctamente, te planteo un "ejercicio dentro del ejercicio".
Supongamos que hago un cambio en la clase Casa que codificaste. Supongamos que ese cambio consiste en cambiar el Constructor 2 de tal manera que en vez de ser:

Código: [Seleccionar]
//Constructor 2
    public Casa(double valorSuperficie, String valorDireccion,
            SalonCasa valorSalon, CocinaCasa valorCocina){
        superficie = valorSuperficie;
        direccion = valorDireccion;
        salonCasa = valorSalon;
        cocinaCasa = valorCocina;
    }

esté codificado como:

Código: [Seleccionar]
//Constructor 2
    public Casa(double valorSuperficie, String valorDireccion,
            SalonCasa valorSalon, CocinaCasa valorCocina){
        superficie=valorSuperficie;
        direccion=valorDireccion;
        salonCasa=new SalonCasa(valorSalon.getNumeroDeTelevisores(), valorSalon.getTipoSalon());
        cocinaCasa=new CocinaCasa(valorCocina.getEsIndependiente(), valorCocina.getNumeroDeFuegos());
    }

Pregunta: ¿cuál es la diferencia? ¿qué implicancias trae este cambio?

Saludos!

ronal.d87

  • Principiante
  • **
  • Mensajes: 72
    • Ver Perfil
hola como estas, perdon por la dilacion en la respuesta. en el caso que codifiquemos la clase casa de la manera.

Código: [Seleccionar]
public Casa(double valorSuperficie, String valorDireccion,
            SalonCasa valorSalon, CocinaCasa valorCocina){
         
        superficie=valorSuperficie;
        direccion=valorDireccion;       
        salonCasa = new SalonCasa(valorSalon.getNumeroDeTelevisores(), valorSalon.getTipoSalon());
        cocinaCasa = new CocinaCasa(valorCocina.getEsIndependiente(), valorCocina.getNumeroDeFuegos());
    }

la clase Casa genera dos errores ya que los los parametros con los que esta siendo creada las variables salonCasa y cocinaCasa en las clases SalonCasa y CocinaCasa sus respectivos constructores son generales (no estan recibiendo parametros)
Constructor SalonCasa
Código: [Seleccionar]
public SalonCasa(){
        numeroDeTelevisores = 0;
        tipoSalon = "desconocido";
    }

Constructor CocinaCasa

Código: [Seleccionar]
public CocinaCasa(){
        numeroDeFuegos = 0;
        esIndependiente = false;
    }
Ronald Mosquera Mancilla

RaGa

  • Moderador Global
  • Intermedio
  • *******
  • APR2.COM
  • Mensajes: 234
    • Ver Perfil
Es correcto, es correcto. Me había olvidado que las clases SalonCasa y CocinaCasa no tenian un segundo Constructror donde se recibieran parámetros.
Al no tener esos Constructores (que reciban parámetros) ha quedado truco a lo que apuntaba la intención de lo que quería mostrarte jeje. Lo dejaremos para otro ejercicio donde podamos usarlo como ejemplo.
A seguir adelante!

 

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