La encapsulación es un concepto importante en la programación orientada a objetos. Descubra todo lo que hay que saber al respecto.
La encapsulación es un mecanismo para reunir datos y métodos dentro de una estructura ocultando la implementación del objeto, es decir, impidiendo el acceso a los datos por cualquier medio que no sean los servicios propuestos. La encapsulación permite, por tanto, garantizar la integridad de los datos contenidos en el objeto. Por lo tanto, si queremos proteger la información contra modificaciones inesperadas, debemos recurrir al principio de encapsulación.
Enmascaramiento de la información
En Java, como en muchos lenguajes de programación orientados a objetos, las clases, los atributos y los métodos tienen niveles de accesibilidad, que indican en qué circunstancias se puede acceder a estos elementos.
El usuario de una clase no tiene por qué saber cómo se estructuran los datos del objeto, es decir, su implementación. Así, prohibiendo al usuario modificar directamente los atributos, y obligándole a utilizar las funciones definidas para modificarlos (denominadas interfaces), conseguimos garantizar la integridad de los datos. Por ejemplo, se puede asegurar que el tipo de datos proporcionados se ajusta a las expectativas, o que los datos están en el rango esperado.
La encapsulación permite definir niveles de visibilidad para los elementos de la clase. Estos niveles de visibilidad definen los derechos de acceso a los datos en función de si se accede a ellos mediante un método de la propia clase, de una clase heredada o de cualquier otra clase. Hay cuatro niveles de visibilidad :
- Visibilidad por defecto : no se especifica ningún modificador de visibilidad.
- Visibilidad pública : las funciones de todas las clases pueden acceder a los datos o métodos de una clase definida con el nivel de visibilidad «público». Este es el nivel más bajo de protección de datos.
- Visibilidad protegida : el acceso a los datos está restringido a las funciones de las clases heredadas, es decir, por las funciones miembro de la clase y las clases derivadas. Así, un atributo o un método declarado «protegido» es accesible sólo a las clases de un paquete y a sus subclases, aunque estén definidas en un paquete diferente.
- Visibilidad privada : el acceso a los datos se limita a los métodos de la propia clase. Este es el nivel más alto de protección de datos
¿Cómo elegir el nivel de visibilidad de los diferentes elementos de una clase?
La verdadera dificultad radica en determinar el nivel de visibilidad «adecuado» para los diferentes elementos de la clase. En general, siempre es aconsejable tratar de proteger el código al máximo del mundo exterior y, por tanto, definir el mínimo nivel de accesibilidad posible. A continuación, será necesario considerar el nivel de sensibilidad de cada elemento y el impacto que cada nivel de acceso a un elemento puede tener sobre el resto de una clase, al tiempo que se identifican los diversos otros elementos que necesitarán acceder a este elemento para funcionar.