Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: heseos en 28 de Abril 2014, 20:09

Título: Ejercicio (CU00641B) y (CU00642B) Programación Java desde cero
Publicado por: heseos en 28 de Abril 2014, 20:09
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. CocinaCasa
Código: [Seleccionar]
/**
 *
 *
 */

public class CocinaCasa {
boolean esIndispensable;
int numeroDeFuegos;

    public CocinaCasa(){
    esIndispensable = false;
    numeroDeFuegos = 0;
    }

}

SalonCasa
Código: [Seleccionar]
/**
 * Write a description of class SalonCasa here.
 *
 * @author (your name)
 * @version (a version number or a date)
 */
public class SalonCasa{
int numeroDeTelevisores;
String tipoSalon;
   
    public SalonCasa (){
    numeroDeTelevisores = 0;
    tipoSalon = "Desconocido";
    }
       
   
}
 
Casa Aqui tengo la impresión de que algo me falta pero creo que no xD, Favor corregir e instruir si algo esta mal.
Código: [Seleccionar]
public class Casa{
double superficie;
String direccion;
private SalonCasa salonCasa;
private CocinaCasa cocina;

    public Casa (){
    superficie = 20.30;
    direccion ="Desconocida";
    salonCasa = new SalonCasa ();
    cocina = new CocinaCasa ();
    }
   
}

Para el (CU00642B) Favor corregir si hay algún error o falta algo

Código: [Seleccionar]
/**
 *
 *
 */

public class Casa{
double superficie;
String direccion;
private SalonCasa salonCasa;
private CocinaCasa cocina;

    public Casa (){
    superficie = 20.30;
    direccion ="Desconocida";
    salonCasa = new SalonCasa ();
    cocina = new CocinaCasa ();
    }
   
    public Casa (double valorSuperficie, String valorDireccion, SalonCasa valorSalonCasa, CocinaCasa valorCocina){
    superficie = valorSuperficie;
    direccion = valorDireccion;
    salonCasa = valorSalonCasa;
    cocina = valorCocina;
    }

}
Título: Re:Ejercicio (CU00641B) y (CU00642B) Programación Java desde cero
Publicado por: Ogramar en 29 de Abril 2014, 09:49
Hola, las cosas que tendrías que corregir en la CU00641B:

todos los atributos tienen que ser private, estás dejando algunos atributos sin declarar como private y eso no se considera correcto. Por ejemplo:

public class Casa{
double superficie;

Debería ser:

public class Casa{
private double superficie;

Esto te ocurre en varias clases y con varios atributos. De resto está correcto.

En la CU006432 mismo problema: dejas atributos sin indicar que son private. Por lo demás, está correcto ;)

Título: Mis Ejercicios CU00641B y CU00642B
Publicado por: Jorge lopez en 15 de Junio 2014, 03:27
Con el mismo código se pueden verificar ambos ejercicios...

public class CocinaCasa
Código: [Seleccionar]
public class CocinaCasa{
    int numeroDeFuegos;
    boolean esIndependiente;
   
    //Constructor general
    public CocinaCasa(){
      numeroDeFuegos = 0;
      esIndependiente = false;
    }
    //setters
    public void setNumeroDeFuegos(int valorNumeroDeFuegos){numeroDeFuegos = valorNumeroDeFuegos;}
    public void setEsIndependiente(boolean valorEsIndependiente){esIndependiente = valorEsIndependiente;}
}

public class SalonCasa
Código: [Seleccionar]
public class SalonCasa{
    int numeroDeTelevisores;
    String tipoSalon;
   
    //Constructor general
    public SalonCasa(){
      numeroDeTelevisores = 0;
      tipoSalon = "Desconocido";
    }
    //setters
    public void setNumeroDeTelevisores(int valorNumeroDeTelevisores){numeroDeTelevisores = valorNumeroDeTelevisores;}
    public void setTipoSalon(String valorTipoSalon){tipoSalon = valorTipoSalon;}
}

public class Casa
Código: [Seleccionar]
public class Casa{
    private double superficie;
    private String direccion;
    private SalonCasa miSalonCasa;
    private CocinaCasa laCocinaCasa;

    //Constructor general
    public Casa(){
        superficie = 0.0;
        direccion = "Desconocida";
        miSalonCasa = new SalonCasa();
        laCocinaCasa = new CocinaCasa();
    }

    public Casa(double valorSuperficie , String valorDireccion, SalonCasa objetoSalonCasa, CocinaCasa objetoCocinaCasa){
        superficie = valorSuperficie;
        direccion = valorDireccion;
        miSalonCasa = new SalonCasa();
        laCocinaCasa = new CocinaCasa();
    }
    //setters para atributos simples de la clase
    public void setSuperficie(double valorSuperficie){superficie = valorSuperficie;}

    public void setDireccion(String valorDireccion){direccion = valorDireccion;}
    //setters para atributos simples dentro de atributos objetos que a su ves son campos de un objeto tipo Casa
    public void setNumeroDeFuegos(int valorNumeroDeFuegos){laCocinaCasa.setNumeroDeFuegos (valorNumeroDeFuegos);}

    public void setEsIndependiente(boolean valorEsIndependiente){laCocinaCasa.setEsIndependiente(valorEsIndependiente);}

    public void setNumeroDeTelevisores(int valorNumeroDeTelevisores){miSalonCasa.setNumeroDeTelevisores(valorNumeroDeTelevisores);}

    public void setTipoSalon(String valorTipoSalon){miSalonCasa.setTipoSalon(valorTipoSalon);}
}

Tengo la duda de si tendría que declarar como private los atributos de las clases: CocinaCasa y SalonCasa al igual que en la clase Casa. Saludos!
Título: Re:Ejercicio (CU00641B) y (CU00642B) Programación Java desde cero
Publicado por: Mastermind en 15 de Junio 2014, 15:01
Los atributos de todas las clases deben ser private, excepto casos excepcionales. Es decir, en las clases CocinaCasa y SalonCasa debes poner los atributos como private.

Salud
Título: Re:Ejercicio (CU00641B) y (CU00642B) Programación Java desde cero
Publicado por: Jorge lopez en 15 de Junio 2014, 16:19
Los atributos de todas las clases deben ser private, excepto casos excepcionales. Es decir, en las clases CocinaCasa y SalonCasa debes poner los atributos como private.

Salud
En otras clases no e indicado la condición public o private para ningún atributo, quisiera saber si al no indicar ninguna de estas condiciones los atributos quedan por defecto private

y aparte de esto, como trabaja mi codigo? esta bien o mal? con relación a los ejercicios
Salu2!
Título: Re:Ejercicio (CU00641B) y (CU00642B) Programación Java desde cero
Publicado por: Mastermind en 15 de Junio 2014, 19:30
El código está bien aunque sería recomendable que mejores dos cosas:

- Especificar los atributos como private. Si los dejas sin especificar Java lo admite, pero no equivale ni a public ni a private, sino es un estado intermedio entre public y private. Aquí está explicado qué ocurre si se dejan sin indicar public ni private: http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=665:public-private-y-protected-javatipos-de-modificadores-de-acceso-visibilidad-en-clases-subclases-cu00693b&catid=68:curso-aprender-programacion-java-desde-cero&Itemid=188

- Añadir los métodos getters. Aunque el ejercicio no los pida es recomendable incluirlos.

Saludos