Tanto set en java como el método get, se utilizan en la programación orientada a objetos para realizar dos tareas fundamentales.
Ya vimos como crear una clase persona y además, creamos objetos de tipo persona desde el método main tanto con el constructor por defecto, como con constructores personalizados.
Además, hemos visto que las características del objeto, las declaramos de forma privada (“private”). Esto quiere decir, que si necesitamos acceder a las propiedades del objeto persona (DNI, nombre o edad), desde el método main no sería posible, ya que se encontraba en otra clase.
Para poder acceder a estas propiedades, debemos utilizar lo que se conoce como métodos getter y setter.
Como acceder a los atributos de una clase.
Si nos fijamos en como hemos construido la clase en el ejemplo anterior, vemos que la clase tiene unas características o atributos y unos métodos constructores, tenemos sobrecarga de constructores, hasta aquí todo bien.
Ahora nos vamos a la clase donde tenemos el método main a construir un objeto persona con un constructor, pasándole el DNI, el nombre, y la edad.
package objetos;
public class Principal {
public static void main(String[] args) {
/* Creamos un objeto persona llamado nuevaPersona
* con el constructor pasandole 3 parámetros
* El DNI, el nombre y la edad*/
Persona nuevaPersona =new Persona("12345678X","Fran",35);
}
}
Hasta aquí todo sería correcto, ya que le estamos pasando los datos en el propio constructor. Pero en la inmensa mayoría de los casos, estos datos vienen almacenados en variables. Por tanto se nos puede ocurrir hacer lo siguiente:
package objetos;
public class Principal {
public static void main(String[] args) {
/* Creamos un objeto persona llamado nuevaPersona
* con el constructor pasandole 3 parámetros
* El DNI, el nombre y la edad*/
Persona nuevaPersona =new Persona(dni,nombre,edad);
nuevaPersona.dni="12345678X";
nuevaPersona.nombre="Fran";
nuevaPersona.edad=35;
}
}
En este caso, esto sería totalmente incorrecto, ya que al tener las variables dni, nombre y edad declaradas como privadas, el propio entorno de desarrollo, nos daría un error.
Por este motivo, para ello debemos utilizar los métodos get y set de java.
Que es y como crear setters. Set en java.
El método set es un método público, el cual se encarga de darle un valor a una propiedad o atributo de un objeto, el cual está encapsulado en la clase correspondiente, es decir, esta declarado con la palabra reservada private o protected.
Para declarar un método setter, lo haremos dentro de la clase persona y a continuación de los constructores de la siguiente manera. En este ejemplo declararemos los métodos set de las tres características del objeto persona.
/* Construimos el método set para establecer
* un valor al DNI de la persona. Este método
* recibe un parámetro pDni, que será lo que
* el usuario introduzca por teclado.*/
public void setDni(String pDni) {
this.dni = pDni;
}
/* Construimos el método set para establecer
* un valor al nombre de la persona. Este método
* recibe un parámetro pNombre, que será lo que
* el usuario introduzca por teclado.*/
public void setNombre(String pNombre) {
this.nombre = pNombre;
}
/* Construimos el método set para establecer
* un valor a la edad de la persona. Este método
* recibe un parámetro pEdad, que será lo que
* el usuario introduzca por teclado.*/
public void setEdad(int pEdad) {
this.edad = pEdad;
}
}
Que es y como crear getters. Get en java.
El método get al igual que el set, es un método público, pero el get se encarga de mostrar un valor a una propiedad o atributo de un objeto, el cual está encapsulado en la clase correspondiente, es decir, esta declarado con la palabra reservada private o protected.
Para declarar un método getter, lo haremos también dentro de la clase persona y a continuación de los métodos setter declarados anteriormente y de la siguiente manera. En este ejemplo declararemos los métodos get de las tres características del objeto persona.
/* Este método get, devuelve un valor del tipo
* String, ya que el dni se ha declarado como String
* y está devolviendo el valor que posee el atributo
* de la clase llamado dni que es de tipo String*/
public String getDni() {
return dni;
}
/* Este método get, devuelve un valor del tipo
* String, ya que el nombre se ha declarado como String
* y está devolviendo el valor que posee el atributo
* de la clase llamado nombre que es de tipo String*/
public String getNombre() {
return nombre;
}
/* Este método get, devuelve un valor del tipo
* entero (int), ya que el dni se ha declarado
* como entero (int) y está devolviendo el valor
* que posee el atributo de la clase
* llamado edad que es de tipo String*/
public int getEdad() {
return edad;
}
}
Ahora una vez que ya tenemos declarados los métodos get y set, podemos establecer valores a los nuevos objetos, y mostrarlos por pantalla.
Establecer valores a un objeto (set en java) y mostrarlo desde el método main (get en java).
package objetos;
//Importamos el paquete donde tenemos la clase Scanner
import java.util.*;
public class Principal {
public static void main(String[] args) {
/* Ahora declaramos tres variables
* y las iniciamos*/
String dniPersona="";
String nombrePersona="";
int edadPersona=0;
/* Declaramos un objeto de tipo Scanner*/
Scanner lectura=new Scanner(System.in);
/* Pedimos el DNI. Lo introducimos dentro
* de la variable dniPersona y dentro de
* un bucle while para que se repita
* la pregunta si la longitud no es correcta.*/
do {
System.out.println("Introduce un DNI:");
dniPersona=lectura.nextLine();
}while(dniPersona.equalsIgnoreCase("")
|| dniPersona.length()<8);
/* Pedimos el nombre. Lo introducimos dentro
* de la variabla nombrePersona y dentro de
* un bucle while para que se repita
* la pregunta si el nombre queda vacio*/
do {
System.out.println("Introduce un nombre:");
nombrePersona=lectura.nextLine();
}while(nombrePersona.equalsIgnoreCase(""));
/* Pedimos la edad. La introducimos dentro
* de la variabla edadPersona y dentro de
* un bucle while para que se repita
* la pregunta si el edad es cero*/
do {
System.out.println("Introduce una edad:");
edadPersona=lectura.nextInt();
}while(edadPersona==0);
/* Creamos una variable objeto de tipo persona
* y le pasamos las tres variables. */
Persona nuevaPersona=new Persona(dniPersona,nombrePersona,edadPersona);
/* El objeto nuevaPersona tiene ahora métodos
* set para asignar un valor a cada característica
* y get para mostrar el valor de cada característica.
* Los valores que queremos introducir están en las
* variables dniPersona, nombrePersona y edadPersona
* así que vamos a asignar valores al dni, al nombre
* y a la edad, a través de los métodos correspondientes*/
nuevaPersona.setDni(dniPersona);
nuevaPersona.setNombre(nombrePersona);
nuevaPersona.setEdad(edadPersona);
// Mostramos los datos de la persona por pantalla
System.out.println("El DNI es: " + nuevaPersona.getDni());
System.out.println("El nombre es: " + nuevaPersona.getNombre());
System.out.println("La edad es: " + nuevaPersona.getEdad());
}
}