Introducción a la encapsulación en C

Ha habido casos en los que, debido a requisitos comerciales, necesitamos escribir código complejo. Este código no será fácil de usar y parece difícil de entender. Para que el programa parezca más fácil de leer, podemos envolver el fragmento complejo de código en una cápsula y ocultarlo. Esto también servirá como una capa adicional de protección contra cualquier inyección maliciosa en el código. Entonces podemos usar este código llamando a su instancia en el programa principal en lugar de escribir todo el conjunto de líneas complejas. Esta característica se llama encapsulación. Es una de las características principales de los lenguajes orientados a objetos. Sin embargo, no se limita solo a los idiomas OOP únicamente. En C, la encapsulación ha sido a pesar de la ausencia de palabras clave privadas y públicas. La encapsulación está siendo utilizada por varios otros lenguajes de programación como C #, C ++, PHP, JAVA también.

Trabajo de encapsulación en C

Para comprender el funcionamiento de la encapsulación, consideremos el ejemplo de la vida real. Considere una gran empresa que tiene su propia unidad de producción interna de libros y los entrega a los clientes mediante la vinculación con proveedores externos. Para que este modelo de negocio funcione, habrá diferentes departamentos involucrados, como el departamento de compras, el departamento de producción, el departamento de ventas y el departamento de finanzas. El departamento de adquisiciones se encargará de todas las actividades vinculadas a las adquisiciones, como la adquisición de tinta, papeles, cubiertas de papel, impresoras, etc. El departamento de ventas trabajará en marketing y ventas récord. Responsabilidades del departamento de finanzas para realizar auditorías financieras, calcular ganancias / pérdidas y publicar informes sobre la base de las decisiones estratégicas clave que se tomarán. En caso de que las ventas cayeran y esto afectara las finanzas del negocio. Entonces, el departamento de Finanzas no podrá acceder directamente a los datos de ventas. El departamento de finanzas tendrá que solicitar un miembro del equipo de ventas para obtener los datos relevantes. Esto es encapsulación. Todas las actividades de finanzas están envueltas en una entidad llamada "departamento de finanzas".

Este concepto de encapsulación se utiliza en lenguaje C para ocultar y proteger los datos. Se puede implementar cuando el programa de llamada principal tiene un objeto, el objeto debe poder encontrar las funciones aplicables y, de la misma manera, encontrar los datos.

Ventajas de la encapsulación en C

  1. La encapsulación oculta la implementación de un programa y, por lo tanto, es fácil de leer y modificar en el futuro de acuerdo con los requisitos comerciales.
  2. Nos permite implementar la versión actualizada del código donde sea necesario, sin que sea necesario reestructurar todo el programa.
  3. Asegura el programa al proporcionar la funcionalidad de ocultación de datos.
  4. La encapsulación promueve una forma modular de programación que hace que el código sea resistente.

¿Por qué necesitamos encapsulación en C?

Necesitamos encapsulación en C para manipular los modificadores de acceso en C. Los modificadores de acceso están presentes explícitamente en C ++, por ejemplo, Público, privado, pero no están explícitamente presentes en C. Aunque podemos hacer uso de esta propiedad en C implementando la encapsulación. La encapsulación también proporciona un código seguro que se puede entender mejor con un ejemplo proporcionado en la sección a continuación. Esto promueve la adaptabilidad con requisitos cambiantes, ya que cualquier código que requiera un cambio puede modificarse en un archivo separado sin cambios en el programa principal. Esto dará un código simple y sin errores hasta cierto punto.

Ejemplo de encapsulación en C

Los datos en lenguaje C son públicos por defecto. Aunque las variables "Estructura" se pueden declarar privadas definiéndolas por separado de la clase principal. Esto se puede lograr teniendo un encabezado separado y archivos C de origen. Un archivo de encabezado va seguido de la extensión ".h", mientras que los archivos C van seguidos de la extensión ".C". En el siguiente ejemplo: hay tres archivos

  1. p_variable.h
  2. main_prog.c
  3. Access_pfile.c

p_variable.h: es un archivo de encabezado que se debe incluir en otros archivos ".c". Este archivo actúa como un enlace entre los datos dispersos en varios archivos.

main_prog.c: es el archivo de implementación principal. Cuando esto se ejecuta, se realiza una llamada a funciones en funciones que están definidas en otros archivos C junto con estructuras.

Access_pfile.c: es un archivo que contiene la estructura. Debido a que "struct" requiere asignación y desasignación de memoria, se utilizan algunas funciones de la biblioteca estándar de C como "malloc ()" y "alloc ()".

Archivo: p_variable.h

#ifndef PRIVATE_VARIABLE
#define PRIVATE_VARIABLE
struct Con; // It is a variable to store contact
struct Con * create_contact(); // functional call to create function
void delete_contact( struct Con * some_contact ); // functional call to delete function
#endif //PRIVATE_VAR

Archivo: Access_pfile.c

#include "p_variable.h" //we hav included header file in this file so as to access the structure members. This is //an indirect way of accessing structures and thus implementing encapsulation.
#include
#include
struct Con //structure definition containing two members. Both the members are integer type
(
int mob_number;
int flat_number;
);
struct Con * create_contact() // structure declaration. In this code section we allocate memory for the data we //need to input in the above defined members. Malloc function allocates the memory.
(
struct Con * some_contact;
some_contact = malloc(sizeof(struct Con));
some_contact->mob_number = 1234567891;
some_contact->flat_number = 541;
return( some_contact );
)
void delete_contact( struct Con * some_contact )
(
free(some_contact); // this is tandard C function to de- allocate the memory. It frees up the memory so that //the same can be used by other programs.
)

Archivo: main_prog.c

#include "p_variable.h"
#include
int main()
(
struct Con * Meghna;
Meghna = create_contact();
printf( "Mobile number: %d\n", Meghna->mob_number); // This should cause compile time error as we are //trying to access the private struct member
delete_contact( Meghna );
return 0;
)

Salida:

Conclusión

La encapsulación es el paso principal hacia la programación orientada a objetos. Este artículo proporciona información sobre la encapsulación en C. Usando métodos de acceso y mutadores, modificadores de acceso, podemos hacer uso de la encapsulación en C #, C ++, PHP también. El beneficio de las propiedades es que los usuarios pueden manipular el objeto desde un punto de vista de datos interno utilizando un único elemento con nombre que tiene datos y funcionalidad definidos en él.

Artículos recomendados

Esta es una guía para la encapsulación en C. Aquí discutimos la introducción y la necesidad de encapsulación en C junto con Advantage y ejemplos. También puede consultar nuestros otros artículos sugeridos para obtener más información:

  1. Abstracción vs encapsulación
  2. Encapsulación en Python
  3. Encapsulación en Java
  4. Encapsulación en PHP
  5. Trabajo de encapsulación en JavaScript
  6. Encapsulación en JavaScript