Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: tripeador en 05 de Mayo 2020, 11:03
-
Ejercicio correspondiente al tema CU00642B del tutorial pdf de programación java desde cero con ejercicios resueltos.
"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. Define otro constructor que reciba como parámetros la superficie, dirección y un objeto de tipo SalonCasa y otro de tipo CocinaCasa. Compila el código para comprobar que no presenta errores, y crea un objeto de tipo Casa usando el constructor que recibe parámetros. Ten en cuenta que antes tendrás que haber creado los objetos de tipo SalonCasa y CocinaCasa para poder pasárselos al constructor. Comprueba que el objeto
Casa se inicializa correctamente consultando el valor de sus atributos después de haber creado el objeto."
CLASE SalonCasa
//Clase salón casa
public class SalonCasa
{
//Campos de la clase
private int numeroDeTelevisores;
private String tipoSalon;
//Constructor
public SalonCasa()
{
numeroDeTelevisores = 0;
tipoSalon = "desconocido";
}
//Métodos para establecer valores (setters)
public void setNumeroDeTelevisores (int valorNumeroDeTelevisores) {numeroDeTelevisores = valorNumeroDeTelevisores;}
public void setTipoSalon (String valorTipoSalon) {tipoSalon = valorTipoSalon;}
//Metodos para obtener valores (getters)
public int getNumeroDeTelevisores () {return numeroDeTelevisores;}
public String getTipoSalon () {return tipoSalon;}
}
CLASE CocinaCasa
//Clase CocinaCasa
public class CocinaCasa
{
//Campos de la clase
private boolean esIndependiente;
private int numeroDeFuegos;
//Constructor
public CocinaCasa()
{
esIndependiente = false;
numeroDeFuegos = 0;
}
//Métodos para establecer valores (setters)
public void setEsIndependiente (boolean valorEsIndependiente) {esIndependiente = valorEsIndependiente;}
public void setNumeroDeFuegos (int valorNumeroDeFuegos) {numeroDeFuegos = valorNumeroDeFuegos;}
//Métodos para obtener valores (setters)
public boolean getEsIndependiente (){return esIndependiente;}
public int geNumeroDeFuegos () {return numeroDeFuegos;}
}
CLASE Casa
//Clase Casa
public class Casa
{
//Campos de la clase
private double superficie;
private String direccion;
private SalonCasa salonCasa;
private CocinaCasa cocina;
//Constructor sin parámetros
public Casa()
{
superficie = 00;
direccion = "";
salonCasa = new SalonCasa ();
cocina = new CocinaCasa ();
}
//Constructor con parámetros
-
Buenas, gracias por incluir el código de ejercicio, lenguaje, etc. Es importante para poder responder.
He mirado lo que has enviado y está bien, aunque la clase Casa está incompleta: le faltan los métodos. ¿Quizás no se pegó completa? Revísalo, puedes responder en este mismo hilo, la pones completa y la miro en cuanto pueda. Salu2
-
A parte de lo que comenta el compañero, ¿cuál es tu duda? ¿Te salta algún error al compilar?
Yo de tú me haría una clase "test" con un main donde crearía lo que me piden:
crea un objeto de tipo Casa usando el constructor que recibe parámetros.
y
Comprueba que el objeto Casa se inicializa correctamente consultando el valor de sus atributos después de haber creado el objeto.
Para eso claro está, necesitaría más parámetros en las clases que tengo. Al menos un equals() y hashCode() para evitar errores tontos que puedan surgir, pero sobretodo para que pueda jugar mejor con todo el problema (te pueden preguntar cuándo dos objetos de tipo Cocina son iguales o no, o bien, tener que trabajar con varios objetos de tu problema a la vez).
Obviamente, si tengo que sacar cosas por consola, el "toString()" es imperdible. Cada clase ha de tener el suyo con los atributos de la misma.
-
Buenas daenius, se trata de uno de los ejercicio del curso Java desde cero que se puede encontrar en https://aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188
Quien lo hace sube su propuesta de solución para que alguien más avanzado comente si está bien resuelto (de acuerdo con los contenidos del curso, no por libre, ya que en un ejercicio solo se pueden usar los contenidos vistos previamente en el curso).
Lo mismo se hace para otros cursos (https://aprenderaprogramar.com/index.php?option=com_content&view=article&id=57&Itemid=86)
Salu2
-
Buenas daenius, se trata de uno de los ejercicio del curso Java desde cero
Ah, ya veo. Me pareció raro que tuviese un código el nombre del enunciado. Bueno, a ver qué responde el OP.
-
Adjunto de nuevo la clase CASA completa
//Clase Casa
public class Casa
{
//Campos de la clase
private double superficie;
private String direccion;
private SalonCasa salon;
private CocinaCasa cocina;
//Constructor sin parámetros
public Casa(){
superficie = 00;
direccion = "";
salon = new SalonCasa ();
cocina = new CocinaCasa ();
}
//Constructor con parámetros
public Casa (double superficie, String direccion, SalonCasa objetoSalonCasa, CocinaCasa objetoCocinaCasa){
superficie = 00;
direccion = "desconocida";
salon = objetoSalonCasa;
cocina = objetoCocinaCasa;
}
//Metodos para establecer valores (setters)
public void setSuperficie (double valorSuperficie){superficie = valorSuperficie;}
public void setDireccion (String valorDireccion) {direccion = valorDireccion;}
public void setSalonCasa (SalonCasa objetoSalonCasa) {
salon = new SalonCasa();
salon.setNumeroDeTelevisores(objetoSalonCasa.getNumeroDeTelevisores());
salon.setTipoSalon(objetoSalonCasa.getTipoSalon());
}
public void setCocinaCasa (CocinaCasa objetoCocinaCasa) {
cocina = new CocinaCasa();
cocina.setEsIndependiente (objetoCocinaCasa.getEsIndependiente());
cocina.setNumeroDeFuegos (objetoCocinaCasa.getNumeroDeFuegos());
}
public double getSuperficie(){return superficie;}
public String getDireccion(){return direccion;}
public SalonCasa getSalonCasa(){return salon;}
public CocinaCasa getCocina(){return cocina;}
}
-
Hola,
Creo que la superficie al ser un double debe inicializarse con 0.0 y no como 00. Vamos, de siempre lo he hecho así.
-
00 es lo mismo que 0, es decir, es un int.
Java lo acepta, porque lo que hace es transformar automáticamente ese int a double, y no pasa nada.
Pero sí, es más adecuado, usar 0.0, más que nada porque al leer el código queda patente que se está trabajando con números reales.
Además se puede usar 0d , cuando es double, y también 0f si es float.
Pero vamos, es por cuestión de legibilidad del código. Java sí admite que inicialicemos un valor double con un int, porque lo transformará.
Lo que Java no admitiría es al contrario, a una variable int inicializar con un valor double como 0.0.
No lo admitiría porque considera que transformar eso a int es "perder información", porque se pierde la parte decimal, así que automáticamente no lo admite, a no ser que el programador fuerce el casteo