Encapsulación (programación de computadoras)


En la programación orientada a objetos (OOP), la encapsulación se refiere a la agrupación de datos con los métodos que operan en esos datos, o la restricción del acceso directo a algunos de los componentes de un objeto. [1] La encapsulación se usa para ocultar los valores o el estado de un objeto de datos estructurados dentro de una clase , evitando el acceso directo a ellos por parte de los clientes de una manera que podría exponer detalles de implementación ocultos o violar la invariancia de estado mantenida por los métodos.

Los métodos de acceso público generalmente se proporcionan en la clase para acceder o modificar el estado de manera más abstracta. En la práctica, a veces se proporcionan métodos (los denominados "captadores" y "definidores" ) para acceder a los valores indirectamente, pero, aunque no necesariamente una violación de la encapsulación abstracta, a menudo se consideran una señal de programación orientada a objetos potencialmente deficiente. (POO) práctica de diseño [2] (un antipatrón ).

Este mecanismo no es exclusivo de la programación orientada a objetos. Las implementaciones de tipos de datos abstractos , por ejemplo, módulos , ofrecen una forma similar de encapsulación. La similitud ha sido explicada por los teóricos del lenguaje de programación en términos de tipos existenciales . [3]

En los lenguajes de programación orientados a objetos y otros campos relacionados, la encapsulación se refiere a una de dos nociones relacionadas pero distintas y, a veces, a la combinación de las mismas: [4] [5]

Algunos investigadores y académicos de lenguajes de programación usan el primer significado solo o en combinación con el segundo como una característica distintiva de la programación orientada a objetos , mientras que algunos lenguajes de programación que proporcionan cierres léxicos ven la encapsulación como una característica del lenguaje ortogonal a la orientación a objetos.

La segunda definición está motivada por el hecho de que en muchos lenguajes orientados a objetos y otros campos relacionados, los componentes no se ocultan automáticamente y esto puede anularse; por lo tanto, la ocultación de información se define como una noción separada por aquellos que prefieren la segunda definición.