Introduktion till kapsling i C

Det har förekommit fall då vi på grund av affärskrav måste skriva komplex kod. Den här koden är inte användarvänlig och ser svår att förstå. För att göra programmet lättare att läsa kan vi packa in det komplexa kodutdraget i en kapsel och dölja det. Detta kommer också att fungera som ett extra lager av skydd mot skadliga injektioner i koden. Vi kan sedan använda den här koden genom att kalla sin instans i huvudprogrammet snarare än att skriva hela massan av komplexa rader. Denna funktion kallas inkapsling. Det är en av kärnfunktionerna i objektorienterade språk. Det är dock inte bara begränsat till endast OOP-språk. I C har kapsling varit trots avsaknaden av privata och offentliga nyckelord. Inkapsling används också av olika andra programmeringsspråk som C #, C ++, PHP, JAVA.

Working of Encapsulation in C

För att förstå hur inkapsling fungerar, låt oss ta hänsyn till det verkliga exemplet. Tänk på ett stort företag som har en egen produktionsenhet av böcker och levererar dem till kunder genom att binda sig till tredjepartsleverantörer. För att få denna affärsmodell att fungera kommer det att finnas olika avdelningar involverade som inköpsavdelningen, produktionsavdelningen, försäljningsavdelningen, finansavdelningen. Upphandlingsavdelningen kommer att ta hand om alla inköpslänkade aktiviteter som inköp av bläck, papper, pappersomslag, skrivare, etc. Försäljningsavdelningen kommer att arbeta med marknadsföring, skivförsäljning. Finansavdelningens ansvar för att utföra de finansiella revisionerna, beräkna vinster / förluster och publicera rapporter på grundval av vilka viktiga strategiska beslut kommer att fattas. Om försäljningen minskade och detta påverkade verksamhetens ekonomi. Då kommer inte finansavdelningen att få direkt tillgång till säljdata. Finansavdelningen måste begära en medlem av säljteamet för att få relevant information. Detta är kapsling. All finansverksamhet lindas under en enhet som kallas ”finansavdelningen”.

Detta koncept av inkapsling används på C-språk för att dölja och skydda data. Det kan implementeras när det huvudsakliga samtalsprogrammet har ett objekt, objektet ska kunna hitta de tillämpliga funktionerna och på samma sätt hittar de data.

Fördelar med inkapsling i C

  1. Inkapsling döljer implementeringen av ett program och därmed lätt att läsa och ändra i framtiden enligt affärsbehov.
  2. Det tillåter oss att distribuera den uppdaterade kodversionen där så krävs, utan att kräva att hela programmet ska omstruktureras.
  3. Det säkerställer programmet genom att tillhandahålla data dölja funktioner.
  4. Inkapsling främjar ett modulärt sätt att programmera vilket gör koden elastisk.

Varför behöver vi inkapsling i C?

Vi behöver kapsling i C för att manipulera åtkomstmodifierarna i C. Åtkomstmodifierarna finns uttryckligen i C ++ för t.ex. offentliga, privata, men de finns inte uttryckligen i C. Även om vi kan använda denna egenskap i C genom att implementera inkapsling. Inkapsling tillhandahåller också säker kod som kan förstås bättre med ett exempel i avsnittet nedan. Detta främjar anpassningsförmåga med ändrade krav eftersom den kod som krävs en ändring kan ändras i en separat fil utan att ändra något i huvudprogrammet. Detta kommer att ge enkel och felfri kod upp till viss del.

Exempel på kapsling i C

Data på C-språk är som standard offentliga. Även om "struktur" -variabler kan förklaras privata genom att definiera dem separat från huvudklassen. Detta kan uppnås genom att ha en separat rubrik- och käll-C-filer. En rubrikfil följs av ".h" -tillägget medan C-filer följs av ".C" -tillägget. I exemplet nedan: Det finns tre filer

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

p_variable.h: Det är en rubrikfil som ska inkluderas i andra ".c" -filer. Den här filen fungerar som en länk mellan data spridda över flera filer.

main_prog.c: Det är den viktigaste implementeringsfilen. När detta utförs görs funktionssamtal till funktioner där de definieras i andra C-filer tillsammans med strukturer.

Access_pfile.c: Det är en fil som innehåller struktur. Eftersom “strukt” kräver allokering och avdelning av minne, används vissa funktioner från standard C-bibliotek som “malloc ()” och “alloc ()”.

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

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

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

Produktion:

Slutsats

Inkapsling är det ledande steget mot objektorienterad programmering. Den här artikeln innehåller information om inkapsling i C. Med hjälp av accessor- och mutatormetoder, åtkomstmodifierare kan vi också använda inkapsling i C #, C ++, PHP. Fördelen med egenskaper är att användarna kan manipulera objektet från en intern datainsynvinkel med hjälp av ett enda namngivet objekt med data och funktionalitet definierat i det.

Rekommenderade artiklar

Detta är en guide till Encapsulation i C. Här diskuterar vi introduktion och behov av inkapsling i C tillsammans med Advantage och exempel. Du kan också gå igenom våra andra föreslagna artiklar för att lära dig mer -

  1. Abstraktion kontra inkapsling
  2. Inkapsling i Python
  3. Inkapsling i Java
  4. Inkapsling i PHP
  5. Arbeta med inkapsling i JavaScript
  6. Inkapsling i JavaScript

Kategori: