Autor Tema: Meter objetos dentro de otros objetos con Java Ejercicio CU00641B del curso  (Leído 3441 veces)

5378453

  • Principiante
  • **
  • Mensajes: 56
    • Ver Perfil
    • Mugiwara no Fansub
Lo de de las mayusculas no lo arreglé en este ejercicio porque cuando leí la respuesta anterior ya estaba terminando el codigo

Salon:
Código: [Seleccionar]
public class SalonCasa
{
   
    private int numeroDeTelevisores;
    private String tipoSalon;
   
    public SalonCasa(){
       numeroDeTelevisores = 0;
       tipoSalon = "desconocido";
    }
   
    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 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 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, 12:55 por Alex Rodríguez »

RaGa

  • Moderador Global
  • Intermedio
  • *******
  • APR2.COM
  • Mensajes: 234
    • Ver Perfil
Re:Concepto de diagrama de clases (CU00641B)
« Respuesta #1 en: 12 de Mayo 2015, 03:33 »
Comenzaré sugiriéndote que vayas subiendo tus ejercicios ni bien los vayas terminando. De esta forma aqui en el foro te iremos guiando al señalárte las cosas que están bien, te haremos observaciones o sugerencias para ir mejorando, o correcciones si fueran necesarias. De esta manera podrás ir incorporando paso a paso, ejercicio a ejercicio, lo que vas aprendido de los ejercicios previos.
Recuerda que aprender a programar es un proceso continuo donde cada cosa que vamos aprendiendo se irá incorporando a lo sucesivo, y que es necesaria una maduración progresiva.

La sugerencia en cuanto a la convención a seguir en la elección de nombres de variables y  métodos ya te la había hecho en los dos ejercicios anteriores, ténlo en cuenta para los próximos ejercicios.

Otra cosa importante a tener en cuenta y pensar, es que los nombres que elegimos para nuestras variables deben estar estréchamente relacionadas a lo que representen, y que el nombre de los métodos deben estar estréchamente relacionados con lo que realicen. Es en este sentido que te recomendaría que:
Si en la clase Salon, tienes dos campos que se llaman:
numeroDeTelevisores y tipoSalon, entonces los métodos set y get deberían llamarse:

setNumeroDeTelevisores (porque lo que vas a setear es el número de televisores)
setTipoSalon (porque lo que vas a setear es el tipo de salón)

getNumeroDeTelevisores (porque lo que vas a devolver es el número de televisores)
getTipoSalon (porque lo que vas a devolver es el tipo de salón)

Recordemos que nuestro código siempre debe ser lo más claro posible teniendo en cuenta que el mantenimiento del mismo tal vez lo realizaremos dentro de mucho tiempo (y quizás ya no tengamos tan frescas las cosas como hoy), o que quizás el mantenimiento lo realice otra persona que debe entender el código con la mayor claridad posible.

Hecha estas observaciones de nomenclatura (y sus implicancias) en la clase Salon, debo decirte que a la clase la veo bien: declaras dos campos de instancia, implementas el Constructor donde se inicializan los campos a sus valores por defecto, e implementas los métodos set y get de los dos campos.

Con respecto a la clase Cocina, he de decirte lo mismo en cuanto a la elección de los nombres de los métodos. Deberían renombraerse a:

setEsIndependiente
setNumeroDeFuegos

getEsIndependiente
getNumeroDeFuegos

por lo demás está muy bien.


Revisemos la clase Casa.
En esta clase está muy bien la declaración de los 4 campos.
El Constructor está muy bien.
Los métodos set y get de los campos superfice y direccion están muy bien.

Los métodos setIndependiente, setFuego, setNumero, setSalon no los veo bien ya que manipulan campos que corresponden a otras clases, no son métodos que debieran estar en la clase Casa.

Recordemos cuáles eran los campos que declaraste en la clase Casa:
    double superficie;
    String direccion;
    SalonCasa salonCasa;
    CocinaCasa cocina;

Pues entonces la clase Casa solo debería hacerse cargo y manipular estos 4 campos.
El campo salonCasa es un campo de la clase Casa, no así el campo numeroDeFuegos que es un campo de la clase Cocina.

Si consideramos la filosofía de programación orientada a objetos (POO), entonces así como implementamos métodos set y get para los campos superficie y direccion, pues tendremos que implementar también métodos set y get para el campo salonCasa (tipo SalonCasa), y para el campo cocina (tipo CocinaCasa). Por ejemplo:

Código: [Seleccionar]
public void setSalonCasa (SalonCasa objetoSalonCasa){
salonCasa = objetoSalonCasa;
}

public SalonCasa getSalonCasa(){
return salonCasa;
}

y lo mismo para el campo cocina. Sé que sabrás cómo implementar sus métodos set y get.

Por último, al método getDatosCasa() lo veo bien. Esta muy bien pensado a la hora de presentar un informe de los campos de la clase Casa.

 

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