Guía de programación en Java > Getters y Setters
Introducción
En la POO, los métodos Getters y Setters desempeñan un papel crucial en la gestión de datos de una clase. Permiten acceder y modificar los atributos privados de una manera controlada y segura, cumpliendo con el principio de encapsulación.
En esta sesión aprenderás:
- Qué son los Getters y Setters.
- Por qué son importantes.
- Cómo implementarlos y utilizarlos en tus programas.
¿Qué son los Getters y Setters?
Getters
Un Getter es un método que se utiliza para obtener el valor de un atributo privado de una clase. Su nombre suele comenzar con la palabra get
seguida del nombre del atributo con la primera letra en mayúscula.
Setters
Un Setter es un método que permite establecer o modificar el valor de un atributo privado. Su nombre suele comenzar con set
seguido del nombre del atributo con la primera letra en mayúscula.
Razón de ser de los Getters y Setters
- Encapsulación: los atributos de una clase se declaran como
private
para evitar el acceso directo desde fuera de la clase. Esto protege los datos y garantiza que solo se puedan modificar de manera controlada. - Validación: los Setters pueden incluir lógica para validar los valores antes de asignarlos, asegurando que los datos sean correctos.
- Mantenibilidad: al usar Getters y Setters, es más fácil realizar el mantenimiento de la clase. Te aseguras poder cambios en la implementación interna de una clase sin afectar a otras partes del código.
- Control: los Getters y Setters permiten controlar qué atributos son accesibles y cómo se pueden modificar.
Ejemplo Básico de Getters y Setters
Clase sin Getters ni Setters
class Persona {
String nombre;
int edad;
}
public class Main {
public static void main(String[] args) {
Persona persona = new Persona();
persona.nombre = "Juan"; // Acceso directo
persona.edad = 25; // Acceso directo
System.out.println("Nombre: " + persona.nombre);
System.out.println("Edad: " + persona.edad);
}
}
Problema:
El acceso directo no permite validar o controlar los valores que se asignan. Por ejemplo, podrías asignar una edad negativa, lo cual no tiene sentido.
Clase con Getters y Setters
class Persona {
private String nombre;
private int edad;
// Getter para nombre
public String getNombre() {
return nombre;
}
// Setter para nombre
public void setNombre(String nombre) {
this.nombre = nombre;
}
// Getter para edad
public int getEdad() {
return edad;
}
// Setter para edad
public void setEdad(int edad) {
if (edad >= 0) { // Validación
this.edad = edad;
} else {
System.out.println("La edad no puede ser negativa.");
}
}
}
public class Main {
public static void main(String[] args) {
Persona persona = new Persona();
persona.setNombre("Juan");
persona.setEdad(25);
System.out.println("Nombre: " + persona.getNombre());
System.out.println("Edad: " + persona.getEdad());
}
}
Salida:
Nombre: Juan
Edad: 25
En este ejemplo:
- Se valida que la edad no sea negativa.
- Los atributos están protegidos y no son accesibles directamente.
Buenas Prácticas
- Nombres claros: usa nombres descriptivos para los métodos, siguiendo la convención
get
yset
. Cuando un atributo es de tipoboolean
o de la claseBoolean
, como prefijo del getter se utilizais
. - Validación en los Setters: asegúrate de incluir lógica para evitar datos inconsistentes.
- Haz que los atributos sean
private
: protege los datos internos de la clase. - Usa Getters y Setters solo cuando sea necesario. Si un atributo no requiere validación o control, considera declararlo como
public final
si su valor no cambia.
Ejercicio Propuesto
Crea una clase llamada Coche
con los siguientes atributos:
marca
(String)modelo
(String)velocidadMaxima
(int)
Define los Getters y Setters para cada atributo y asegúrate de que:
- La velocidad máxima no pueda ser negativa.
Crea una clase Main
para probar los métodos. Salida esperada:
Marca: Toyota
Modelo: Corolla
Velocidad Máxima: 180 km/h
Resumen
- Los Getters y Setters son esenciales para aplicar el principio de encapsulación en POO.
- Los Getters permiten acceder a los valores de los atributos privados.
- Los Setters permiten modificar esos valores de manera controlada.
Con estos conceptos, estarás preparado para trabajar con datos de forma segura y eficiente en tus programas. ¡Practica mucho y verás cómo dominarás los Getters y Setters rápidamente! 🚀
Deja una respuesta