1. Inicio
  2. Tecnología
  3. Encapsulamiento

Significado de Encapsulamiento

Sustantivo masculino. Derivado de «encapsular», y este de «cápsula» (del latín capsula, diminutivo de capsa, «caja»). En informática calca el inglés encapsulation.

El encapsulamiento es el principio de programación que agrupa los datos de un objeto junto con los métodos que operan sobre ellos, y restringe el acceso directo a esos datos desde fuera del objeto.

Es uno de los cuatro pilares habituales de la programación orientada a objetos, junto con la abstracción, la herencia y el polimorfismo, y su objetivo principal es proteger los datos de modificaciones inesperadas.

Qué es el encapsulamiento

Pensemos en una clase CuentaBancaria que guarda un dato llamado saldo. Sin encapsulamiento, cualquier parte del programa podría cambiar ese saldo directamente, incluso a un valor negativo sin sentido. Con encapsulamiento, el dato saldo queda oculto dentro del objeto, y solo se puede modificar llamando a métodos propios de la clase, como ingresar(cantidad) o retirar(cantidad), que comprueban antes que la operación sea válida.

Esa restricción no busca esconder información por esconderla, sino evitar que el estado interno de un objeto quede en una situación incoherente por un cambio hecho desde fuera sin pasar por las comprobaciones adecuadas. El objeto es responsable de mantener sus propios datos correctos en todo momento.

Lo estudia la programación orientada a objetos, dentro del diseño de software, y se aplica mediante mecanismos del lenguaje que declaran ciertos datos o métodos como accesibles solo desde dentro de la propia clase.

Origen de la palabra encapsulamiento

Deriva de «encapsular», formado sobre «cápsula», del latín capsula, diminutivo de capsa, «caja, cofre». La idea de meter algo dentro de una cápsula que lo protege y lo separa del exterior se trasladó, en informática, al gesto de envolver datos y comportamiento dentro de un mismo objeto. En inglés, la voz equivalente es encapsulation.

El concepto se consolidó con la difusión de la programación orientada a objetos a partir de los años setenta y ochenta, cuando varios lenguajes empezaron a incorporar mecanismos explícitos para declarar qué partes de una clase podían usarse desde fuera y cuáles quedaban reservadas a su funcionamiento interno.

Niveles de acceso en el encapsulamiento

NivelEn qué consisteEjemplo
PrivadoSolo es accesible desde dentro de la propia clase.El dato saldo de una clase CuentaBancaria.
ProtegidoAccesible desde la propia clase y desde las clases que heredan de ella.Un método interno que una subclase necesita reutilizar.
PúblicoAccesible desde cualquier parte del programa.El método consultarSaldo(), pensado para usarse desde fuera.

Los métodos públicos que permiten leer o modificar de forma controlada un dato privado suelen llamarse «accesores» o, con el término inglés, getters y setters: funciones sencillas que actúan de intermediarias entre el exterior y el dato protegido.

Ejemplos de uso de encapsulamiento

Gracias al encapsulamiento, la clase Termostato impide que se fije una temperatura fuera del rango permitido, porque toda modificación pasa por un método que la valida.

El equipo revisó el código y encontró varios datos sin encapsulamiento que cualquier parte del programa podía cambiar sin control.

En la clase Empleado, el salario tiene encapsulamiento: solo puede consultarse mediante un método, nunca modificarse directamente desde fuera.

El profesor explicó el encapsulamiento comparándolo con el salpicadero de un coche, que muestra información y ofrece controles sin exponer el motor.

Sinónimos y palabras relacionadas

Sinónimos: ocultación de información (con un matiz próximo, más centrado en el resultado que en el mecanismo).

Antónimos: exposición directa de datos, acceso sin restricciones.

No es lo mismo que:

Preguntas frecuentes sobre encapsulamiento

¿Para qué sirve el encapsulamiento en programación?

Sirve para proteger los datos de un objeto frente a modificaciones que no pasen por las comprobaciones adecuadas, y para poder cambiar la implementación interna de una clase sin afectar al código que la usa desde fuera.

¿Qué diferencia hay entre encapsulamiento y abstracción?

La abstracción decide qué información es relevante mostrar a quien usa un objeto; el encapsulamiento es el mecanismo concreto que oculta y protege los datos internos, restringiendo el acceso directo a ellos.

¿Qué son los getters y setters?

Son métodos públicos que permiten leer (getter) o modificar (setter) de forma controlada un dato que el encapsulamiento mantiene privado, aplicando comprobaciones antes de aceptar un cambio.

Ver también