Autor Tema: Práctica concepto de diagrama de clases Java (CU00641B)  (Leído 3479 veces)

Beginer

  • Sin experiencia
  • *
  • Mensajes: 9
    • Ver Perfil
    • CENTRAL COOPERATIVA NACIONAL LTDA. "CREDICOOP"
Práctica concepto de diagrama de clases Java (CU00641B)
« en: 20 de Octubre 2014, 17:11 »
Buenos días, estuve un tanto ausente del seguimiento de mi curso pero luego de retomar me constó un poco y con la ayuda de los demás foros quiero presentar mi código para poner a consideración de los moderadores. muchas gracias.
CLASE SalonCasa
Código: [Seleccionar]
public class SalonCasa {
private int numeroDeTelevisores;
private String tipoSalon;

public SalonCasa (){
numeroDeTelevisores = 0;
tipoSalon = "Desconocido";
}

public void setNumeroDeTelevisores (int cantTv){
    this.numeroDeTelevisores = cantTv;
}

public void setTipoSalon(String tipoSalon) {
this.tipoSalon = tipoSalon;
}
public int getNumeroDeTelevisores() {
return numeroDeTelevisores;
}
public String getTipoSalon() {
return tipoSalon;
}
}
CLASE CocinaCasa
Código: [Seleccionar]
public class CocinaCasa{
private boolean esIndependiente;
private int numeroDeFuegos;

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

public void setEsIndependiente (boolean esIndependiente){
    this.esIndependiente = esIndependiente;
}
public void setNumeroDeFuegos (int nroDeFuegos){
numeroDeFuegos = nroDeFuegos;
}

public boolean isEsIndependiente (){return esIndependiente;}
public int getNumeroDeFuegos (){return numeroDeFuegos;}
}
CLASE Casa
Código: [Seleccionar]
public class Casa
{
    private double superficie;
    private String direccion;
    private SalonCasa salon;
    private CocinaCasa cocina;

    public Casa () {
        superficie = 0;
        direccion = "";
        salon = new SalonCasa ();
        cocina = new CocinaCasa ();
    }

    // SETTERS
    public void setSuperficie (double superficie){
        this.superficie = superficie;
    }

    public void setDireccion (String direccion){
        this.direccion = direccion;
    }

    public void setSalon (SalonCasa salon){
        salon = new SalonCasa ();
        salon.setNumeroDeTelevisores (salon.getNumeroDeTelevisores());
        salon.setTipoSalon (salon.getTipoSalon());
    }

    public void setCocina (CocinaCasa cocina){
        this.cocina = new CocinaCasa();
        this.cocina.setEsIndependiente (cocina.isEsIndependiente());
        this.cocina.setNumeroDeFuegos(cocina.getNumeroDeFuegos());
    }

    // GETTERS
    public double getSuperficie (){return superficie;}

    public String getDireccion () {return direccion;}

    public SalonCasa getSalon (){return salon;}

    public CocinaCasa getCocina (){return cocina;}

    public String getDatosDeCasa (){
        int nroDeTv = salon.getNumeroDeTelevisores();
        String tipoSalon = salon.getTipoSalon();
        boolean esIndependiente = cocina.isEsIndependiente();
        String ind;
        if (esIndependiente == false) { ind = "no independiente "; } else { ind = "independiente ";}
        int nroFuegos = cocina.getNumeroDeFuegos();
       
        String DatosCasa = "La casa tiene como dirección, " + direccion + " con una superficie de " + superficie +
        " con " + nroDeTv + " cantidad de televisores y de tipo salon " + tipoSalon + " con una cocina " + ind +
        " con " + nroFuegos + " numeros de fuegos. " ;
        System.out.println (DatosCasa);
        return DatosCasa;
    }
}

Saludos cordiales..
« Última modificación: 21 de Octubre 2014, 23:18 por Alex Rodríguez »

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Re:PRACTICA CONCEPTO DE DIAGRAMA DE CLASES. (CU00641B)
« Respuesta #1 en: 20 de Octubre 2014, 19:31 »
Hola Beginer
Tu ejercicio está bien en parte

No se si has practicado con estas clases lo que se indica en esta imagen de la entrega actual
http://images4.hiboox.com/images/0512/972378d483812d5bb905251af93cccc0.jpg
Se trata como ves de modificar los atributos de las clases creadas usando sus métodos 'set'
Y cuando en la clase Casa invocas el método
public void setSalon (SalonCasa salon), basta con indicarle el objeto de tipo SalonCasa creado o simplemente hacer clic en él para que se escriba automáticamente

Tu clase SalonCasa, está bien. El uso de la palabra reservada 'this' indica al compilador que nos referimos a los atributos propios de la clase. Perfecto

En la clase CocinaCasa creas el método
public boolean isEsIndependiente ()
Que creo debería ser
public boolean getEsIndependiente ()
Ya sabemos que los métodos que devuelven valores de los atributos de la clase, por convención se reconocen porque empiezan por la partícula 'get'
Si no utilizas esta convención te será dificil recordar que nombre le pusiste al getter del atributo 'esIndependiente'

Finalmente en la clase Casa tienes los setters y getters de los atributos primitivos perfectos, también están bien los getters
public SalonCasa getSalon (){return salon;}
public CocinaCasa getCocina (){return cocina;}


En cambio el setter

    public void setSalon (SalonCasa salon){
        salon = new SalonCasa ();
        salon.setNumeroDeTelevisores (salon.getNumeroDeTelevisores());
        salon.setTipoSalon (salon.getTipoSalon());
    }

en la línea
        salon = new SalonCasa ();
invalidas el salon que recibes como parámetro al crear un salon con los valores por defecto
Si eliminas esta línea, tu setter queda perfecto
Igual sucede con el setter
    public void setCocina (CocinaCasa cocina)

Aunque estos métodos se pueden componer también de la siguiente forma

public void setSalon (SalonCasa salon){
        this.salon = salon;     
    }

    public void setCocina (CocinaCasa cocina){
        this.cocina = cocina;
    }

Como ves son unos métodos más compactos. En una sola línea de código traspasas todos los atributos del objeto SalonCasa, tanto si tiene 2 como es el caso como si tiene 10.
Estos nuevos enfoques tienes que tenerlos en cuenta a partir de ahora, en que además de trabajar con atributos de tipo primitivos (int, float,etc..) estamos trabajando con atributos de tipos creados por nosotros (SalonCasa, CocinaCasa)

Saludos

Beginer

  • Sin experiencia
  • *
  • Mensajes: 9
    • Ver Perfil
    • CENTRAL COOPERATIVA NACIONAL LTDA. "CREDICOOP"
Re:PRACTICA CONCEPTO DE DIAGRAMA DE CLASES. (CU00641B)
« Respuesta #2 en: 20 de Octubre 2014, 20:27 »
Muchas gracias Tony.. muy agradecido por tus observaciones.
Saludos cordiales..

 

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