Autor Tema: Ejercicio (CU00641B) y (CU00642B) Programación Java desde cero  (Leído 5928 veces)

heseos

  • Sin experiencia
  • *
  • Mensajes: 15
    • Ver Perfil
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;
    }

}
« Última modificación: 28 de Abril 2014, 21:02 por heseos »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2662
    • Ver Perfil
Re:Ejercicio (CU00641B) y (CU00642B) Programación Java desde cero
« Respuesta #1 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 ;)


Jorge lopez

  • Sniper
  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 248
  • @SniperOfElite
    • Ver Perfil
Mis Ejercicios CU00641B y CU00642B
« Respuesta #2 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!
while(estesVivo)
{
  aprende();
  ayuda();
  enseña();
}
if(mueres){teRecordaran();}

Mastermind

  • Experto
  • *****
  • Mensajes: 536
    • Ver Perfil
Re:Ejercicio (CU00641B) y (CU00642B) Programación Java desde cero
« Respuesta #3 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

Jorge lopez

  • Sniper
  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 248
  • @SniperOfElite
    • Ver Perfil
Re:Ejercicio (CU00641B) y (CU00642B) Programación Java desde cero
« Respuesta #4 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!
while(estesVivo)
{
  aprende();
  ayuda();
  enseña();
}
if(mueres){teRecordaran();}

Mastermind

  • Experto
  • *****
  • Mensajes: 536
    • Ver Perfil
Re:Ejercicio (CU00641B) y (CU00642B) Programación Java desde cero
« Respuesta #5 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

 

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