Autor Tema: Duda - Tema CU00625B con Java y BlueJ no establece bien los atributos de clase  (Leído 4100 veces)

emma

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 22
    • Ver Perfil
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.!
« Última modificación: 15 de Marzo 2015, 19:15 por Alex Rodríguez »

emma

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 22
    • Ver Perfil
Re:Duda - Tema CU00625B Aprender a Programar en Java desde Cero
« Respuesta #1 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 !!

emma

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 22
    • Ver Perfil
Re:Duda - Tema CU00625B Aprender a Programar en Java desde Cero
« Respuesta #2 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

Jorge lopez

  • Sniper
  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 248
  • @SniperOfElite
    • Ver Perfil
Re:Duda - Tema CU00625B Aprender a Programar en Java desde Cero
« Respuesta #3 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.
while(estesVivo)
{
  aprende();
  ayuda();
  enseña();
}
if(mueres){teRecordaran();}

Jorge lopez

  • Sniper
  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 248
  • @SniperOfElite
    • Ver Perfil
Re:Duda - Tema CU00625B Aprender a Programar en Java desde Cero
« Respuesta #4 en: 14 de Marzo 2015, 01:50 »
Parece que encontraste el error mientras yo preparaba una respuesta a tu duda.

Bien hecho!

Saludos!!
while(estesVivo)
{
  aprende();
  ayuda();
  enseña();
}
if(mueres){teRecordaran();}

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".