Introduction à l'encapsulation en C

Dans certains cas, en raison des besoins de l'entreprise, nous devons écrire du code complexe. Ce code ne sera pas convivial et semble difficile à comprendre. Pour rendre le programme plus facile à lire, nous pouvons envelopper l'extrait de code complexe dans une capsule et le masquer. Cela servira également de couche de protection supplémentaire contre toute injection malveillante dans le code. Nous pouvons ensuite utiliser ce morceau de code en appelant son instance dans le programme principal plutôt qu'en écrivant tout le tas de lignes complexes. Cette fonctionnalité est appelée encapsulation. C'est l'une des principales fonctionnalités des langages orientés objet. Cependant, il n'est pas seulement limité aux langues OOP uniquement. En C, l'encapsulation s'est faite malgré l'absence de mots clés privés et publics. L'encapsulation est également utilisée par divers autres langages de programmation comme C #, C ++, PHP, JAVA.

Fonctionnement de l'encapsulation en C

Pour comprendre le fonctionnement de l'encapsulation, considérons l'exemple réel. Considérons une grande entreprise qui possède sa propre unité de production de livres en interne et les livre aux clients en s'associant avec des fournisseurs tiers. Pour que ce modèle d'affaires fonctionne, différents services seront impliqués, comme le service des achats, le service de production, le service des ventes et le service des finances. Le service des achats s'occupera de toutes les activités liées à l'approvisionnement comme l'approvisionnement en encre, papiers, couvertures en papier, imprimantes, etc. Responsabilités du département financier pour mener les audits financiers, calculer les profits / pertes et publier des rapports sur la base desquels les décisions stratégiques clés seront prises. Au cas où les ventes baisseraient et cela affecterait les finances de l'entreprise. Ensuite, le service financier ne sera pas autorisé à accéder directement aux données de vente. Le service financier devra demander à un membre de l'équipe commerciale d'obtenir les données pertinentes. C'est l'encapsulation. Toutes les activités de la finance sont regroupées sous une seule entité appelée «service financier».

Ce concept d'encapsulation est utilisé en langage C pour le masquage et la protection des données. Il peut être implémenté lorsque le programme appelant principal a un objet, celui-ci doit pouvoir trouver les fonctions applicables et de la même manière, il trouve les données.

Avantages de l'encapsulation en C

  1. L'encapsulation cache la mise en œuvre d'un programme et donc facile à lire et à modifier à l'avenir en fonction des besoins de l'entreprise.
  2. Il nous permet de déployer la version de code mise à jour partout où cela est nécessaire, sans nécessiter la restructuration de l'ensemble du programme.
  3. Il sécurise le programme en fournissant une fonctionnalité de masquage des données.
  4. L'encapsulation favorise une méthode modulaire de programmation rendant le code résilient.

Pourquoi avons-nous besoin d'une encapsulation en C?

Nous avons besoin de l'encapsulation en C pour manipuler les modificateurs d'accès en C. Les modificateurs d'accès sont explicitement présents en C ++ pour par exemple Public, privé, mais ils ne sont pas explicitement présents en C. Bien que nous puissions utiliser cette propriété en C en implémentant l'encapsulation. L'encapsulation fournit également un code sécurisé qui peut être mieux compris par un exemple fourni dans la section ci-dessous. Cela favorise l'adaptabilité avec des exigences changeantes, car le code nécessitant une modification peut être modifié dans un fichier séparé sans rien changer dans le programme principal. Cela donnera un code simple et sans erreur dans une certaine mesure.

Exemple d'encapsulation en C

Les données en langage C sont publiques par défaut. Bien que les variables «Struct» puissent être déclarées privées en les définissant séparément de la classe principale. Ceci peut être réalisé en ayant un en-tête séparé et des fichiers C source. Un fichier d'en-tête est suivi de l'extension «.h» tandis que les fichiers C sont suivis de l'extension «.C». Dans l'exemple ci-dessous: Il y a trois fichiers

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

p_variable.h: C'est un fichier d'en-tête qui doit être inclus dans d'autres fichiers «.c». Ce fichier sert de lien entre les données dispersées sur plusieurs fichiers.

main_prog.c: C'est le fichier d'implémentation principal. Lorsque cela est exécuté, un appel de fonction est effectué vers des fonctions dans lesquelles sont définies dans d'autres fichiers C avec des structures.

Access_pfile.c: Il s'agit d'un fichier contenant une structure. Parce que "struct" nécessite l'allocation et la désallocation de mémoire, certaines fonctions de la bibliothèque C standard comme "malloc ()" et "alloc ()" sont utilisées.

Fichier: 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

Fichier: 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.
)

Fichier: 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;
)

Production:

Conclusion

L'encapsulation est la première étape vers une programmation orientée objet. Cet article donne des informations sur l'encapsulation en C. En utilisant des méthodes d'accesseur et de mutateur, des modificateurs d'accès, nous pouvons également utiliser l'encapsulation en C #, C ++, PHP. L'avantage des propriétés est que les utilisateurs peuvent manipuler l'objet d'un point de vue interne des données en utilisant un seul élément nommé contenant des données et des fonctionnalités définies.

Articles recommandés

Ceci est un guide de l'encapsulation en C. Ici, nous discutons de l'introduction et de la nécessité de l'encapsulation en C avec Advantage et des exemples. Vous pouvez également consulter nos autres articles suggérés pour en savoir plus -

  1. Abstraction vs encapsulation
  2. Encapsulation en Python
  3. Encapsulation en Java
  4. Encapsulation en PHP
  5. Fonctionnement de l'encapsulation en JavaScript
  6. Encapsulation en JavaScript