Métodos Getters y Setters

Hasta ahora sólo hemos creado una clase persona, la cual podemos crear cuantos objetos queramos construyéndolos a través de su constructor. También tenemos un método que visualiza todos los datos del objeto (persona) y uno que dice si es mayor o menor de edad, pero si volvemos a revisar la clase al momento de querer visualizar u obtener un dato de la persona no se puede ya que los atributos están declarados como privados y no se puede acceder a esa información. ¿Cómo es posible obtener la información de algún atributo de una clase?.

 

Hay métodos que no son de utilidad para obtener o almacenar algún valor de un atributo de una clase, comúnmente son llamados getters y setters.

 

 

Los getters (de la palabra inglés get - obtener) indica que podemos tomar algún valor de un atributo y los setters (de la palabra ingles set-poner/fijar) podemos guardar algún valor sobre un atributo. Son importantes al momento de crear una clase objeto ya que de ellos dependen el valor que pueden tomar los atributos o para modificar algún atributo sin necesidad de modificar algún otro atributo.

Creación de Getters y Setters

Hay una estructura para crear los getters y setters, en los métodos getters siempre nos retornará el valor del atributo sin necesidad de pasar ningún parámetros, mientras que en los métodos setters siempre nos pedirá algún valor como parámetro para guardarlo al atributo de la clase, y éste nunca deberá retornar algún valor.

 

Nota: El nombre del método depende de cada programador, pero para tomar un buen estilo de programación es recomendable anteponer la palabra get o set y el nombre del atributo utilizando la notación camello.

 

Ejemplo de los métodos get de la clase Persona.

public String getNombre() {
        return nombre;
}

public String getApellidoPaterno() {
        return apellidoPaterno;
}

public String getApellidoMaterno() {
        return apellidoMaterno;
}

public char getSexo() {
        return sexo;
}

public int getEdad() {
        return edad;
}

public String getDireccion() {
        return direccion;
}

Ejemplo de los métodos set de la clase Persona.

 

 

Recordar el uso de la palabra reservada this y el uso de los parámetros.

public void setNombre(String nombre) {
        this.nombre = nombre;
}

public void setApellidoPaterno(String apellidoPaterno) {
        this.apellidoPaterno = apellidoPaterno;
}

public void setApellidoMaterno(String apellidoMaterno) {
        this.apellidoMaterno = apellidoMaterno;
}

public void setSexo(char sexo) {
        this.sexo = sexo;
}

public void setEdad(int edad) {
        this.edad = edad;
}

public void setDireccion(String direccion) {
        this.direccion = direccion;
}

Generar Getters y Setters con Eclipse

Como utilizamos el IDE eclipse, éste nos facilita la tarea de escribir todos estos métodos, sólo hay que hacer los siguiente:

 

  • Click derecho en el área de trabajo.
  • Posicionar el puntero en Source.
  • Seleccionar Generate Getters and Setters

 

 

Eclipse getters y setters

 

Saldrá la siguiente ventana: 

ventana getters y setter

 

En esta ventana podemos elegir de que atributos queremos que se creen los métodos, podemos seleccionar que solo se creen los gettes o los setters, así como el modificador de acceso de los métodos y el espacio en donde se van a crear. Damos ok y se generaran todos los métodos automáticamente.

metodos publicos

Implementación de los métodos getters y setters

 

Para implementar estos métodos nos vamos a la clase Principal que contiene el método main, creamos algunos objetos “Persona” con un constructor por defecto (Que tendrá todos los atributos vacíos) y llamamos a los métodos set para asignarle datos a los atributos, después visualizamos los datos obteniéndolos con los métodos get.

//Guardamos los datos
Persona persona=new Persona();
persona.setNombre("Linda");
persona.setApellidoPaterno("Gómez");
persona.setApellidoMaterno("Pérez");
persona.setSexo('M');
persona.setEdad(28);
persona.setDireccion("Calle Ariban, Madrid");
                
//Obtenemos los datos y los imprimimos
String nombre=persona.getNombre();
String app=persona.getApellidoPaterno();
String apm=persona.getApellidoMaterno();
char sexo=persona.getSexo();
int edad=persona.getEdad();
String direccion=persona.getDireccion();
                
System.out.println("Los datos de la persona son: "+nombre+", "+app+", "+apm+", "+sexo+", "+edad+", "+direccion

Si se observa la variable que declaramos para obtener el dato es del mismo tipo que retorna el método get, de lo contrario habría error de compilación, ya que no se puede asignar a una variable de tipo String el valor de un método que retorne un int, etc.

Código Completo utilizado

Clase Persona

package pqtObjetos;

public class Persona {

        //Atributos
        private String nombre;
        private String apellidoPaterno;
        private String apellidoMaterno;
        private char sexo;
        private int edad;
        private String direccion;
        
        //Constructor por defecto
        public Persona(){
                
        }
        //Constructor de copia
        public Persona(Persona persona){
                this.nombre=persona.nombre;
                this.apellidoPaterno=persona.apellidoPaterno;
                this.apellidoMaterno=persona.apellidoMaterno;
                this.sexo=persona.sexo;
                this.edad=persona.edad;
                this.direccion=persona.direccion;
        }
        
        //Constructor común
        public Persona(String nom, String app, String apm, char sexo, int edad, String dir){
                this.nombre=nom;
                this.apellidoPaterno=app;
                this.apellidoMaterno=apm;
                this.sexo=sexo;
                this.edad=edad;
                this.direccion=dir;
        }
        
        public void mayorEdad(int edad){
                if(edad>18)
                        System.out.println("Es mayor de edad");
                else
                        System.out.println("Es menor de edad");
        }
        
        public String mostrarDatos(Persona persona){
                String datos="Los datos son: \n";
                datos+=persona.nombre+"\n";
                datos+=persona.apellidoPaterno+"\n";
                datos+=persona.apellidoMaterno+"\n";
                datos+=persona.sexo+"\n";
                datos+=persona.edad+"\n";
                datos+=persona.direccion+"\n";
                return datos;
        }
        
        public String getNombre() {
                return nombre;
        }
        public void setNombre(String nombre) {
                this.nombre = nombre;
        }
        public String getApellidoPaterno() {
                return apellidoPaterno;
        }
        public void setApellidoPaterno(String apellidoPaterno) {
                this.apellidoPaterno = apellidoPaterno;
        }
        public String getApellidoMaterno() {
                return apellidoMaterno;
        }
        public void setApellidoMaterno(String apellidoMaterno) {
                this.apellidoMaterno = apellidoMaterno;
        }
        public char getSexo() {
                return sexo;
        }
        public void setSexo(char sexo) {
                this.sexo = sexo;
        }
        public int getEdad() {
                return edad;
        }
        public void setEdad(int edad) {
                this.edad = edad;
        }
        public String getDireccion() {
                return direccion;
        }
        public void setDireccion(String direccion) {
                this.direccion = direccion;
        }
}

Clase Principal

package pqtObjetos;

public class Principal {

        public static void main(String[] args) {
                
                //Guardamos los datos
                Persona persona=new Persona();
                persona.setNombre("Linda");
                persona.setApellidoPaterno("Gómez");
                persona.setApellidoMaterno("Pérez");
                persona.setSexo('M');
                persona.setEdad(28);
                persona.setDireccion("Calle Ariban, Madrid");
                
                //Obtenemos los datos y los imprimimos
                String nombre=persona.getNombre();
                String app=persona.getApellidoPaterno();
                String apm=persona.getApellidoMaterno();
                char sexo=persona.getSexo();
                int edad=persona.getEdad();
                String direccion=persona.getDireccion();
                
                System.out.println("Los datos de la persona son: "+nombre+", "+app+", "+apm+", "+sexo+", "+edad+", "+direccion);
        }
        

}