Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: ronal.d87 en 07 de Junio 2015, 16:47
-
HOLA BUEN DIA HE AQUI EL CODIGO DEL EJERCICIO...
package ejemplo;
public class Profesor {
String nombre, apellidos;
int edad;
boolean casado, especialista;
//constructor cargado por default
public Profesor(){
nombre = "Ronald";
apellidos = "Mosquera";
edad = 20;
boolean casado = false;
boolean especialista = false;
}
//constructor sin valores cargados
public Profesor (String nuevoNombre, String nuevoApellido, int nuevaEdad, boolean esCasado, boolean esEspecialista){
nombre = nuevoNombre;
apellidos = nuevoApellido;
edad = nuevaEdad;
casado = esCasado;
especialista = esEspecialista;
}
//metodos setters y getters
public void setNombre(String nuevoNombre){
nombre = nuevoNombre;
}
public void setApellidos(String nuevoApellido){
apellidos = nuevoApellido;
}
public void setEdad(int nuevaEdad){
edad = nuevaEdad;
}
public void setEsCasado(boolean esCasado){
casado = esCasado;
}
public void setEsEspecialista(boolean esEspecialista){
especialista = esEspecialista;
}
public String getNombre(){
return nombre;
}
public String getApellidos(){
return apellidos;
}
public int getEdad(){
return edad;
}
public boolean getEsCasado(){
return casado;
}
public boolean getEsEspecialista(){
return especialista;
}
public static void main (String [] args){
//creacion de objeto sin parametros
Profesor profesor = new Profesor();
//creacion de objeto con parametros
Profesor profesor1;
profesor1 = new Profesor("Raul","Gonzales",20,true,false);
//resultados del constructor sin parametros
System.out.println(profesor.getNombre());
System.out.println(profesor.getApellidos());
//resultados del constructor parametrizado
System.out.println(profesor1);
}
}
CUANDO MUESTRO este resultado en la consola sale ejemplo.Profesor@e7b241 ...por favor, como puedo hacer para que se muestren los resultados. gracias
//creacion de objeto con parametros
Profesor profesor1;
profesor1 = new Profesor("Raul","Gonzales",20,true,false);
//resultados del constructor parametrizado
System.out.println(profesor1);
-
Hola Ronal!
Estuve revisando tu código, lo veo muy bien pero haría algunos cambios.
No incluiría el método main dentro de la clase Profesor. En la clase Profesor dejaría solamente los contructores y los métodos set y get. Incluiría el método main en una clase aparte que podría llamarse TestProfesor.
Por otro lado, el constructor que establece los valores por defecto en la clase Profesor, debería iniciar los campos a los siguientes valores (que se consideran por defecto):
public Profesor(){
nombre = "";
apellidos = "";
edad = 0;
boolean casado = false;
boolean especialista = false;
}
Saludos, a seguir adelante!
-
Hola ronal.d87, además del aporte que te hizo RaGa, te apunto dos cosas:
1) En el constructor no debes volver a poner el Tipo (boolean, String, etc.) ya que esto lo has hecho al declarar los campos. Cuando los inicializas n el constructor directamente pones el nombre de la variable
casado = false
2) Al poner
System.out.println (profesor1);
lo que le estas diciendo a java es que imprima una llamada al objeto profesor1 y no el objto en sí mismo. Además recuerda que lo que quieres imprimir, al ser un objeto que posee diversos atributos, por lo que debes especificarle a java qué aspectos de dicho objeto quieres imprimir en pantalla.
Una forma de ponerlo sería
System.out.println (El nombre del profesor es " + profesor1.getNombre() + " " + profesor1.getApellidos + ", y tiene " + profesor1.getEdad() + " años.");
-
Recuerden todos, (y ronald, para rellenar la respuesta) lo que ves así con símbolos raros "Profesor@e7b241", se trata de la la ruta o dirección de dicho objeto en java! mas adelante en el curso vas a ver en profundidad eso de las rutas...
-
HOLA BUENA TARDE, GRACIAS POR RESOLVER MIS DUDAS, MUCHAS GRACIAS. HE AQUI LAS CORRECCIONES, ESPERO ESTEN RESUELTAS.
CLASE PROFESOR
package ejemplo;
public class Profesor {
String nombre, apellidos;
int edad;
boolean casado, especialista;
//constructor cargado por default
public Profesor(){
nombre = "";
apellidos = "";
edad = 0;
boolean casado = false;
boolean especialista = false;
}
//constructor sin valores cargados
public Profesor (String nuevoNombre, String nuevoApellido, int nuevaEdad, boolean esCasado, boolean esEspecialista){
nombre = nuevoNombre;
apellidos = nuevoApellido;
edad = nuevaEdad;
casado = esCasado;
especialista = esEspecialista;
}
//metodos setters y getters
public void setNombre(String nuevoNombre){
nombre = nuevoNombre;
}
public void setApellidos(String nuevoApellido){
apellidos = nuevoApellido;
}
public void setEdad(int nuevaEdad){
edad = nuevaEdad;
}
public void setEsCasado(boolean esCasado){
casado = esCasado;
}
public void setEsEspecialista(boolean esEspecialista){
especialista = esEspecialista;
}
public String getNombre(){
return nombre;
}
public String getApellidos(){
return apellidos;
}
public int getEdad(){
return edad;
}
public boolean getEsCasado(){
return casado;
}
public boolean getEsEspecialista(){
return especialista;
}
}
-
CLASE TESTPROFESOR
package ejemplo;
public class TestProfesor {
public static void main (String [] args){
//creacion de objeto sin parametros
Profesor profesor = new Profesor();
//creacion de objeto con parametros
Profesor profesor1;
profesor1 = new Profesor("Raul","Gonzales",20,true,false);
//resultados del constructor sin parametros
System.out.println("el nombre del profesor es: "+profesor.getNombre()+" "+profesor.getApellidos());
//resultados del constructor parametrizado
System.out.println("el nombre del profesor es "+profesor1.getNombre()+
" "+profesor1.getApellidos()+", su edad es: "+profesor1.getEdad());
}
}
-
Hola ronal.d87
Además de lo ya expuesto quisiera comentar:
1) En el constructor sin parámetros tienes estas dos líneas:
boolean casado = false;
boolean especialista = false;
En mi opinión deberías borrar ambas, porque las variables casado y especialista ya las has declarado como propiedades de la clase profesor. Así como está, estás declarando nuevas variables locales al constructor, que entiendo no es tu intención. Además las variables booleanas se inicializan en false automáticamente. También quitaría la siguiente línea:
edad = 0;
porque se inicializa automáticamente a 0. (https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html (https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html))
2) Para que la línea antigua que tenías hubiera funcionado:
//resultados del constructor parametrizado
System.out.println(profesor1);
tendrías que haber sobreescrito la función toString() en la clase Profesor de la siguiente manera:
@Override
public String toString() {
return "Nombre: " + this.nombre + "\r\n" +
"Apellidos: " + this.apellidos + "\r\n" +
"Edad: " + this.edad + "\r\n";
}
y luego desde TestProfesor llamar a:
System.out.println(profesor1);
La función println llamará a la función toString() del objeto. La palabra clave this se refiere a las propiedades la clase actual.
Entiendo que son temas más avanzados, pero te los comento para que los tengas en cuenta.
¡Saludos!
-
Hola Jorge, comentarte que dentro de la metodología del curso y con perspectiva didáctica estamos recomendando inicializar siempre los atributos en los constructores a 0, false o null dependiendo del tipo de atributo de que se trate, para hacer la inicialización explícita aún cuando no sea estrictamente necesaria.
También por motivos didácticos los contenidos se tratan progresivamente y aspectos como la sobreescritura de toString() no se tratan en el curso hasta la entrega CU00694B.
Saludos