Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: ronal.d87 en 07 de Junio 2015, 16:47

Título: Java diferencia entre constructor parametrizado y no parametrizado CU00640B
Publicado por: ronal.d87 en 07 de Junio 2015, 16:47
HOLA BUEN DIA HE AQUI EL CODIGO DEL EJERCICIO...

Código: [Seleccionar]
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);
Título: Re:EJERCICIO CU00640B REALIZADO
Publicado por: RaGa en 07 de Junio 2015, 18:40
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):

Código: [Seleccionar]
    public Profesor(){
        nombre = "";
        apellidos = "";
        edad = 0;
        boolean casado = false;
        boolean especialista = false;
    }

Saludos, a seguir adelante!
Título: Re:Java diferencia entre constructor parametrizado y no parametrizado CU00640B
Publicado por: fedegaray en 08 de Junio 2015, 01:42
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

Código: [Seleccionar]
casado = false
2) Al poner

Código: [Seleccionar]
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

Código: [Seleccionar]
System.out.println (El nombre del profesor es " + profesor1.getNombre() + " " + profesor1.getApellidos + ", y tiene " + profesor1.getEdad() + " años.");
Título: Re:Java diferencia entre constructor parametrizado y no parametrizado CU00640B
Publicado por: Dan_SB en 08 de Junio 2015, 02:24
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...
Título: Re:Java diferencia entre constructor parametrizado y no parametrizado CU00640B
Publicado por: ronal.d87 en 09 de Junio 2015, 01:28
HOLA BUENA TARDE, GRACIAS POR RESOLVER MIS DUDAS, MUCHAS GRACIAS. HE AQUI LAS CORRECCIONES, ESPERO ESTEN RESUELTAS.
CLASE PROFESOR
Código: [Seleccionar]
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;
    }
}

Título: Re:Java diferencia entre constructor parametrizado y no parametrizado CU00640B
Publicado por: ronal.d87 en 09 de Junio 2015, 01:29
CLASE TESTPROFESOR
Código: [Seleccionar]
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());
    }
}

Título: Re:Java diferencia entre constructor parametrizado y no parametrizado CU00640B
Publicado por: jorgemiralles en 09 de Junio 2015, 12:00
Hola ronal.d87

Además de lo ya expuesto quisiera comentar:

1) En el constructor sin parámetros tienes estas dos líneas:
Código: [Seleccionar]
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:
Código: [Seleccionar]
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:
Código: [Seleccionar]
//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:
Código: [Seleccionar]
@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:
Código: [Seleccionar]
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!
Título: Re:Java diferencia entre constructor parametrizado y no parametrizado CU00640B
Publicado por: Alex Rodríguez en 09 de Junio 2015, 14:10
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