Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: ronal.d87 en 09 de Junio 2015, 04:54

Título: Ejercicio resuelto Java con clases que se componen de otras clases CU00641B
Publicado por: ronal.d87 en 09 de Junio 2015, 04:54
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");
       
    }
}

Título: Re:CU00641B
Publicado por: RaGa 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.
Título: Correcion al ejercicio CU00641B
Publicado por: ronal.d87 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");
       
    }
}

Título: Re:CU00641B
Publicado por: RaGa 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!
Título: Re:Ejercicio resuelto Java con clases que se componen de otras clases CU00641B
Publicado por: ronal.d87 en 12 de Junio 2015, 19:26
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;
    }
Título: Re:Ejercicio resuelto Java con clases que se componen de otras clases CU00641B
Publicado por: RaGa en 12 de Junio 2015, 21:44
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!