Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: ronal.d87 en 09 de Junio 2015, 04:54
-
Hola a todos, aqui he realizado el desarrollo del ejercicio propuesto en nuestra actividad
Define tres clases: Casa, SalonCasa y CocinaCasa. La clase SalonCasa debe tener como atributos numeroDeTelevisores (int) y tipoSalon (String) y disponer de un constructor que los inicialice a 0 y “desconocido”. La clase CocinaCasa debe tener como atributos esIndependiente (boolean) y numeroDeFuegos (int) y un constructor que los inicialice a false y 0. La clase Casa tendrá los siguientes atributos de clase: superficie (double), direccion (String), salonCasa (tipo SalonCasa) y cocina (tipo CocinaCasa). Define un constructor para la clase Casa que establezca a unos valores de defecto los atributos simples y que cree nuevos objetos si se trata de atributos objeto. Compila el código para comprobar que no presenta errores, crea un objeto de tipo Casa. Comprueba que se inicializan correctamente consultando el valor de sus atributos después de haber creado los objetos.
Clase Casa
package ejemplo;
public class Casa {
double superficie;
String direccion;
SalonCasa salonCasa;
CocinaCasa cocinaCasa;
public Casa(){
superficie =0.0;
direccion = "Desconocido";
salonCasa = new SalonCasa();
cocinaCasa = new CocinaCasa();
}
public void setSuperficie(double valorSuperficie){
superficie = valorSuperficie;
}
public void setDireccion(String valorDireccion){
direccion = valorDireccion;
}
public double getSuperficie(){
return superficie;
}
public String getDireccion (){
return direccion;
}
//obtener datos del salon de la casa
public int getTelevisoresSalonCasa(){
int televisores = salonCasa.getNumeroDeTelevisores();
return televisores;
}
public String getTipoSalonCasa(){
String salon = salonCasa.getTipoSalon();
return salon;
}
//obtener datos de la cocina
public int getNumeroFuegos(){
int fuegos = cocinaCasa.getNumeroDeFuegos();
return fuegos;
}
public boolean getEsIndependiente(){
String independiente = "";
boolean esIndependiente = cocinaCasa.getEsIndependiente();
if(esIndependiente == true){
independiente="Independiente";
return esIndependiente;
}else{
independiente = "No es Independiente";
return esIndependiente;
}
}
}
Clase salon SalonCasa
package ejemplo;
public class SalonCasa {
int numeroDeTelevisores;
String tipoSalon;
public SalonCasa(){
numeroDeTelevisores = 0;
tipoSalon = "desconocido";
}
public void setNumeroDeTelevisores(int cantidadTelevisores){
numeroDeTelevisores = cantidadTelevisores;
}
public void setTipoSalon(String valorTipoSalon){
tipoSalon = valorTipoSalon;
}
public int getNumeroDeTelevisores(){
return numeroDeTelevisores;
}
public String getTipoSalon(){
return tipoSalon;
}
}
clase CocinaCasa
package ejemplo;
public class CocinaCasa {
boolean esIndependiente;
int numeroDeFuegos;
public CocinaCasa(){
numeroDeFuegos = 0;
esIndependiente = false;
}
public void setNumeroDeFuegos(int cantidadDeFuegos){
numeroDeFuegos = cantidadDeFuegos;
}
public void setEsIndependiente(boolean valorEsIndependiente){
esIndependiente = valorEsIndependiente;
}
public int getNumeroDeFuegos(){
return numeroDeFuegos;
}
public boolean getEsIndependiente(){
return esIndependiente;
}
}
Clase con main
package ejemplo;
public class TestCasa {
public static void main (String [] args){
Casa casa;
casa = new Casa();
System.out.println("la direccion de la casa es: "+casa.getDireccion()
+" cuenta con una superficie de: "+casa.getSuperficie()
+", la casa tiene un tipo de salon "+casa.getTipoSalonCasa()
+" con "+casa.getTelevisoresSalonCasa()+" Televisores"+". Su cocina es "
+casa.getEsIndependiente()+" con "
+ casa.getNumeroFuegos()+" fuegos");
}
}
-
Hola Ronal:
He estado leyendo tu ejercicio y a mi entender tiene cosas que están muy bien y cosas que debemos revisar.
Las clases CocinaCasa y SalonCasa están perfectas.
Ahora bien, respecto a la clase Casa están muy bien declarados los atributos y también están muy bien los métodos setSuperficie, setDireccion, getDireccion, y getSuperficie.
Los demás métodos que incluíste en esta clase no deberían existir en esta clase ya que son métodos que correspondan a otras clases (corresponden a las clases SalonCasa y CocinaCasa).
Fíjate lo siguiente: la clase Casa tiene 4 atributos a saber:
double superficie;
String direccion;
SalonCasa salonCasa;
CocinaCasa cocinaCasa;
Muy bien, por lo tanto la clase Casa deberá tener métodos set y get para esos 4 atributos (no así para los atributos de los atributos). Entonces están perfectos los métodos set y get de los atributos direccion y superficie. Y los métodos set y get de los atributos objetos deberían ser:
public void setSalonCasa (SalonCasa objetoSalon){
salonCasa = objetoSalon;}
public void setCocinaCasa (CocinaCasa objetoCocina)
{cocinaCasa = objetoCocina;}
public SalonCasa getSalonCasa(){return salonCasa;}
public CocinaCasa getCocinaCasa(){return cocinaCasa;}
Analízalo y cualquier duda estamos aquí para ayudarte. Saludos.
-
hola he aqui las correciones..
clase casa
package ejemplo;
public class Casa {
double superficie;
String direccion;
SalonCasa salonCasa;
CocinaCasa cocinaCasa;
//Constructor 1
public Casa(){
superficie =0.0;
direccion = "Desconocido";
salonCasa = new SalonCasa();
cocinaCasa = new CocinaCasa();
}
//Constructor 2
public Casa(double valorSuperficie, String valorDireccion,
SalonCasa valorSalon, CocinaCasa valorCocina){
superficie = valorSuperficie;
direccion = valorDireccion;
salonCasa = valorSalon;
cocinaCasa = valorCocina;
}
public void setSuperficie(double valorSuperficie){
superficie = valorSuperficie;
}
public void setDireccion(String valorDireccion){
direccion = valorDireccion;
}
public void setSalonCasa(SalonCasa valorSalon){
salonCasa = valorSalon;
}
public void setCocinaCasa (CocinaCasa valorCocina){
cocinaCasa=valorCocina;
}
public double getSuperficie(){
return superficie;
}
public String getDireccion (){
return direccion;
}
//obtener datos del salon de la casa
public SalonCasa getSalonCasa(){
return salonCasa;
}
//obtener datos de la cocina
public CocinaCasa getCocinaCasa(){
return cocinaCasa;
}
}
clase salon Casa
package ejemplo;
public class SalonCasa {
int numeroDeTelevisores;
String tipoSalon;
public SalonCasa(){
numeroDeTelevisores = 0;
tipoSalon = "desconocido";
}
public void setNumeroDeTelevisores(int cantidadTelevisores){
numeroDeTelevisores = cantidadTelevisores;
}
public void setTipoSalon(String valorTipoSalon){
tipoSalon = valorTipoSalon;
}
public int getNumeroDeTelevisores(){
return numeroDeTelevisores;
}
public String getTipoSalon(){
return tipoSalon;
}
}
clase cocina casa
package ejemplo;
public class CocinaCasa {
boolean esIndependiente;
int numeroDeFuegos;
public CocinaCasa(){
numeroDeFuegos = 0;
esIndependiente = false;
}
public void setNumeroDeFuegos(int cantidadDeFuegos){
numeroDeFuegos = cantidadDeFuegos;
}
public void setEsIndependiente(boolean valorEsIndependiente){
esIndependiente = valorEsIndependiente;
}
public int getNumeroDeFuegos(){
return numeroDeFuegos;
}
public boolean getEsIndependiente(){
String independiente = "";
if(esIndependiente == true){
independiente="Independiente";
return esIndependiente;
}else{
independiente = "No es Independiente";
return esIndependiente;
}
}
}
clase test casa
package ejemplo;
public class TestCasa {
public static void main (String [] args){
Casa casa, casa1;
casa = new Casa();
casa1 = new Casa();
/* System.out.println("la direccion de la casa es: "+casa.getDireccion()
+" cuenta con una superficie de: "+casa.getSuperficie()
+", la casa tiene un tipo de salon "+casa.getTipoSalonCasa()
+" con "+casa.getTelevisoresSalonCasa()+" Televisores"+". Su cocina es "
+casa.getEsIndependiente()+" con "
+ casa.getNumeroFuegos()+" fuegos");
*/
System.out.println("la direccion de la casa es: "+casa1.getDireccion()
+" cuenta con una superficie de: "+casa1.getSuperficie()
+", la casa tiene un tipo de salon "+casa1.getSalonCasa().getTipoSalon()
+" con "+casa1.getSalonCasa().getNumeroDeTelevisores()+" Televisores"+". Su cocina es "
+casa1.getCocinaCasa().getEsIndependiente()+" con "
+ casa1.getCocinaCasa().getNumeroDeFuegos()+" fuegos");
}
}
-
Hola Ronal:
Excelente, ahora veo muy bien el ejercicio!
Aprovechando que lo resolviste correctamente, te planteo un "ejercicio dentro del ejercicio".
Supongamos que hago un cambio en la clase Casa que codificaste. Supongamos que ese cambio consiste en cambiar el Constructor 2 de tal manera que en vez de ser:
//Constructor 2
public Casa(double valorSuperficie, String valorDireccion,
SalonCasa valorSalon, CocinaCasa valorCocina){
superficie = valorSuperficie;
direccion = valorDireccion;
salonCasa = valorSalon;
cocinaCasa = valorCocina;
}
esté codificado como:
//Constructor 2
public Casa(double valorSuperficie, String valorDireccion,
SalonCasa valorSalon, CocinaCasa valorCocina){
superficie=valorSuperficie;
direccion=valorDireccion;
salonCasa=new SalonCasa(valorSalon.getNumeroDeTelevisores(), valorSalon.getTipoSalon());
cocinaCasa=new CocinaCasa(valorCocina.getEsIndependiente(), valorCocina.getNumeroDeFuegos());
}
Pregunta: ¿cuál es la diferencia? ¿qué implicancias trae este cambio?
Saludos!
-
hola como estas, perdon por la dilacion en la respuesta. en el caso que codifiquemos la clase casa de la manera.
public Casa(double valorSuperficie, String valorDireccion,
SalonCasa valorSalon, CocinaCasa valorCocina){
superficie=valorSuperficie;
direccion=valorDireccion;
salonCasa = new SalonCasa(valorSalon.getNumeroDeTelevisores(), valorSalon.getTipoSalon());
cocinaCasa = new CocinaCasa(valorCocina.getEsIndependiente(), valorCocina.getNumeroDeFuegos());
}
la clase Casa genera dos errores ya que los los parametros con los que esta siendo creada las variables salonCasa y cocinaCasa en las clases SalonCasa y CocinaCasa sus respectivos constructores son generales (no estan recibiendo parametros)
Constructor SalonCasa
public SalonCasa(){
numeroDeTelevisores = 0;
tipoSalon = "desconocido";
}
Constructor CocinaCasa
public CocinaCasa(){
numeroDeFuegos = 0;
esIndependiente = false;
}
-
Es correcto, es correcto. Me había olvidado que las clases SalonCasa y CocinaCasa no tenian un segundo Constructror donde se recibieran parámetros.
Al no tener esos Constructores (que reciban parámetros) ha quedado truco a lo que apuntaba la intención de lo que quería mostrarte jeje. Lo dejaremos para otro ejercicio donde podamos usarlo como ejemplo.
A seguir adelante!