Ocultación de información


En ciencias de la computación , la ocultación de información es el principio de segregación de las decisiones de diseño en un programa de computadora que es más probable que cambien, protegiendo así otras partes del programa de modificaciones extensas si se cambia la decisión de diseño. La protección implica proporcionar una interfaz estable que protege el resto del programa de la implementación (cuyos detalles probablemente cambien). Escrito de otra manera, el ocultamiento de información es la capacidad de evitar que ciertos aspectos de una clase o componente de software sean accesibles a sus clientes., utilizando características del lenguaje de programación (como variables privadas) o una política de exportación explícita.

El término encapsulación a menudo se usa indistintamente con ocultación de información. Sin embargo, no todos están de acuerdo en las distinciones entre los dos; uno puede pensar en la ocultación de información como el principio y la encapsulación como la técnica. Un módulo de software oculta información encapsulando la información en un módulo u otra construcción que presenta una interfaz. [1]

Un uso común de la ocultación de información es ocultar el diseño de almacenamiento físico para los datos, de modo que si se cambia, el cambio se restringe a un pequeño subconjunto del programa total. Por ejemplo, si un punto tridimensional ( x , y , z ) se representa en un programa con tres variables escalares de coma flotante y luego, la representación se cambia a una única variable de matriz de tamaño tres, un módulo diseñado con información oculta en Mind protegería el resto del programa de tal cambio.

En la programación orientada a objetos , la ocultación de información (mediante el anidamiento de tipos) reduce el riesgo de desarrollo de software al cambiar la dependencia del código de una implementación incierta (decisión de diseño) a una interfaz bien definida . Los clientes de la interfaz realizan operaciones puramente a través de la interfaz, por lo que, si cambia la implementación, los clientes no tienen que cambiar.

En su libro sobre diseño orientado a objetos , Grady Booch definió la encapsulación como "el proceso de compartimentar los elementos de una abstracción que constituyen su estructura y comportamiento; la encapsulación sirve para separar la interfaz contractual de una abstracción y su implementación". [2]

El propósito es lograr el potencial de cambio: los mecanismos internos del componente se pueden mejorar sin afectar a otros componentes, o el componente se puede reemplazar por uno diferente que admita la misma interfaz pública. La encapsulación también protege la integridad del componente, al evitar que los usuarios establezcan los datos internos del componente en un estado no válido o inconsistente. Otro beneficio de la encapsulación es que reduce la complejidad del sistema y, por lo tanto, aumenta la robustez, al limitar las interdependencias entre los componentes del software. [2]