12.6 Métodos de encapsulación y acceso (Getters y Setters)

La encapsulación es uno de los cuatro pilares fundamentales de la programación orientada a objetos (POO), junto con la herencia, el polimorfismo y la abstracción. La encapsulación es la práctica de mantener privados los campos (variables de instancia) de una clase y proporcionar acceso a ellos a través de métodos públicos. Esto se hace para mantener el control sobre los valores que se establecen y obtienen, y para proteger la integridad de los datos que posee la clase.

Los métodos de acceso, conocidos como captadores y definidores, son la forma estándar de implementar la encapsulación en Java. Son métodos públicos que sirven para obtener (get) y fijar (set) el valor de campos privados de una clase.

Convenciones de nomenclatura para captadores y definidores

En Java, existe una convención de nomenclatura bien establecida para captadores y definidores que ayuda a mantener el código legible, coherente y accesible para otras herramientas y marcos que dependen de estas convenciones.

Para un campo llamado name, por ejemplo, el captador se llamaría getName() y el definidor se llamaría setName(). . Esta convención se aplica a todos los campos, con algunas reglas específicas para los campos booleanos, donde el captador a menudo comienza con is en lugar de get, como isActive() a un campo llamado active.

Estas son las reglas generales para nombrar captadores y definidores:

  • Getters: El método comienza con la palabra get seguida del nombre del campo con la primera letra en mayúscula. Si el campo es de tipo booleano, también puedes usar is en lugar de get.
  • Establecedores: El método comienza con la palabra set seguida del nombre del campo con la primera letra en mayúscula.

Estos métodos deben marcarse como públicos para que se pueda acceder a ellos desde fuera de la clase. Además, el método de establecimiento generalmente devuelve void y acepta un parámetro del mismo tipo que el campo que está definiendo, mientras que el método de obtención devuelve un valor del mismo tipo que el campo.

Ejemplo de implementación de Getters y Setters


Persona de clase pública {
    nombre de cadena privada;
    edad privada;
    booleano privado activo;
    
    // Captador para el campo de nombre
    cadena pública getName() {
        nombre de retorno;
    }
    
    // Establecedor del campo de nombre
    setName público vacío (nombre de cadena) {
        this.nombre = nombre;
    }
    
    // Getter para el campo de edad
    público int getAge() {
        edad de retorno;
    }
    
    // Establecedor del campo de edad
    setAge público vacío (int edad) {
        this.age = edad;
    }
    
    // Captador para el campo activo (tenga en cuenta el uso de 'is' en lugar de 'get')
    público booleano isActive() {
        volver activo;
    }
    
    // Establecedor del campo activo
    public void setActive (booleano activo) {
        this.active = activo;
    }
}

¿Por qué utilizar captadores y definidores?

Aunque puede parecer más sencillo acceder a los campos directamente, existen varias ventajas al utilizar captadores y definidores:

  • Control de acceso: puede controlar si un campo es de solo lectura o de solo escritura, o si debe seguir ciertas reglas de validación cuando se define.
  • Ocultación de implementación: la clase puede cambiar la forma en que se almacenan los datos internamente sin afectar las clases que los usan.
  • Flexibilidad: puede agregar lógica adicional a los métodos de acceso, como notificar a otros objetos sobre cambios en el valor, realizar validaciones o incluso posponer el cálculo del valor hasta que realmente sea necesario (lazy cargando).
  • Compatibilidad de marcos: muchos marcos de Java, como Spring e Hibernate, dependen de captadores y definidores para funcionar correctamente.

Es importante tener en cuenta que, aunque los captadores y definidores son una práctica común, no son obligatorios. En algunos casos, cuando la clase es muy simple y no requiere control adicional sobre sus campos, puede ser aceptable exponer los campos directamente. Sin embargo, esto debe hacerse con precaución y comprendiendo las consecuencias para la mantenibilidad y flexibilidad del código.

En resumen, los captadores y definidores son una parte crucial de la encapsulación en Java. Proporcionan una interfaz controlada para acceder y modificar los campos de una clase mientras mantienen la integridad y flexibilidad del código. Seguir las convenciones de nomenclatura de estos métodos es esencial para mantener la coherencia y garantizar la interacción adecuada con otras partes del ecosistema Java.

Ahora responde el ejercicio sobre el contenido:

¿Cuál de las siguientes afirmaciones sobre encapsulación y métodos de acceso en Java es correcta?

¡Tienes razón! Felicitaciones, ahora pasa a la página siguiente.

¡Tú error! Inténtalo de nuevo.

Imagen del artículo Métodos de encapsulación y acceso (captadores y definidores): uso de captadores y definidores para el control de acceso 81

Siguiente página del libro electrónico gratuito:

Métodos de encapsulación y acceso (captadores y definidores): uso de captadores y definidores para el control de acceso

Tiempo estimado de lectura: 6 minutos

Descarga la aplicación para obtener una certificación gratuita y escuchar cursos en segundo plano, incluso con la pantalla apagada.
  • ¡Lee este curso en la aplicación para obtener tu Certificado Digital!
  • Escucha este curso en la aplicación sin tener que encender la pantalla de tu celular;
  • Obtén acceso 100% gratuito a más de 4000 cursos en línea en video y audio;
  • + Cientos de ejercicios + Historias educativas.

+ 6,5 millones
estudiantes

Certificado gratuito y
válido con código QR

48 mil ejercicios
gratis

Calificación de 4.8/5
en tiendas de aplicaciones

Cursos gratuitos de
vídeo, audio y texto.