Inleiding tot inkapseling in C

Er zijn gevallen geweest waarin we vanwege zakelijke vereisten complexe code moesten schrijven. Deze code is niet gebruiksvriendelijk en lijkt moeilijk te begrijpen. Om het programma er leesbaarder uit te laten zien, kunnen we het complexe codefragment in een capsule verpakken en verbergen. Dit zal ook dienen als een extra beschermingslaag tegen kwaadaardige injecties in de code. We kunnen dit stuk code vervolgens gebruiken door zijn instantie in het hoofdprogramma aan te roepen in plaats van de hele reeks complexe regels te schrijven. Deze functie wordt inkapseling genoemd. Het is een van de belangrijkste kenmerken van objectgeoriënteerde talen. Het is echter niet alleen beperkt tot alleen OOP-talen. In C was inkapseling ondanks de afwezigheid van private en publieke sleutelwoorden. Encapsulation wordt ook gebruikt door verschillende andere programmeertalen zoals C #, C ++, PHP, JAVA.

Werken van inkapseling in C

Laten we het voorbeeld uit de praktijk bekijken om de werking van inkapseling te begrijpen. Overweeg een groot bedrijf dat een eigen productie-eenheid van boeken heeft en deze aan klanten levert door contact te maken met externe leveranciers. Om dit businessmodel te laten werken, zijn er verschillende afdelingen bij betrokken, zoals de inkoopafdeling, productieafdeling, verkoopafdeling, financiële afdeling. De inkoopafdeling zorgt voor alle inkoopgerelateerde activiteiten, zoals inkoop van inkt, papier, papieren omslagen, printers, enz. De verkoopafdeling zal werken aan marketing, recordverkoop. Verantwoordelijkheden van de financiële afdeling om de financiële audits uit te voeren, winsten / verliezen te berekenen en rapporten te publiceren op basis waarvan belangrijke strategische beslissingen worden genomen. Voor het geval de verkoop daalde en dit van invloed was op de financiën van het bedrijf. Dan heeft de financiële afdeling geen directe toegang tot verkoopgegevens. De financiële afdeling zal een lid van het verkoopteam moeten vragen om de relevante gegevens te krijgen. Dit is inkapseling. Alle financiële activiteiten zijn verpakt onder één entiteit, de "financiële afdeling" genaamd.

Dit concept van inkapseling wordt in C-taal gebruikt voor het verbergen en beschermen van gegevens. Het kan worden geïmplementeerd wanneer het hoofdoproepprogramma een object heeft, het object moet de toepasselijke functies kunnen vinden en op dezelfde manier de gegevens vinden.

Voordelen van inkapseling in C

  1. Inkapseling verbergt de implementatie van een programma en is daarom in de toekomst gemakkelijk te lezen en aan te passen aan de zakelijke vereisten.
  2. Hiermee kunnen we de bijgewerkte codeversie waar nodig implementeren, zonder dat het hele programma moet worden geherstructureerd.
  3. Het beveiligt het programma door functionaliteit voor het verbergen van gegevens te bieden.
  4. Inkapseling bevordert een modulaire manier van programmeren waardoor de code veerkrachtig wordt.

Waarom hebben we inkapseling nodig in C?

We hebben inkapseling in C nodig om de toegangsmodificatoren in C te manipuleren. De toegangsmodificatoren zijn expliciet aanwezig in C ++ voor bijvoorbeeld Public, private, maar ze zijn niet expliciet aanwezig in C. Hoewel we deze eigenschap in C kunnen gebruiken door encapsulation te implementeren. Inkapseling biedt ook veilige code die beter kan worden begrepen door een voorbeeld in het onderstaande gedeelte. Dit bevordert het aanpassingsvermogen met veranderende vereisten, aangezien elke code die een wijziging vereist, in een afzonderlijk bestand kan worden gewijzigd zonder iets in het hoofdprogramma te wijzigen. Dit geeft tot op zekere hoogte eenvoudige en foutloze code.

Voorbeeld van inkapseling in C

Gegevens in C-taal zijn standaard openbaar. Hoewel de "Struct" -variabelen privé kunnen worden verklaard door ze afzonderlijk van de hoofdklasse te definiëren. Dit kan worden bereikt door een afzonderlijke kop- en bron C-bestanden te hebben. Een koptekstbestand wordt gevolgd door de extensie ".h", terwijl C-bestanden worden gevolgd door de extensie ".C". In het onderstaande voorbeeld: Er zijn drie bestanden

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

p_variable.h: Het is een header-bestand dat moet worden opgenomen in andere ".c" -bestanden. Dit bestand fungeert als een koppeling tussen de gegevens die over meerdere bestanden zijn verspreid.

main_prog.c: Het is het belangrijkste implementatiebestand. Wanneer dit wordt uitgevoerd, wordt een functieaanroep gedaan naar functies die zijn gedefinieerd in andere C-bestanden samen met structuren.

Access_pfile.c: het is een bestand met structuur. Omdat "struct" toewijzing en de-toewijzing van geheugen vereist, worden sommige functies uit de standaard C-bibliotheek zoals "malloc ()" en "alloc ()" gebruikt.

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

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

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

Output:

Conclusie

Inkapseling is de leidende stap naar objectgeoriënteerd programmeren. Dit artikel geeft informatie over inkapseling in C. Met behulp van accessor- en mutator-methoden, toegangsmodificatoren, kunnen we ook gebruik maken van inkapseling in C #, C ++, PHP. Het voordeel van eigenschappen is dat de gebruikers het object kunnen manipuleren vanuit een intern gegevensstandpunt met behulp van een enkel benoemd item met gegevens en functionaliteit die erin is gedefinieerd.

Aanbevolen artikelen

Dit is een gids voor de inkapseling in C. Hier bespreken we de introductie en behoefte aan inkapseling in C samen met Voordeel en voorbeelden. U kunt ook onze andere voorgestelde artikelen doornemen voor meer informatie -

  1. Abstractie versus inkapseling
  2. Inkapseling in Python
  3. Inkapseling in Java
  4. Inkapseling in PHP
  5. Werken van inkapseling in JavaScript
  6. Inkapseling in JavaScript