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: Cpantoja en 07 de Junio 2020, 09:43
-
Buenos días compañeros. He realizado el ejercicio de clases que utilizan objetos CU00641B de tutorial pdf de programación Java. He tratado de apegarme lo mas posible a las indicaciones del ejercicio y al ejemplo dado en el mismo capitulo. Agradezco vuestras observaciones.
El código es el siguiente:
Clase SalonCasa:
public class SalonCasa {
private int numeroDeTelevisores;
private String tipoSalon; // 1 - Recepciones, 2 - Juntas, 3 - Fiestas
//Constructor
public SalonCasa() {
numeroDeTelevisores = 0;
tipoSalon = "Desconocido";
}
//Metodo para establecer el numeroDeTelevisores para el objeto saloncasa
public void setNumeroDeTelevisores(int valorNumeroDeTelevisores) {
numeroDeTelevisores = valorNumeroDeTelevisores;
}
//Metodo para establecer el tipoSalon para el objeto saloncasa
public void setTipoSalon(String valorTipoSalon) {
tipoSalon = valorTipoSalon;
}
//Metodo para obtener numeroDeTelevisores del objeto saloncasa
public int getNumeroDeTelevisores() {
return numeroDeTelevisores;
}
//Metodo para obtener el tipoSalon del objeto saloncasa
public String getTipoSalon() {
return tipoSalon;
}
}
Clase CocinaCasa:
public class CocinaCasa {
private boolean esIndependiente;
private int numeroDeFuegos;
//Constructor
public CocinaCasa() {
esIndependiente = false;
numeroDeFuegos = 0;
}
public void setEsIndependiente(boolean valorEsIndependiente) {
esIndependiente = valorEsIndependiente;
}
public void setNumeroDeFuegos(int valorNumeroDeFuegos) {
numeroDeFuegos = valorNumeroDeFuegos;
}
public boolean getEsIndependiente() {
return esIndependiente;
}
public int getNumeroDeFuegos() {
return numeroDeFuegos;
}
}
Clase Casa:
public class Casa {
//Declaracion de objetos y variables
private double superficie;
private String direccion;
private SalonCasa salonCasa;
private CocinaCasa cocinaCasa;
//Constructor. Aqui establecemos los valores para las dos variables locales de tipo Casa
public Casa(double valorSuperficie, String valorDireccion) {
superficie = valorSuperficie;
direccion = valorDireccion;
salonCasa = new SalonCasa();
cocinaCasa = new CocinaCasa();
}
public void setNumeroDeTelevisores(int valorNumeroDeTelevisores) {
salonCasa.setNumeroDeTelevisores(valorNumeroDeTelevisores);
}
public void setTipoSalon(String valorTipoSalon) {
salonCasa.setTipoSalon(valorTipoSalon);
}
public void setEsIndependiente(boolean valorEsIndependiente) {
cocinaCasa.setEsIndependiente(valorEsIndependiente);
}
public void setNumeroDeFuegos(int valorNumeroDeFuegos) {
cocinaCasa.setNumeroDeFuegos(valorNumeroDeFuegos);
}
//Metodo que devuelve la informacion del objeto casa
public String getDatosCasa() {
int numeroDeTelevisores = salonCasa.getNumeroDeTelevisores();
String tipoSalon = salonCasa.getTipoSalon();
boolean esIndependiente = cocinaCasa.getEsIndependiente();
int numeroDeFuegos = cocinaCasa.getNumeroDeFuegos();
String cadenaSalonCasa = "";
if(tipoSalon == "1") {
cadenaSalonCasa = "1. Recepciones";
} else if(tipoSalon == "2") {
cadenaSalonCasa = "2. Juntas";
} else if(tipoSalon == "3") {
cadenaSalonCasa = "3. Fiestas";
} else {
cadenaSalonCasa = "Este tipo de salon No existe";
}
String datosCasa = "El objeto Casa presenta estos datos. Superficie: " + superficie +
"\nDireccion: " + direccion + " Numero de televisores: " + numeroDeTelevisores +
" Tipo de salon: " + cadenaSalonCasa + "\n¿Es independiente la cocina? " + esIndependiente +
" Numero de fuegos de la cocina: " + numeroDeFuegos;
System.out.println(datosCasa);
return datosCasa;
}
}
-
Hola Cpantoja
He leido tu codigo solo una observacion.
En la clase SalonCasa() tienes declarado la variable tipoSalon como un objeto String.
y en la clase Casa() cuando haces la comparacion tipoSalon == "1", esta mal.
Ya que los objetos no se pueden comparar con ==.
Recuerda que los objetos tipo String se comparan con el metodo cadena1.equals(cadena2);
en tu caso seria tipoSalon.equals("1");
La otra opcion que veo es que cambies la variable tipoSalon a int recuerda que las vairiables primitivas con mas rapidas de procesar.
Saludos
-
Hola elendur14,
Gracias por la observación y por la corrección de ese punto, ahora ya se como se manejan las comparaciones de los objetos (utilizando el método equals), probaré ambas sugerencias (convirtiendo la variable a int) para reforzar mi aprendizaje.
Saludos.
-
Buenas, añado algunas cuestiones: tienes mal el planteamiento del constructor de la clase Casa, ya que no estás incluyendo los atributos SalonCasa y CocinaCasa. Todos los atributos son atributos, independientemente de que sean tipos primitivos u objeto. También tienes mal los métodos set y get de la clase Casa. En este hilo tienes una explicación (verla con calma): https://aprenderaprogramar.com/foros/index.php?topic=1220.0
Nota: siguiendo a https://aprenderaprogramar.com/foros/index.php?topic=1460.0 cuando pongas título a un tema por el código (p.ej. CU00641B) al final del mensaje
Salu2
-
Hola Ogramar,
Te agradezco las observaciones, revisaré con detenimiento las referencias enviadas para corregir los faltantes en mi ejercicio, soy novato en esto, pero se que con esmero se puede alcanzar la meta.
Saludos.
-
Hola de nuevo compañeros:
En Base a las observaciones planteadas por los compañeros con experiencia, he modificado las clases según las referencias sugeridas. Pude observar que hay varias formas de plantear el código, elegí una que va mas orientada al manejo de objetos.
De antemano agradezco vuestra opinión al respecto. Aclaro que he omitido las condicionales if-else, ya que por el momento lo que me interesa es saber si estoy manejando bien los objetos y las relaciones de uso entre clases.
Gracias.
Clase SalonCasa:
public class SalonCasa {
private int numeroDeTelevisores;
private String tipoSalon;
//constructor
public SalonCasa() {
numeroDeTelevisores = 0;
tipoSalon = "Desconocido";
}
//setters
public void setNumeroDeTelevisores(int valorNumeroDeTelevisores) {
numeroDeTelevisores = valorNumeroDeTelevisores;
}
public void setTipoSalon(String valorTipoSalon) {
tipoSalon = valorTipoSalon;
}
//Getters
public int getNumeroDeTelevisores() {
return numeroDeTelevisores;
}
public String getTipoSalon() {
return tipoSalon;
}
}
Clase CocinaCasa:
public class CocinaCasa {
private boolean esIndependiente;
private int numeroDeFuegos;
//Constructor
public CocinaCasa() {
esIndependiente = false;
numeroDeFuegos = 0;
}
//setters
public void setEsIndependiente(boolean valorEsIndependiente) {
esIndependiente = valorEsIndependiente;
}
public void setNumeroDeFuegos(int valorNumeroDeFuegos) {
numeroDeFuegos = valorNumeroDeFuegos;
}
public boolean getEsIndependiente() {
return esIndependiente;
}
public int getNumeroDeFuegos() {
return numeroDeFuegos;
}
}
Clase Casa:
//Clase con otras clases
public class Casa {
private double superficie;
private String direccion;
private SalonCasa salonCasa;
private CocinaCasa cocina;
//Constructor
public Casa() {
superficie = 0.0;
direccion = "";
salonCasa = new SalonCasa();
cocina = new CocinaCasa();
}
//setters de esta clase
public void setSuperficie(double valorSuperficie) {
superficie = valorSuperficie;
}
public void setDireccion(String valorDireccion) {
direccion = valorDireccion;
}
/* La idea de este metodo es copiar el objeto que se recibe para no inmiscuirnos
* en tareas que son propias de la clase SalonCasa.*/
public void setSalonCasa(SalonCasa valorSalonCasa) {
salonCasa.setNumeroDeTelevisores(valorSalonCasa.getNumeroDeTelevisores());
salonCasa.setTipoSalon(valorSalonCasa.getTipoSalon());
}
public void setCocinaCasa(CocinaCasa valorCocinaCasa) {
cocina.setEsIndependiente(valorCocinaCasa.getEsIndependiente());
cocina.setNumeroDeFuegos(valorCocinaCasa.getNumeroDeFuegos());
}
//Getters de la clase local
public double getSuperficie() {
return superficie;
}
public String getDireccion() {
return direccion;
}
//Getters de las clases relacionadas
public SalonCasa getSaloncasa() {
return salonCasa;
}
public CocinaCasa getCocinaCasa() {
return cocina;
}
}