Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: emma en 14 de Marzo 2015, 01:03

Título: Duda - Tema CU00625B con Java y BlueJ no establece bien los atributos de clase
Publicado por: emma en 14 de Marzo 2015, 01:03
Buenas gente, estoy trabajando en bluej y probando un poco los metodos Get y Set, y tengo un problema.
Cuando realizo una carga de atributos, verifico si realmente asigna a las variables de instancia, con el metodo get, y me muestra el que tenía (valor) el constructor al momento de construir dicho objeto.O sea mal llamado "por defecto" me entienden.

Analizando la situación, esto no es correcto, ya que verifiqué la clase y no existen errores. Me pregunto si me funciona correctamente el Bluej.? o algo de mi sistema?

Les dejo el codigo de prueba.

Código: [Seleccionar]
public class Persona
{
   
    //Atributos
   private String nombre;
   private String apellido;
   private int edad;
   private boolean casado;
   private int numeroDocumentoIdentidad;



    //Constructor
   
    public Persona(){
       
        nombre = "Desconocido";
        apellido = "Desconocido";
        edad = 0;
        casado = false;
        numeroDocumentoIdentidad = 0;
       
    }
   
        //Métodos para establecer los valores de los atributos
    public void setNombre(String nombre){
       
        nombre = nombre;
       
    }
   
    public void setApellido(String apellido){
       
        apellido = apellido;
       
    }
   
    public void setEdad(int edad){
       
        edad = edad;
       
    }
   
    public void setCasado(boolean casado){
       
        casado = casado;
       
    }
   
    public void setNumeroDocumentoIdentidad(int documento){
       
        numeroDocumentoIdentidad = documento;
       
    }
   
        //Métodos para obtener los valores de los atributos
       
        public String getNombre(){
           
            return nombre;
           
        }
       
        public String getApellido(){
           
            return apellido;
           
        }
       
        public int getEdad(){
           
            return edad;
           
        }
       
        public boolean getCasado(){
           
            return casado;
           
        }
       
        public int getNumeroDocumentoIndentidad(){
           
            return numeroDocumentoIdentidad;
           
        }
       
       
    }//Cierre clase


pasando en limpio, no me "setea" con los nuevos valores..

Muchas Gracias.!

Pd: Voy a probar hasta que funcione y les aviso.!
Título: Re:Duda - Tema CU00625B Aprender a Programar en Java desde Cero
Publicado por: emma en 14 de Marzo 2015, 01:21
Ahí le encontré un error, en el método getNumeroDocumentoIdentidad, le había puesto Indentidad y me funcionó, pero en los demás setters, como por ej: el nombre, el apellido, y la edad, sigue sin permitirme modificarlos !!
Título: Re:Duda - Tema CU00625B Aprender a Programar en Java desde Cero
Publicado por: emma en 14 de Marzo 2015, 01:34
Ya está, solucionado resulta que le puse el mismo nombre que el atributo..y entonces no me actualizaba.!

//Atributos
   private String nombre;
   private String apellido;
   private int edad;
   private boolean casado;
   private int numeroDocumentoIdentidad;

....

   //Métodos para establecer los valores de los atributos
    public void setNombre(String nombre){
       
        nombre = nombre;
       
    }

Un error básico y no me dí cuenta..que cabeza !!!  ;) ;D ;D
Título: Re:Duda - Tema CU00625B Aprender a Programar en Java desde Cero
Publicado por: Jorge lopez en 14 de Marzo 2015, 01:46
 Hola emma!

El problema esta en el valor que asignas a las variables de instancia (nombre = nombre) donde java interpreta que estas asignando su propio valor inicial a una misma variable y no el valor del atributo del método, (String nombre) así cada vez que invoques un método set, setNombre  por ejemplo, estarás asignando como valor el String"desconocido" (valor de la variable nombre en el constructor) aunque cuando invoques el método escribas el String "juan"
       
Para solucionarlo vasta con cambiar el nombre del atributo del método setNombre por un nombre diferente al de la variale de instancia nombre, valorNombre por ejemplo y declarar que nombre = valorNombre. Mas adelante en el curso veras otra forma de solucionar esto con la palabra clave this.
Título: Re:Duda - Tema CU00625B Aprender a Programar en Java desde Cero
Publicado por: Jorge lopez en 14 de Marzo 2015, 01:50
Parece que encontraste el error mientras yo preparaba una respuesta a tu duda.

Bien hecho!

Saludos!!