¿Qué es la ocultación de datos en C++? Explicación de la abstracción y la encapsulación
Publicado: 2021-05-24Tabla de contenido
Introducción a la ocultación de datos
Los datos son el componente más sensible y volátil de un programa que, si se manipula, puede generar una salida incorrecta y dañar la integridad de los datos. Aquí es donde la ocultación de datos resulta esencial. En la jerga técnica, la ocultación de datos, también conocida como ocultación de información, es un mecanismo de programación orientado a objetos (OOP) inherente para ocultar los detalles internos del objeto al usuario final.
El objetivo subyacente de la ocultación de datos es ocultar los datos dentro de una clase del acceso no autorizado y evitar la penetración innecesaria desde fuera de la clase. La ocultación de datos garantiza el acceso restringido a los datos para garantizar la integridad de los objetos y evitar cambios intencionales o no intencionados en el programa en cuestión.
En pocas palabras, la ocultación de datos toma ciertas partes del código de un programa y las filtra de los miembros del objeto. Si un miembro del objeto intenta acceder a datos ocultos, el programa devolverá un error. Este es un mecanismo de precaución introducido para garantizar que el programador se abstenga de conectarse a datos erróneos que se han ocultado. A menudo son los componentes internos sin necesidad previsible por parte del usuario los que están ocultos.
Ocultación de datos, abstracción de datos y encapsulación de datos
La ocultación de datos en C++ está estrechamente relacionada con otras dos propiedades de programación orientada a objetos: la abstracción y la encapsulación.
Abstracción de datos
La abstracción de datos es un mecanismo para exponer solo la interfaz del programa relevante al usuario final y ocultar los detalles de implementación más intrincados y complejos. Consideremos un ejemplo de la vida real para una mejor comprensión. Considere su televisor. Puede encender y apagar la televisión, cambiar el canal, ajustar su volumen y agregar componentes externos como VCR, reproductores de DVD y parlantes. Pero no conoces los mecanismos internos de la televisión.
No se da cuenta de cómo recibe las señales, las traduce y finalmente muestra la salida. Así, la televisión es un buen ejemplo de la separación entre la implementación interna y la influencia externa. Con la abstracción de datos, la implementación de clases está protegida contra errores involuntarios y evoluciona en respuesta a requisitos cambiantes o informes de errores sin interferencia a nivel de usuario.
Encapsulación de datos
La encapsulación de datos se refiere a la agrupación de datos y sus funciones relacionadas en una sola unidad llamada clase. Es decir, si tiene un atributo invisible desde el exterior de un objeto y lo agrupa con métodos que brindan acceso de lectura o escritura, puede ocultar información delicada y regular el acceso al estado interno de la cosa.
Por lo tanto, dependiendo de los métodos que implemente, tiene la responsabilidad de decidir si un atributo se puede leer y cambiar o si es de solo lectura o no se ve en absoluto.
Diferencia entre ocultación de datos y encapsulación de datos
Al hablar de OOP, la ocultación de datos y la encapsulación de datos a menudo se usan indistintamente porque ambas nociones cooperan para lograr un guardián auxiliar objetivo común de información confidencial. La idea de la encapsulación de datos es, sin duda, funcionalmente comparable a la ocultación de datos, pero dado que funcionan en diferentes niveles, son estructuralmente diferentes.
Aunque están intrínsecamente relacionados entre sí, existe una diferencia crucial entre la ocultación de datos y la encapsulación de datos.
- La principal diferencia entre la ocultación y la encapsulación de datos es que la primera se centra en mejorar la seguridad de los datos en el programa, mientras que la segunda se ocupa de ocultar la complejidad del programa.
- La ocultación de datos se concentra en la accesibilidad de un miembro de objeto dentro de una clase, mientras que la encapsulación de datos se enfoca en cómo se accede a los datos y cómo se comportan los diferentes objetos. La encapsulación se logra principalmente mediante la ocultación de información y no solo mediante la ocultación de información. Esto significa que el programador oculta las estructuras del miembro del objeto y oculta la implementación de todos sus métodos.
- Mientras que la ocultación de datos se enfoca en restringir el uso de datos en un programa para garantizar la seguridad de los datos, la encapsulación de datos se enfoca en envolver (o encapsular) los datos complejos para presentar una vista más simple al usuario.
- En la ocultación de datos, los datos deben definirse como privados únicamente. En la encapsulación de datos, los datos pueden ser públicos o privados.
- La ocultación de datos es tanto un proceso como una técnica en sí misma, mientras que la encapsulación de datos es un subproceso en la ocultación de datos.
Especificadores de acceso
C++ admite la ocultación de datos y, por extensión, la abstracción y encapsulación de datos a través de la creación de tipos definidos por el usuario, conocidos como clases. El alcance de los miembros de esta clase creada se define mediante palabras clave conocidas como especificadores de acceso. Por lo general, hay tres tipos de protección o especificadores de acceso disponibles dentro de una categoría: privada, protegida y pública, que se utilizan para construir las capacidades de encapsulación de la clase.
Los especificadores de acceso ayudan a definir cómo se puede acceder a las variables y funciones de un tipo desde fuera de la clase. Por lo general, los datos dentro de una clase son privados para eliminar instancias de manipulación accidental y sus operaciones son públicas. Sin embargo, la accesibilidad dentro de un rango no está sujeta a ninguna restricción.
Variables/funciones privadas: solo pueden acceder los miembros definidos como parte de la clase.
Variables/funciones públicas: se puede acceder desde cualquier parte del programa.
Variables/funciones protegidas Son privadas dentro de una clase y solo están disponibles para acceso remoto en la clase derivada.
Aplicación de ocultación de datos
Para comprender mejor la ocultación de datos, consideremos el siguiente ejemplo. Teniendo en cuenta que usted es el programador, supongamos que declara una clase con el nombre 'CheckAccount', en la que ha definido un miembro de datos con el término 'Balance', que se refiere al saldo de la cuenta bancaria de un usuario.
En este ejemplo particular, el miembro de datos 'Saldo' es información confidencial. Si bien puede ofrecer acceso a una aplicación externa para ver esta información confidencial, con toda probabilidad, no permitirá que esta aplicación externa altere los atributos de los datos almacenados en el 'Saldo' del miembro. Este resultado se puede lograr mediante la ocultación de datos y, más específicamente, se controla mediante el uso del especificador de acceso privado.
- La ocultación de datos se ejecuta comúnmente sobre datos que son impredecibles y delicados. Este tipo de datos es fundamental para ejecutar un programa con eficacia y rapidez. Debido al acceso indebido, los cambios de datos resultantes son permanentes y exigen una revisión completa por parte del programador antes de su uso posterior.
- La ocultación de datos ayuda a proteger a los miembros de la clase contra los pases por alto no intencionales. Una clase generalmente comprende varios campos relacionados que deben estar en un estado confiable. Supongamos que a un programador se le permite controlar cualquiera de estos campos directamente. En ese caso, existe la posibilidad de que pueda transformar un área sin cambiar los campos críticos relacionados, dejando a su clase en un estado de conflicto.
Beneficios de la ocultación de datos
Los beneficios de la ocultación de datos son múltiples:
- Se utiliza para reducir la imprevisibilidad y la complejidad de los datos.
- Mejora la reutilización del programa.
- Al limitar las interdependencias entre los componentes del software, también se reduce la complejidad del sistema para una mayor solidez.
- Oculta el diseño de almacenamiento físico de los datos. Esto ayuda a definir claramente la interfaz, mejora la legibilidad y la comprensión.
- Proporciona garantía de datos contra la corrupción y el acceso injustificado. En otras palabras, ayuda a ocultar datos importantes, lo que garantiza protocolos de seguridad elevados contra los piratas informáticos. Si todos los datos internos se hicieran públicos, los piratas informáticos podrían penetrar fácilmente en los datos internos y realizar cambios malintencionados para alterar el funcionamiento del programa. Ocultar los datos hace que sea mucho más difícil descifrar el código porque los datos ocultos aparecerán invisibles para los miembros externos de la clase y, por lo tanto, para el hacker.
- Las clases encapsuladas son sencillas, fáciles de administrar y facilitan el desarrollo futuro de la aplicación.
La desventaja de ocultar datos
La única desventaja de ocultar datos es la codificación adicional. La ocultación de datos requiere que los programadores escriban códigos más largos para crear el efecto deseado en los datos ocultos.
Aprenda cursos de ingeniería de software en línea de las mejores universidades del mundo. Obtenga programas Executive PG, programas de certificados avanzados o programas de maestría para acelerar su carrera.
Conclusión
La ocultación de datos es similar a un juego de ruleta rusa. En la ruleta rusa, solo uno de los seis hoyos tiene una bala. Imaginemos que el disparo es una amenaza de datos perceptible. ¿Estarías dispuesto a arriesgarte? Puede haber cinco escenarios que funcionen a su favor, pero ¿puede identificar específicamente la amenaza? La respuesta es no. Todos los escenarios soportan una carga probabilística igual de sospecha y miedo. En lugar de ceder ante esta incertidumbre, tome una posición contra las amenazas de datos. Vaya de incógnito con la ocultación de datos.
Si está interesado en obtener más información sobre Java, OOP y desarrollo de software de pila completa, consulte el programa Executive PG de upGrad & IIIT-B en desarrollo de software de pila completa, que está diseñado para profesionales que trabajan y ofrece más de 500 horas de formación rigurosa. Más de 9 proyectos y asignaciones, estado de exalumno de IIIT-B, proyectos finales prácticos prácticos y asistencia laboral con las mejores empresas.
¿Qué es la encapsulación en la programación orientada a objetos?
La encapsulación es una forma de vincular los datos y el código que opera en los datos. Es un mecanismo utilizado para ocultar los detalles de implementación de datos mientras se expone la abstracción de datos al mundo exterior. El proceso de ocultar información detrás de una interfaz bien definida se conoce como encapsulación. La encapsulación es un concepto poderoso de la programación orientada a objetos. Es el proceso de ocultar datos internos y operaciones de un objeto del mundo exterior mediante la creación de funciones de acceso.
¿Qué es la abstracción en la programación orientada a objetos?
La abstracción es una técnica utilizada en la programación orientada a objetos para separar las interfaces de las clases de los detalles de implementación de cada objeto individual. Esto significa que el código se puede cambiar sin alterar el código que usa la clase. En la programación orientada a objetos (POO), una abstracción representa un objeto que puede manipularse, pero no definirse explícitamente. La abstracción es una parte importante de OOP; es el proceso de separar la interfaz de una clase de la implementación de sus métodos.
¿Cómo interactúan las clases y los objetos en la programación orientada a objetos?
Las clases y los objetos son la base de la programación orientada a objetos (OO). La programación orientada a objetos es un paradigma de programación que utiliza objetos y clases para modelar el mundo real. Una clase es un plano o una plantilla. Es una descripción o una especificación de lo que debería ser un objeto. Define las características, comportamientos y datos de un tipo particular de objeto. Los objetos son instancias o ejemplos de una clase. Todos y cada uno de los objetos de un programa se pueden clasificar en una o más clases. Una clase puede heredar las propiedades, métodos y otras características de otra clase. Esto se llama herencia.