Autor Tema: CU00641B - Entrega nº41 del curso "Aprender programación Java desde cero".  (Leído 5429 veces)

MrClassic

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 37
    • Ver Perfil
Cordial saludo,


Entrega nº41 del curso "Aprender programación Java desde cero".
 
agradezco de antemano cualquier detalle a tener en cuenta, en esta entrega.


Clase publica SalonCasa


Código: [Seleccionar]
public class SalonCasa{
    /*Properties*/
    private int numeroDeTelevisores;
    private String tipoSalon;

    /*Contructor*/
    public SalonCasa(){
        numeroDeTelevisores = 0;
        tipoSalon="Desconocido";
    }
    /*Setters*/
    public void setNumeroDeTelevisores(int valorNumeroDeTelevisores){
        numeroDeTelevisores = valorNumeroDeTelevisores;
    }
    public void setTipoSalon(String valorTipoSalon){
        tipoSalon = valorTipoSalon;
    }
    /*Getters*/
    public int getNumeroDeTelevisores(){
        return numeroDeTelevisores;
    }
    public String getTipoSalon(){
        return tipoSalon;
    }
}


Clase publica CocinaCasa


Código: [Seleccionar]
public class CocinaCasa{
    /*Properties*/
    private boolean esIndependiente;
    private int numeroDeFuegos;

    /*Constructor*/
    public CocinaCasa(){
        esIndependiente = false;
        numeroDeFuegos = 0;
    }
    /*Setters*/
    public void setEsIndependiente(boolean valorEsIndependiente){
        esIndependiente = valorEsIndependiente;
    }
    public void setNumeroDeFuegos(int valorNumeroDeFuegos){
        numeroDeFuegos = valorNumeroDeFuegos;
    }
    /*Getters*/
    public boolean getEsIndependiente(){
        return esIndependiente;
    }
    public int getNumeroDeFuegos(){
        return numeroDeFuegos;
    }
}


Clase publica Casa


Código: [Seleccionar]
public class Casa{
    /*Properties*/
    private double superficie;
    private String direccion;
    private SalonCasa salonCasa;
    private CocinaCasa cocina;

    /*Constructor*/
    public Casa(){
        superficie = 0;
        direccion ="Desconocida";
        salonCasa = new SalonCasa();
        cocina = new CocinaCasa();
       
    }
    /*Setters*/
    public void setSuperficie(double valorSuperficie){
        superficie = valorSuperficie;
    }
    public void setDireccion(String valorDireccion){
        direccion = valorDireccion;
    }
    public void setNumeroDeTelevisores(int valorNumeroDeTelevisores){
        salonCasa.setNumeroDeTelevisores(valorNumeroDeTelevisores);
    }
    public void setTipoSalon(String valorTipoSalon){
        salonCasa.setTipoSalon(valorTipoSalon);
    }
    public void setNumeroDeFuegos(int valorNumeroDeFuegos){
        cocina.setNumeroDeFuegos(valorNumeroDeFuegos);
    }
    public void setEsIndependiente(boolean valorEsIndependiente){
        cocina.setEsIndependiente(valorEsIndependiente);
    }
    /*Getters*/
    public String getInfoCasa(){
        /*traemos la información de SalonCasa*/
        int numeroDeTelevisores = salonCasa.getNumeroDeTelevisores();
        String tipoSalon = salonCasa.getTipoSalon();
        /*ahora traemos la informacion de CocinaCasa*/
        boolean esIndependiente = cocina.getEsIndependiente();
        int numeroDeFuegos = cocina.getNumeroDeFuegos();
        /*ahora imprimimos lo que se quiera mostrar*/
        String mostrarInfoCasa = "Desconocida";
        String mostrarTamañoCasa = "Desconocida";
        String salon = "";
        String independencia ="";
       
       /*SUPERFICIE*/
         if (superficie > 10 && superficie < 198){
            mostrarTamañoCasa="Es una casa pequeña";
        }
        else if(superficie >= 198 && superficie < 275){
            mostrarTamañoCasa=" es una casa mediana";
        }
        else if(superficie >= 275){
            mostrarTamañoCasa = "es una casa grande";
        }
        /*NUMERO DE TELEVISORES Y FUEGOS*/
        if(numeroDeTelevisores == 0 || numeroDeFuegos ==0){
            mostrarInfoCasa="Sin información y/o no tiene Televisores ni fuegos";
        }     
        if(numeroDeTelevisores ==1 && numeroDeFuegos == 1){
            mostrarInfoCasa="Con pocos Televisores y pocos fuegos";
        }
        if((numeroDeTelevisores >= 2 && numeroDeTelevisores < 4) || (numeroDeFuegos >= 2 && numeroDeFuegos <=4)){
            mostrarInfoCasa="Con numero moderado de Televisores y fuegos";
        }
        if((numeroDeTelevisores > 4) || (numeroDeFuegos > 4)){
            mostrarInfoCasa = "Con muchos Televisores y fuegos";
        }
        /*COCINA INDEPENDIENTE*/
        if(esIndependiente == true){
            independencia = "Idependiente";
        }
        else{
            independencia = "No independiente";
        }
       
       
        salon = salonCasa.getTipoSalon();
        String datosCasa ="INFORMACION DE CASA A LA VENTA" + "\n" + "---------------------------------" + "\n" + "Superficie: " + superficie + " mtrs^2 " + "\n" + "Ubicacion: " +
        direccion + "\n" + "Descripcion: " + mostrarTamañoCasa + "\n" + "Informacion adicional: " + mostrarInfoCasa + "\n" + "Tipo de salon: " + salon + "\n" + "Cocina: " + independencia;
            System.out.println(datosCasa);
            return datosCasa;
       
    }
}

Saludos,
« Última modificación: 27 de Enero 2015, 19:27 por MrClassic »
Quedo en espera de sus recomendaciones y/o correcciones.

Gracias.

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Hola MrClassic

Tu ejercicio está bastante bien. Las dos clases SalonCasa y CocinaCasa están perfectas. Bien.

En la clase Casa te has esmerado en crear el método getInfoCasa, pero he de decirte que está fuera de lugar, sobre todo porque en esta clase has incluido métodos para modificar atributos que no son de esta clase sino de las clases SalonCasa y CocinaCasa

Esta clase, la clase Casa tiene 4 atributos y como todas las clases ha de tener 4 getters y 4 setters (uno para cada atributo.)

Los setters setSuperficie y setDireccion están bien.
Ahora hacen falta sus getters, se que no tendrás problemas en crearlos.

Para los atributos salonCasa y cocina, los más fáciles son los getters, que serían así:
public SalonCasa getSalonCasa() { return salonCasa; }
y
public CocinaCasa getCocina() { return cocina; }

Y para los setters, mira voy a escribir en los dos párrafos siguientes los setters para el atributo superficie y el atributo salonCasa, para que veas que son muy parecidos.

public void setSuperficie ( double valorSuperficie) {
    superficie = valorSuperficie;
}

public void setSalonCasa ( SalonCasa valorSalon) {
    salonCasa = valorSalon;
}

Verás que en el método setSuperficie estamos trabajando con un atributo de tipo double.
Y que en el método setSalonCasa lo hacemos con un atributo de tipo SalonCasa.

Y es así de sencillo.
Ahora te propongo que reconpongas la clase Casa, que le quites los métodos que sobran y le pongas todos los que hacen falta.

Nota final.
Para probar estas clases sigue las indicaciones que se muestran en esta lección junto a la imagen mostrada.


Saludos

MrClassic

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 37
    • Ver Perfil
Cordial saludo,


Hola, toni_apr. de verdad que aveces uno complica las cosas, entiendo tus correcciones y apreciaciones. ahora pregunto, ¿no es necesario mostrar los datos de Casa, SalonCasa o SalonCocina?
ya que al llamar a cualquier metodo setter, de una instancia de objeto, ya sea SalonCocina o SalonCasa. es imposible  establecer valores. ya que no aparecen sus variables sino solo el metodo.
es decir ademas de establecer los getters y setters, para cada clase, y luego probarlo o inspeccionarlo, que mas debo hacer.

:o Estoy confundido en esa parte.

Gracias.
Quedo en espera de sus recomendaciones y/o correcciones.

Gracias.

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Hola MrClassic
 
Citar
ahora pregunto, ¿no es necesario mostrar los datos de Casa, SalonCasa o SalonCocina?

Respondiendo a tu pregunta. Necesario, no.
No se pidió en el enunciado del ejercicio, otra cosa es que tu decidas dar esa información (dar información siempre es un valor positivo).
Tal vez te pareció obligatorio dar esa información porque en el ejercicio de ejemplo de esta lección, en la clase TaxiCond hay un método que devuelve esa información.

Más adelante en lecciones posteriores verás que se usan métodos para mostrar información de los atributos de una clase.
Adelantándome, estoy hablando del método toString(). Pero eso como digo se verá en las lecciones siguientes.

En este nivel del curso, lo que debes asimilar, es que una clase además de atributos primitivos (int, String, etc.) puede tener atributos de tipo objeto (objeto puede ser SalonCasa o CocinaCasa)

Y para que esta información llegue a comprenderse, debes recomponer tu clase Casa con los 4 setters y 4 getters para los 4 atributos de la clase. Sigue las indicaciones que te hemos dado.

Una vez compiladas las clases (sin errores), haces lo siguiente:
Creas un objeto de las clases SalonCasa y CocinaCasa. Hecho esto, modificas sus atributos usando los métodos set de cada atributo.

Esto te lo pido para que el objeto o instancia de la clase no tenga los valores por defecto. Por ejemplo le pones como numeroDeTelevisores = 6 y como tipoSalon = "Nordico".

Cuando hayas modificado los atributos de esos objetos, creas un objeto de la clase Casa.
Ahora tendrás tres objetos nuevos de color rojo en la ventana de BlueJ.

En principio la clase Casa tendrá los valores por defecto, pero tu se los vas a cambiar usando sus métodos set.
Cuando llamas al método setSuperficie le pones un valor numérico, el que tu quieras. Lo mismo haces para el atributo direccion.

Para el atributo salonCasa no vas a responder con un int o un String, sino con un objeto de tipo SalonCasa. Tu vas a escribir el nombre que tiene el objeto de tipo SalonCasa que has creado, o también haces un clic sobre él con el ratón y BlueJ lo escribe por ti.

Lo mismo has de hacer con el atributo cocina.

En este momento ya puedes inspeccionar tu clase Casa escogiendo la opción en su menú contextual o también haciendo doble clic sobre el objeto Casa.

En la ventana subsiguiente se nos muestra el valor de los atributos primitivos, me refiero a la superficie y la dirección.
Y para los atributos de tipo objeto solo tenemos una flecha doblada que podemos inspeccionar también.

Si no ha habido omisiones en los pasos anteriores, en la última inspección se mostrarán los atributos que modificaste recientemente, por ejemplo 6 televisores y un salon Nordico.

Todo ello te confirmará que en la clase Casa además de introducir valores en los atributos primitivos también lo hemos hecho en los atributos de tipo SalonCasa, etc.

Espero que puedas seguir los pasos anteriores.
Si he omitido algún paso y no puedes llegar a la inspección correcta de los objetos creados o tienes alguna pregunta, no dudes en preguntar.

Saludos

MrClassic

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 37
    • Ver Perfil
Coridial Saludo,


Ok, Gracias por la informacion,

Entrega nº41 del curso "Aprender programación Java desde cero".

CocinaCasa1

Código: [Seleccionar]
public class CocinaCasa1{
    /*Properties*/
    private boolean esIndependiente;
    private int numeroDeFuegos;

    /*Constructor*/
    public CocinaCasa1(){
        esIndependiente = false;
        numeroDeFuegos = 0;
    }
    /*Setters*/
    public void setEsIndependiente(boolean valorEsIndependiente){
        esIndependiente = valorEsIndependiente;
    }
    public void setNumeroDeFuegos(int valorNumeroDeFuegos){
        numeroDeFuegos = valorNumeroDeFuegos;
    }
    /*Getters*/
    public boolean getEsIndependiente(){
        return esIndependiente;
    }
    public int getNumeroDeFuegos(){
        return numeroDeFuegos;
    }
}

SalonCasa1

Código: [Seleccionar]
public class SalonCasa1{
    /*Properties*/
    private int numeroDeTelevisores;
    private String tipoSalon;

    /*Contructor*/
    public SalonCasa1(){
        numeroDeTelevisores = 0;
        tipoSalon="Desconocido";
    }
   
    /*Setters*/
    public void setNumeroDeTelevisores(int valorNumeroDeTelevisores){
        numeroDeTelevisores = valorNumeroDeTelevisores;
    }
    public void setTipoSalon(String valorTipoSalon){
        tipoSalon = valorTipoSalon;
    }
    /*Getters*/
    public int getNumeroDeTelevisores(){
        return numeroDeTelevisores;
    }
    public String getTipoSalon(){
        return tipoSalon;
    }
}


Casa1

Código: [Seleccionar]
public class Casa1{
    /*Properties*/
    private double superficie;
    private String direccion;
    private SalonCasa1 salonCasa;
    private CocinaCasa1 cocina;

    /*Constructor*/
    public Casa1(){
        superficie = 0;
        direccion ="";
        salonCasa = new SalonCasa1();
        cocina = new CocinaCasa1();
       
    }
    /*Setters*/
    public void setSuperficie(double valorSuperficie){
        superficie = valorSuperficie;
    }
    public void setDireccion(String valorDireccion){
        direccion = valorDireccion;
    }
    public void setSalonCasa(SalonCasa1 valorSalon){
        salonCasa = valorSalon;
    }
    public void setCocina(CocinaCasa1 valorCocina){
        cocina = valorCocina;
    }
    /*Getters*/
   public double getSuperficie(){
        return superficie;
   }
    public String getValorDireccion(){
       return direccion;
   }
   public SalonCasa1 getSalonCasa(){
       return salonCasa;
   }
   public CocinaCasa1 getCocinaCasa(){
       return cocina;
   }
}

Quedo en espera de sus recomendaciones y/o correcciones.

Gracias.

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Hola MrClassic

Muy bien. Si has podido inspeccionar las clases en el IDE BlueJ, habrás visto que las cosas cuadran.

He de decirte que estas tres clases no forman un programa. Ahora solo han servido para afianzar conceptos respecto a la programación oreintada a objetos (POO)

Más adelante incluiremos en nuestros ejercicio una clase con un método principal (main) gracias al cual si podremos decir que tenemos un programa hecho en Java.

Saludos

MrClassic

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 37
    • Ver Perfil
Cordial Saludo,


Hola toni_apr, en efecto se puede como tu dices ver como cuadran las cosas.

lo mas interesante es ver como se realiza el tratamiento de una clase como  tipo de dato normal, ya habia leido sobre esta definición, pero en la practica se evidencia mas claramente el por que de dicha afirmación.


« Última modificación: 29 de Enero 2015, 01:04 por MrClassic »
Quedo en espera de sus recomendaciones y/o correcciones.

Gracias.

 

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