En programación Modular, y más específicamente en programación orientada a objetos, se denomina Encapsulamiento al ocultamiento del estado, es decir, de los datos miembro de un objeto de manera que sólo se pueda cambiar mediante las operaciones definidas para ese objeto
2. Solo basta con pensar en una cápsula de una nave espacial, una cápsula
médica, o un envase para alimentos. Esa es la idea de que hay algo que
rodea al código, para proteger esos contenidos, agrupar esos atributos y
sus conductas en una misma unidad.
Pero también se puede restringir el acceso a los mecanismos internos de
una clase, se lo conoce también como ocultamiento de datos.
Un objeto no debe revelar nada de sí mismo excepto lo estrictamente
necesario.
3. Por ejemplo en nuestra clase cuenta bancaria no queremos que alguna otra
parte de nuestra aplicación pueda introducirse y cambiar ciertas propiedades
como saldo y otros sin pasar por determinados comportamientos. Los cuales
deben modificarse solo con los métodos propios del objeto.
Este concepto también se lo conoce como el método de la "caja negra" o
"black box", se sabe lo que entra y lo que sale de la caja negra, pero no
sabemos los procesos que suceden dentro de la caja.
4. Ejemplo 1: De un televisor, el usuario conoce su apariencia y parte de su
funcionamiento. Sólo le importa que funcionen el selector de canales, el video y el
audio; no le interesa saber cómo funciona cada una de las partes internas del aparato,
ese detalle sólo le interesan al fabricante y al técnico de servicio.
Ejemplo 2: De un animal no sólo es necesario conocer su apariencia; también se
requiere conocer qué sabe hacer y cómo reacciona ante determinadas situaciones.
5. Formas de encapsular
Estándar (Predeterminado)
Abierto: Hace que el miembro de la clase pueda ser accedido desde el exterior
de la Clase y cualquier parte del programa.
Protegido: Solo es accesible desde la Clase y las clases que heredan (a cualquier
nivel).
Semi cerrado: Solo es accesible desde la clase heredada.
Cerrado: Solo es accesible desde la Clase.
En el encapsulamiento hay analizadores que pueden ser semánticos y
sintácticos.