7.6 Encapsulamiento y visibilidad

Una característica de los objetos es que mantienen unidos o encapsulados sus miembros, es decir sus características (atributos) y su comportamiento (métodos). Además, un principio básico en programación orientada a objetos es la ocultación de la información que significa que, a determinados miembros de un objeto, no se puede acceder por funciones externas a la clase. Para controlar el acceso a los miembros de una clase se utilizan tres diferentes especificadores de acceso: público, privado y protegido.

El mecanismo principal para ocultar datos es ponerlos en una clase y hacerlos privados. A los datos o funciones privados sólo se puede acceder desde dentro de la clase. Por el contrario los datos o funciones públicos son accesibles desde el exterior de la clase. Los miembros protegidos son accesibles por funciones miembro de la misma clase o de clases derivadas, así como por clases amigas. Normalmente una clase debe tener sus atributos/campos privados y todos o casi todos sus métodos públicos. Las reglas de visibilidad complementan el concepto de encapsulamiento de forma que las estructuras de datos internas utilizadas en la implementación de una clase no pueden ser accesibles directamente. Cuando una clase tiene su estructura interna oculta, privada, se facilita el mantenimiento del software, ya que se podrá mejorar la estructura de la clase sin tener que modificar los programas que la utilizan.