5.2 Encapsulamiento de la clase

Anuncio
ENCAPSULAMIENTO Y OCULTACIÓN DE LA INFORMACIÓN
Por: Alberto Restrepo V.
Hernán Dario Toro E.
Una clase tiene dos vistas: la exterior, en donde se hace énfasis la abstracción y
se oculta la estructura y secretos de comportamiento; y la vista interior o
implementación, y es aquí donde es indispensable hacer uso del concepto de
encapsulado.
Una instancia de una clase, almacena sus datos dentro de él. Se tiene acceso a
los datos y se les modifica sólo mediante operaciones permisibles. Esta restricción
al acceso se debe al encapsulado. El encapsulado protege los datos del uso
arbitrario o no permitido. El acceso o la actualización directa de los datos de un
objeto por parte del usuario violaría el encapsulado.
Al encapsular u ocultar información se separan los aspectos externos de un objeto
(los accesibles para todos) de los detalles de implementación (los accesibles para
nadie). Con esto se trata de lograr que al tener algún cambio en la implementación
de un objeto no se tengan que modificar los programas que utilizan tal objeto.
Volviendo con el ejemplo del automóvil, se sabe que existen diversos mecanismos
para su funcionamiento. En particular se tiene el sistema de frenado que todo
mundo sabe que sirve para detener el auto al pisar el pedal apropiado, pero sólo
un mecánico sabe los detalles de implementación. Por otro lado, si en algún
momento se cambia el tipo de frenos, para el conductor es transparente.
El encapsulado consiste pues en ocultar los detalles de implementación de un
objeto, pero a la vez se provee una interfaz pública por medio de sus operaciones
permitidas. Considerando lo anterior también se define el encapsulado como la
propiedad de los objetos de permitir el acceso a su estado únicamente a través de
su interfaz o de relaciones preestablecidas con otros objetos.
El encapsulado evita la corrupción de los datos de un objeto. Si todos los
programas pudieran tener acceso a los datos de cualquier forma que quisieran los
usuarios, los datos se podrían corromper o utilizar de mala manera. El
encapsulado protege los datos del uso arbitrario y no pretendido.
En el mundo OO lo que realmente importa es el comportamiento de los objetos, no
cómo está implementado ese comportamiento. Así, si la implementación de un
objeto cambia, pero su interfaz se mantiene igual, es decir, la forma como ese
objeto se relaciona con el mundo exterior, los objetos que interactúan con él, no
serán afectados por esos cambios. Además, el encapsulado oculta la complejidad
de la implementación. Esta propiedad de los objetos se vive en el mundo real en
muchas situaciones con las cajas negras. Tal es el caso de la labor de conducir un
automóvil: no es necesario que el conductor sepa de mecánica automotriz, sólo
tiene que saber cómo interactuar con el vehículo.
Concluyendo, internamente un objeto tiene algunas partes o componentes de las
que no necesariamente se conocen su construcción y de las cuales sólo se sabe
de su existencia por la reacción o respuesta que produce cuando otro objeto les
emite mensaje. Es decir, se conoce el qué pero no el cómo. Considerando el
objeto vehículo, se conoce la reacción que este produce cuando se le pisa su
acelerador (aumenta su velocidad) mas no se tiene que conocer el porqué de esta
reacción.
Los tipos de datos abstractos es el modo de realizar el encapsulamiento en
programación procedimental. Recuérdese que cuando se trabaja con los tipos de
datos abstractos, se trabaja a un nivel muy por encima de un lenguaje de
programación, y por tanto, no interesan para la elaboración de algoritmos
abstractos los detalles de implementación.
Un tipo de datos abstracto encapsula y oculta parte de la implementación del un
módulo. La interfaz suministra las operaciones que se deben hacer con los datos
ocultos.
En un sistema orientado a objetos, los objetos son las unidades de
encapsulamiento. El objeto encapsula su estado (datos) y su comportamiento
(operaciones). Las operaciones son el medio para manipular el estado. Dentro de
la comunidad dedicada al estudio de la tecnología de objetos, no hay todavía un
acuerdo con respecto al grado de encapsulamiento. Surge una pregunta bastante
interesante: ¿ Únicamente se deberían suministrar operaciones como interfaz o
también deberían ser accesibles los atributos desde el exterior de un objeto? Si
solamente se pueden utilizar operaciones para leer o escribir el estado de los
objetos, se estaría hablando de encapsulamiento fuerte. Si los datos y los métodos
pueden ser privados y públicos, se habla de encapsulamiento externo.
Fuente: http://dis.eafit.edu.co/cursos/st-051/encapsulamiento.html
Descargar