Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: rubens23 en 27 de Abril 2015, 19:36
-
CLASES QUE UTILIZAN OBJETOS. RELACIÓN DE USO ENTRE CLASES. DIAGRAMAS DE CLASES.
Código de la clase SalonCasa
public class SalonCasa{
private int numeroDeTelevisores;
private String tipoSalon;
//Constructor
public SalonCasa(){
numeroDeTelevisores = 0;
tipoSalon = "desconocido";
}
//metodo procedimiento
public void setNumeroDeTelevisores(int valorNumeroDeTelevisores){
numeroDeTelevisores = valorNumeroDeTelevisores;
}
public void setTipoSalon(String valorTipoSalon){
tipoSalon = valorTipoSalon;
}
//metodo función
public int getNumeroDeTelevisores(){return numeroDeTelevisores;}
public String getTipoSalon(){return tipoSalon;}
}
Código de la clase CocinaCasa
public class CocinaCasa{
private boolean esIndependiente;
private int numeroDeFuegos;
//Constructor
public CocinaCasa(){
esIndependiente = false;
numeroDeFuegos = 0;
}
//metodo procedimiento
public void setEsIndependiente(boolean valorEsIndependiente){
esIndependiente = valorEsIndependiente;
}
public void setNumeroDeFuegos(int valorNumeroDeFuegos){
numeroDeFuegos = valorNumeroDeFuegos;
}
//metodo funcion
public boolean getEsIndependiente(){return esIndependiente;}
public int getNumeroDeFuegos(){return numeroDeFuegos;}
}
Código de la clase Casa
public class Casa{
private double superficie;
private String direccion;
private SalonCasa salonCasa;
private CocinaCasa cocina;
//constructor
public Casa (){
salonCasa = new SalonCasa();
cocina = new CocinaCasa();
superficie = 0.0;
direccion = "desconocida";
}
//metodos procedimiento
public void setNumeroDeTelevisores(int valorNumeroDeTelevisores){
salonCasa.setNumeroDeTelevisores(valorNumeroDeTelevisores);
}
public void setTipoSalon(String valorTipoSalon){
salonCasa.setTipoSalon(valorTipoSalon);
}
public void setEsIndependiente(boolean valorEsIndependiente){
cocina.setEsIndependiente(valorEsIndependiente);
}
public void setNumeroDeFuegos(int valorNumeroDeFuegos){
cocina.setNumeroDeFuegos(valorNumeroDeFuegos);
}
public void setSuperficie(double valorSuperficie){
superficie = valorSuperficie;
}
public void setDirección(String valorDireccion){
direccion = valorDireccion;
}
//metodo funcion
public String getDatosCasa(){
int numeroDeTelevisores = salonCasa.getNumeroDeTelevisores();
String tipoSalon = salonCasa.getTipoSalon();
boolean esIndependiente = cocina.getEsIndependiente();
int numeroDeFuegos = cocina.getNumeroDeFuegos();
String datosCasa = "Los datos de la casa son: Televisiones "+ numeroDeTelevisores + ", tipo de salón " +
tipoSalon+ ", cocina independiente " + esIndependiente + ", numero de fuegos de la cocina " + numeroDeFuegos +
", superficie de la casa "+ superficie + " m2, dirección " + direccion;
System.out.println(datosCasa);
return datosCasa;
}
}
-
Buenas rubens23 en principio todo lo veo ok.
Incluso la modificación de atributos de los objetos SalonCasa y CocinaCasa.
Si me dejas decirte algo, en tu funcion getDatosCasa(),
int numeroDeTelevisores = salonCasa.getNumeroDeTelevisores();
String tipoSalon = salonCasa.getTipoSalon();
boolean esIndependiente = cocina.getEsIndependiente();
int numeroDeFuegos = cocina.getNumeroDeFuegos();
esto podrias ahorrartelo, de la siguiente forma:
public String getDatosCasa(){
String datosCasa = "Los datos de la casa son: Televisiones "+ salonCasa.getNumeroDeTelevisores() + ", tipo de salón " + salonCasa.getTipoSalon() + ", cocina independiente " + cocina.getEsIndependiente() + ", numero de fuegos de la cocina " + cocina.getNumeroDeFuegos() + ", superficie de la casa "+ superficie + " m2, dirección " + direccion;
return datosCasa;
}
-
Vale, lo tendré en cuenta para la próxima.
Muchas gracias
Un saludo.
-
Hola rubens23 :) Ninguna observación sobre las clases SalonCasa y CocinaCasa. En cambio para la clase casa además de lo indicado por Lorenzo31, indicarte varias cosas erróneas:
Los métodos setTipoSalon(String valorTipoSalon), setEsIndependiente(boolean valorEsIndependiente), setNumeroDeFuegos(int valorNumeroDeFuegos) no deben ir en esta clase.
Por otro lado, te faltan los getters y los setters para los atributos objeto SalonCasa y CocinaCasa.
Es importante entender cómo se trabaja con objetos y el por qué esos métodos no deben ir ahí. Esto lo encuentras explicado en https://www.aprenderaprogramar.com/foros/index.php?topic=1220.0
Saludos
-
Creo que ya está corregido, espero vuestra respuesta ;)
public class Casa{
private double superficie;
private String direccion;
private SalonCasa salonCasa;
private CocinaCasa cocina;
//constructor
public Casa (){
salonCasa = new SalonCasa();
cocina = new CocinaCasa();
superficie = 0.0;
direccion = "desconocida";
}
//metodos procedimiento
public void setSalonCasa(int valorNumeroDeTelevisores, String valorTipoSalon){
salonCasa.setNumeroDeTelevisores(valorNumeroDeTelevisores);
salonCasa.setTipoSalon(valorTipoSalon);
}
public void setCocinaCasa(boolean valorEsIndependiente, int valorNumeroDeFuegos){
cocina.setEsIndependiente(valorEsIndependiente);
cocina.setNumeroDeFuegos(valorNumeroDeFuegos);
}
public void setSuperficie(double valorSuperficie){
superficie = valorSuperficie;
}
public void setDirección(String valorDireccion){
direccion = valorDireccion;
}
//metodo funcion
public double getSuperficie(){return superficie;}
public String getDireccion(){return direccion;}
public SalonCasa getSalonCasa(){return salonCasa;}
public CocinaCasa getCocinaCasa(){return cocina;}
public String getDatosCasa(){
int numeroDeTelevisores = salonCasa.getNumeroDeTelevisores();
String tipoSalon = salonCasa.getTipoSalon();
boolean esIndependiente = cocina.getEsIndependiente();
int numeroDeFuegos = cocina.getNumeroDeFuegos();
String datosCasa = "Los datos de la casa son: Televisiones "+ numeroDeTelevisores + ", tipo de salón " +
tipoSalon+ ", cocina independiente " + esIndependiente + ", numero de fuegos de la cocina " + numeroDeFuegos +
", superficie de la casa "+ superficie + " m2, dirección " + direccion;
System.out.println(datosCasa);
return datosCasa;
}
}
-
Hola, aquí estás manipulando en una clase atributos de otra clase, cosa que en principio no es recomendable:
public void setSalonCasa(int valorNumeroDeTelevisores, String valorTipoSalon){
salonCasa.setNumeroDeTelevisores(valorNumeroDeTelevisores);
salonCasa.setTipoSalon(valorTipoSalon);
}
En lugar de esto debes usar una signatura como:
public void setSalonCasa (SalonCasa salonRecibido) {
...
}
Escribe CU00641B en el buscador del foro y mira las soluciones propuestas.
Saludos.
-
Bueno, creo que por fin está bien.
Tengo una duda, y es que en el metodo getDatosCasa no se si está bien que incluya los métodos de las otras clases o no, o si habrá alguna otra forma de hacerlo o no. Le he estado dando vueltas y no se me ocurre otra forma, ya se que no hace falta incluirlo pero tengo esa curiosidad.
Saludos.
public class Casa{
private double superficie;
private String direccion;
private SalonCasa salonCasa;
private CocinaCasa cocina;
//constructor
public Casa (){
salonCasa = new SalonCasa();
cocina = new CocinaCasa();
superficie = 0.0;
direccion = "desconocida";
}
//metodos procedimiento
public void setSalonCasa(SalonCasa salonRecibido){
salonCasa = salonRecibido;
}
public void setCocinaCasa(CocinaCasa cocinaRecibido){
cocina = cocinaRecibido;
}
public void setSuperficie(double valorSuperficie){
superficie = valorSuperficie;
}
public void setDirección(String valorDireccion){
direccion = valorDireccion;
}
//metodo funcion
public double getSuperficie(){return superficie;}
public String getDireccion(){return direccion;}
public SalonCasa getSalonCasa(){return salonCasa;}
public CocinaCasa getCocinaCasa(){return cocina;}
public String getDatosCasa(){
String datosCasa = "Los datos de la casa son: Televisiones "+ salonCasa.getNumeroDeTelevisores() + ", tipo de salón " +
salonCasa.getTipoSalon() + ", cocina independiente " + cocina.getEsIndependiente() + ", numero de fuegos de la cocina " + cocina.getNumeroDeFuegos() +
", superficie de la casa "+ superficie + " m2, dirección " + direccion;
System.out.println(datosCasa);
return datosCasa;
}
}
-
Hola rubens, puedes considerar el ejercicio como resuelto. El método getDatosCasa puedes darlo por bueno también. Más adelante en el curso verás que hay distintas cosas que se pueden cambiar o mejorar, pero hay que ir poco a poco, así que ¡a seguir avanzando!
Saludos