Uvod v kapsulacijo v C

Bili so primeri, ko moramo zaradi poslovnih zahtev napisati zapleteno kodo. Ta koda ne bo uporabniku prijazna in je težko razumeti. Za lažje branje programa lahko zapleteni delček kode ovijemo v kapsulo in ga skrijemo. To bo tudi dodaten sloj zaščite pred zlonamernimi injekcijami v kodi. Ta del kode lahko nato uporabimo tako, da pokličemo njegov primerek v glavnem programu, ne pa da napišemo cel kup zapletenih vrstic. Ta lastnost se imenuje enkapsulacija. Je ena glavnih značilnosti predmetno usmerjenih jezikov. Vendar pa ni omejena samo na jezike OOP. Na C-ju je bilo pomanjkanje zasebnih in javnih ključnih besed kljub inkapsuliranju. Inkapsulacijo uporabljajo različni drugi programski jeziki, kot so C #, C ++, PHP, JAVA.

Delovanje kapsule v C

Da bi razumeli delovanje enkapsulacije, si oglejmo primer iz resničnega življenja. Razmislite o velikem podjetju, ki ima lastno proizvodno enoto knjig in jih dostavi strankam, tako da se poveže s tretjimi prodajalci. Da bi ta poslovni model deloval, bodo sodelovali različni oddelki, kot so oddelek za javna naročila, proizvodni oddelek, oddelek za prodajo, finančni oddelek. Služba za javna naročila bo skrbela za vse dejavnosti, povezane z nabavo, kot so nabava črnila, papirjev, ovitkov za papir, tiskalniki itd. Odgovornost finančnega oddelka je voditi finančne revizije, izračunati dobiček / izgubo in objavljati poročila, na podlagi katerih bodo sprejete ključne strateške odločitve. V primeru, da bi se prodaja zmanjšala, kar je vplivalo na finančne posle podjetja. Nato finančni oddelek ne bo smel neposredno dostopati do prodajnih podatkov. Finančni oddelek bo moral od prodajne skupine zahtevati ustrezne podatke. To je kapsulacija. Vse finančne dejavnosti so zajete v enem subjektu, imenovanem "finančni oddelek".

Ta koncept enkapsulacije se uporablja v jeziku C za skrivanje in zaščito podatkov. Izvaja se lahko, kadar ima glavni program klic predmet, objekt mora biti sposoben najti uporabne funkcije in na enak način najti podatke.

Prednosti enkapsulacije v C

  1. Inkapsulacija skriva izvajanje programa in je zato v prihodnosti enostavna za branje in spreminjanje v skladu s poslovnimi zahtevami.
  2. Omogoča nam, da namestimo posodobljeno različico kode, kadar koli je to potrebno, ne da bi bilo treba celoten program prestrukturirati.
  3. Program zavaruje z zagotavljanjem funkcije skrivanja podatkov.
  4. Inkapsulacija spodbuja modularni način programiranja, zaradi česar je koda odporna.

Zakaj potrebujemo kapsulacijo na C?

Za manipulacijo z modifikatorji dostopa v C. potrebujemo enkapsulacijo na C. Modifikatorji dostopa so izrecno prisotni v C ++, na primer za javno, zasebno, vendar niso izrecno prisotni v C. Čeprav lahko to lastnost v C uporabimo z izvajanjem enkapsulacije. Inkapsulacija zagotavlja tudi varno kodo, ki jo je mogoče bolje razumeti s primerom v spodnjem razdelku. To spodbuja prilagodljivost s spreminjajočimi se zahtevami, saj ne glede na to, katera koda zahteva spremembo, lahko spremenite v ločeno datoteko, ne da bi v glavnem programu karkoli spremenili. Tako boste do neke mere dobili preprosto in brez napak kodo.

Primer kapsule v C

Podatki v jeziku C so privzeto javni. Čeprav spremenljivke "Struct" lahko razglasimo za zasebne, če jih določimo ločeno od glavnega razreda. To je mogoče doseči z ločeno glavo in izvorno datoteko C. Glavi datoteke sledi končnica ".h", medtem ko datoteki C sledi razširitev ".C". V spodnjem primeru: Obstajajo tri datoteke

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

p_variable.h: To je glavna datoteka, ki jo je treba vključiti v druge datoteke .c. Ta datoteka deluje kot povezava med podatki, raztresenimi po več datotekah.

main_prog.c: To je glavna izvedbena datoteka. Ko se to izvede, se pokliče funkcija na funkcije, ki so definirane v drugih datotekah C skupaj s strukturami.

Access_pfile.c: Gre za datoteko, ki vsebuje strukturo. Ker "strukturiranje" zahteva dodelitev in de-dodelitev pomnilnika, se uporabljajo nekatere funkcije iz standardne knjižnice C, kot sta "malloc ()" in "alloc ()".

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

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

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

Izhod:

Zaključek

Inkapsulacija je vodilni korak k objektno usmerjenemu programiranju. Ta članek ponuja informacije o enkapsulaciji v C. S pomočjo accessor in mutatorskih metod, modifikatorjev dostopa, lahko uporabimo tudi enkapsulacijo v C #, C ++, PHP. Prednost lastnosti je, da lahko uporabniki manipulirajo s predmetom z notranjega podatkovnega vidika z uporabo enega samega poimenovanega predmeta, ki ima v njem definirane podatke in funkcionalnost.

Priporočeni članki

To je vodnik za Encapsulacijo v C. Tukaj razpravljamo o uvedbi in potrebi po inkapsulaciji v C, skupaj s prednostmi in primeri. Če želite izvedeti več, lahko preberete tudi druge naše predlagane članke -

  1. Abstrakcija vs enkapsulacija
  2. Inkapsulacija v Pythonu
  3. Kapsulacija na Javi
  4. Inkapsulacija v PHP
  5. Delovanje kapsule v JavaScript
  6. Kapsulacija v JavaScript