Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Jlinos en 16 de Junio 2018, 11:44
-
Buenos días. Adjunto el ejercicio de la Entrega Nº 41 (CU00641B) del programa formativo en programación Java de aprenderaprogramar: "Clases que utilizan objetos", para que den su opinión.
Gracias
Clase Casa
public class Casa
{
// instance variables
private double superficie;
private String direccion;
private SalonCasa salonCasa;
private CocinaCasa cocina;
//Constructor
public Casa(){
superficie = 0.0;
direccion = "Desconocida";
salonCasa = new SalonCasa();
cocina = new CocinaCasa();
}//Cierre del constructor
//Métodos setter y getter
public void setSuperficie(double valorSuperficie){
superficie = valorSuperficie;
}//Cierre del método
public void setDireccion(String valorDireccion){
direccion = valorDireccion;
}//Cierre del método
public void setNumeroDeTelevisores(int valorNumeroDeTelevisores){
salonCasa.setNumeroDeTelevisores(valorNumeroDeTelevisores);
}//Cierre del método
public void setTipoSalon(String valorTipoSalon){
salonCasa.setTipoSalon(valorTipoSalon);
}//Cierre del método
public void setEsIndependiente(boolean valorEsIndependiente){
cocina.setEsIndependiente(valorEsIndependiente);
}//Cierre del método
public void setNumeroDeFuegos(int valorNumeroDeFuegos){
cocina.setNumeroDeFuegos(valorNumeroDeFuegos);
}//Cierre del método
public String getDatosCasa(){
int numeroDeTelevisores = salonCasa.getNumeroDeTelevisores();
String tipoSalon = salonCasa.getTipoSalon();
boolean esIndependiente = cocina.getEsIndependiente();
String cadenaEsIndependiente = "";
if(esIndependiente==true){
cadenaEsIndependiente = "si";
}else if(esIndependiente==false){
cadenaEsIndependiente = "no";
}
int numeroDeFuegos = cocina.getNumeroDeFuegos();
String datosCasa = "\nSuperficie: "+superficie+ "\nDireccion: "+direccion+ "\nNumero de televisores: "
+numeroDeTelevisores+ "\nTipo Salon: "+tipoSalon+ "\nEs independiente: "+cadenaEsIndependiente+
"\nNumero fuegos " +numeroDeFuegos;
System.out.println(datosCasa);
return datosCasa;
}
}//Cierre de la clase Casa
Clase SalonCasa
public class SalonCasa
{
//Atributos
private int numeroDeTelevisores;
private String tipoSalon;
//Constructor
public SalonCasa(){
numeroDeTelevisores = 0;
tipoSalon = "Desconocido";
}//Cierre del constructor
//Métodos setter y getter
public void setNumeroDeTelevisores(int valorNumeroDeTelevisores){
numeroDeTelevisores = valorNumeroDeTelevisores;
}//Cierre del método
public int getNumeroDeTelevisores(){
return numeroDeTelevisores;
}//Cierre del método
public void setTipoSalon(String valorTipoSalon){
tipoSalon = valorTipoSalon;
}//Cierre del método
public String getTipoSalon(){
return tipoSalon;
}//Cierre del método
}//Cierre de la clase SalonCasa
Clase CocinaCasa
public class CocinaCasa
{
//Atributos
private boolean esIndependiente;
private int numeroDeFuegos;
//Constructor
public CocinaCasa(){
esIndependiente = false;
numeroDeFuegos = 0;
}//Cierre del constructor
//Métodos getter y setter
public void setEsIndependiente(boolean valorEsIndependiente){
esIndependiente = valorEsIndependiente;
}//Cierre del método
public boolean getEsIndependiente(){
return esIndependiente;
}//Cierre del método
public void setNumeroDeFuegos(int valorNumeroDeFuegos){
numeroDeFuegos = valorNumeroDeFuegos;
}//Cierre del método
public int getNumeroDeFuegos(){
return numeroDeFuegos;
}//Cierre del método
-
Hola, este ejercicio no está bien resuelto porque no se trabaja adecuadamente con los objetos que son atributos de la clase Casa. Por ejemplo no existen los métodos get y set para los atributos objeto. Comprender esto puede resultar un poco trabajoso.
Para el entendiemiento de estos conceptos recomendamos leer estos hilos con calma:
https://aprenderaprogramar.com/foros/index.php?topic=1220.0
https://aprenderaprogramar.com/foros/index.php?topic=1238.0
Una vez leídos, lo recomendable es volver a escribir la propuesta de solución al ejercicio pues así se verá si se han entendido bien los conceptos o no.
Saludos
-
Buenas tardes Alex.
Te vuelvo a agradecer la aclaración, después de revisar los hilos que me has enviado he visto el fallo de los objetos que son atributos de la clase Casa.
Gracias.
Casa
public class Casa
{
// instance variables
private double superficie;
private String direccion;
private SalonCasa salonCasa;
private CocinaCasa cocina;
//Constructor
public Casa(){
superficie = 0.0;
direccion = "Desconocida";
salonCasa = new SalonCasa();
cocina = new CocinaCasa();
}//Cierre del constructor
//Métodos setter y getter
public void setSuperficie(double valorSuperficie){
superficie = valorSuperficie;
}//Cierre del método
public void setDireccion(String valorDireccion){
direccion = valorDireccion;
}//Cierre del método
public double getSuperficie(){
return superficie;
}//Cierre del método
public String getDireccion(){
return direccion;
}//Cierre del método
public void setSalon(SalonCasa valorSalonCasa){
salonCasa = new SalonCasa();
salonCasa.setNumeroDeTelevisores(valorSalonCasa.getNumeroDeTelevisores());
salonCasa.setTipoSalon(valorSalonCasa.getTipoSalon());
}
public void setCocina(CocinaCasa valorCocinaCasa){
cocina = new CocinaCasa();
cocina.setEsIndependiente(valorCocinaCasa.getEsIndependiente());
cocina.setNumeroDeFuegos(valorCocinaCasa.getNumeroDeFuegos());
}
public String getDatosCasa(){
int numeroDeTelevisores = salonCasa.getNumeroDeTelevisores();
String tipoSalon = salonCasa.getTipoSalon();
boolean esIndependiente = cocina.getEsIndependiente();
String cadenaEsIndependiente = "";
if(esIndependiente==true){
cadenaEsIndependiente = "si";
}else if(esIndependiente==false){
cadenaEsIndependiente = "no";
}
int numeroDeFuegos = cocina.getNumeroDeFuegos();
String datosCasa = "\nSuperficie: "+superficie+ "\nDireccion: "+direccion+ "\nNumero de televisores: "
+numeroDeTelevisores+ "\nTipo Salon: "+tipoSalon+ "\nEs independiente: "+cadenaEsIndependiente+
"\nNumero fuegos " +numeroDeFuegos;
System.out.println(datosCasa);
return datosCasa;
}
}//Cierre de la clase Casa
SalonCasa
public class SalonCasa
{
//Atributos
private int numeroDeTelevisores;
private String tipoSalon;
//Constructor
public SalonCasa(){
numeroDeTelevisores = 0;
tipoSalon = "Desconocido";
}//Cierre del constructor
//Métodos setter y getter
public void setNumeroDeTelevisores(int valorNumeroDeTelevisores){
numeroDeTelevisores = valorNumeroDeTelevisores;
}//Cierre del método
public int getNumeroDeTelevisores(){
return numeroDeTelevisores;
}//Cierre del método
public void setTipoSalon(String valorTipoSalon){
tipoSalon = valorTipoSalon;
}//Cierre del método
public String getTipoSalon(){
return tipoSalon;
}//Cierre del método
}//Cierre de la clase SalonCasa
CocinaCasa
public class CocinaCasa
{
//Atributos
private boolean esIndependiente;
private int numeroDeFuegos;
//Constructor
public CocinaCasa(){
esIndependiente = false;
numeroDeFuegos = 0;
}//Cierre del constructor
//Métodos getter y setter
public void setEsIndependiente(boolean valorEsIndependiente){
esIndependiente = valorEsIndependiente;
}//Cierre del método
public boolean getEsIndependiente(){
return esIndependiente;
}//Cierre del método
public void setNumeroDeFuegos(int valorNumeroDeFuegos){
numeroDeFuegos = valorNumeroDeFuegos;
}//Cierre del método
public int getNumeroDeFuegos(){
return numeroDeFuegos;
}//Cierre del método
}//Cierre de la clase CocinaCasa
-
Ahora bien. Posiblemente el método getDatosCasa() excede un tanto las responsabilidades que tendría un método de la clase Casa. Se dice que una clase es responsable de sus atributos, y por ejemplo el número de televisores no es un atributo de la clase Casa, con lo cual no debería manejarse dentro de esta clase. De cualquier forma esto no es muy relevante, el ejercicio está bien.
Saludos