Autor Tema: Diferencia entre objeto y tipo primitivo en Java cuando son atributos (CU00642B)  (Leído 3333 veces)

5378453

  • Principiante
  • **
  • Mensajes: 56
    • Ver Perfil
    • Mugiwara no Fansub
EJERCICIO

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. Define otro constructor que reciba como parámetros la superficie, dirección y un objeto de tipo SalonCasa y otro de tipo CocinaCasa. Compila el código para comprobar que no presenta errores, y crea un objeto de tipo Casa usando el constructor que recibe parámetros. Ten en cuenta que antes tendrás que haber creado los objetos de tipo SalonCasa y CocinaCasa para poder pasárselos al constructor. Comprueba que el objeto Casa se inicializa correctamente consultando el valor de sus atributos después de haber creado el objeto. Para comprobar si es correcta tu solución puedes consultar en los foros aprenderaprogramar.com.

Salon
Código: [Seleccionar]
public class SalonCasa
{
   
    private int numeroDeTelevisores;
    private String tipoSalon;
   
    public SalonCasa(){
       numeroDeTelevisores = 0;
       tipoSalon = "desconocido";
    }
   
    public SalonCasa(int valornumero,String valorsalon){
        numeroDeTelevisores = valornumero;
        tipoSalon = valorsalon;
    }
   
    public void setNumero(int valornumero){
       
        numeroDeTelevisores = valornumero;
   
    }
   
    public void setSalon(String valorsalon){
        tipoSalon = valorsalon;
    }
   
    public int getNumero(){return numeroDeTelevisores;}
    public String getSalon(){return tipoSalon;}
}

Cocina
Código: [Seleccionar]
public class CocinaCasa
{
   
    private boolean esIndependiente;
    private int numeroDeFuegos;
   
    public CocinaCasa(){
        esIndependiente = false;
        numeroDeFuegos = 0;
    }
   
    public CocinaCasa(boolean indepen,int fuego){
        esIndependiente = indepen;
        numeroDeFuegos = fuego;
    }
   
    public void setIndependiente(boolean valorindependiente){
        esIndependiente = valorindependiente;
    }
   
    public void setFuego(int valorfuego){
        numeroDeFuegos = valorfuego;
    }
   
    public boolean getIndependiente(){return esIndependiente;}
    public int getFuego(){return numeroDeFuegos;}

}

Casa
Código: [Seleccionar]
public class Casa{
   
    private double superficie;
    private String direccion;
    private SalonCasa salonCasa;
    private CocinaCasa cocina;
   
    public Casa(){
        superficie = 0;
        direccion = "";
        salonCasa = new SalonCasa();
        cocina = new CocinaCasa();
    }
   
    public Casa(double valorsuperficie,String valordireccion,SalonCasa objetoCasa,CocinaCasa objetoCocina){
        superficie = valorsuperficie;
        direccion = valordireccion;
        salonCasa = new SalonCasa(objetoCasa.getNumero(), objetoCasa.getSalon());
        cocina = new CocinaCasa(objetoCocina.getIndependiente(), objetoCocina.getFuego());
    }
   
   public void setSuperficie(double valorsuperficie){
       superficie = valorsuperficie;
    }
   
   public void setDireccion(String valordireccion){
       direccion = valordireccion;
    }
   
    public void setIndependiente(boolean valorindependiente){cocina.setIndependiente(valorindependiente);}
    public void setFuego(int valorfuego){cocina.setFuego(valorfuego);}
    public void setNumero(int valornumero){salonCasa.setNumero(valornumero);}
    public void setSalon(String valorsalon){salonCasa.setSalon(valorsalon);}
   
    public String getDatosCasa(){
        String notele= "";
        String nofuego = "";
        int teles = salonCasa.getNumero();
        String salon = salonCasa.getSalon();
        boolean indepen = cocina.getIndependiente();
        int fuego = cocina.getFuego();
        if(teles==0){
            notele = "No hay Televisores en Esta Casa";
        }
        else{
            notele = teles + "";
        }
        if(fuego==0){
            nofuego = "No hay fuegos en esta casa";
        }
        else{
            nofuego = fuego + "";
        }
        String datosCasa = "la casa tiene las siguientes caracteristicas: 1-Televisores: " + notele + " ,2-Salon: " + salon + " ,3-Independiente: "
        + indepen + " ,4-Fuegos: " + nofuego + " ,5-direccion: " + direccion + " ,6-Superficie: " + superficie;
       
        System.out.println(datosCasa);
        return datosCasa;
    }
   
    public double getSuperficie(){return superficie;}
    public String getDireccion(){return direccion;}
   
}
« Última modificación: 12 de Mayo 2015, 13:05 por Alex Rodríguez »

RaGa

  • Moderador Global
  • Intermedio
  • *******
  • APR2.COM
  • Mensajes: 234
    • Ver Perfil
Re:Diferenciar objeto y tipo primitivo (CU00642B)
« Respuesta #1 en: 12 de Mayo 2015, 04:54 »
Hola:

Para arrancar voy a hacerte una recomendación que creo puede ser beneficiosa en este camino de aprendizaje:

Para tener en cuenta:
El foro es una buena herramienta de aprendizaje. Aqui siempre hay gente bien dispuesta para ayudarnos en todo lo que esté al alcance. En mi experiencia personal ha sido de muchísima ayuda en mi proceso de aprender java desde cero.
En mi humilde opinión creo que cada vez que publiques una solución a algún ejercicio debieras luego revisar las correcciones, las observaciones, y las cosas que se te señalaron como buenas, antes de seguir avanzando. Creo que es la forma más provechosa de utilizar la ayuda del foro: así iremos aprendiendo, repitiendo las cosas positivas que nos señalan, y no volver a tropezar con la misma piedra.  :)

En la resolución de este ejercicio creo que deberías tener en cuenta las observaciones y correcciones que se te hicieron en el ejercicio anterior (CU00641B).

Amén de todo lo que se dijo en esa oportunidad, en las clases SalonCasa y CocinaCasa la consigna del ejercicio solo pedía un Constructor que inicializara los campos a valor por defecto. Tu agregaste segundos constructores en cada una de ellas con parámetros de entrada. Por mi no lo veo mal, podríamos pensarlo como una posibilidad futura de la clase para ser instanciada con valores de inicilización (lo considero positivo).

En la clase Casa implementas muy bien los dos constructores que se piden. El segundo constructor está muy bien pensado e implementado para pasar como argumento los campos necesarios para utilizar esos segundos Constructores de las clases SalonCasa y CocinaCasa de los que hablábamos en el párrafo anterior. Das muestra de que tienes dominio y sabes lo que estás haciendo (muy bien!).
Los métodos setSuperficie, setDireccion, getSuperficie, getDireccion, y getDatosCasa están muy bien.

Los métodos:
    setIndependiente
    setFuego
    setNumero
    setSalon
no deberían estar en esta clase y en su lugar existir otros. Revisa lo que te escribí en:
https://www.aprenderaprogramar.com/foros/index.php?topic=2560.0

 

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