Úvod do enkapsulácie v C
Vyskytli sa prípady, keď z dôvodu obchodných požiadaviek potrebujeme napísať komplexný kód. Tento kód nebude užívateľsky príjemný a vyzerá ťažko pochopiteľný. Aby bol program ľahší na čítanie, môžeme zložený útržok kódu zabaliť do kapsuly a skryť. Bude to tiež slúžiť ako dodatočná vrstva ochrany pred škodlivými injekciami v kóde. Potom môžeme tento kus kódu použiť tak, že namiesto jeho celého súboru zložitých riadkov zavoláme jeho inštanciu v hlavnom programe. Táto funkcia sa nazýva zapuzdrenie. Je to jedna z hlavných čŕt objektovo orientovaných jazykov. Nie je to však obmedzené iba na jazyky OOP. V C bolo zapuzdrenie napriek absencii súkromných a verejných kľúčových slov. Zapuzdrenie používajú rôzne programovacie jazyky ako C #, C ++, PHP, JAVA.
Fungovanie enkapsulácie v C
Aby sme pochopili fungovanie enkapsulácie, uvážme príklad z reálneho života. Zoberme si veľkú spoločnosť, ktorá má vlastnú internú výrobnú jednotku kníh a dodáva ich zákazníkom prostredníctvom väzby s predajcami tretích strán. Aby tento obchodný model fungoval, zapoja sa rôzne oddelenia, ako napríklad oddelenie obstarávania, výrobné oddelenie, obchodné oddelenie, finančné oddelenie. Oddelenie obstarávania sa postará o všetky činnosti súvisiace s obstarávaním, ako je obstarávanie atramentu, papiera, papierových obálok, tlačiarní atď. Obchodné oddelenie bude pracovať na marketingu, zázname predaja. Povinnosti finančného oddelenia vykonávať finančné audity, počítať zisky / straty a zverejňovať správy, na základe ktorých sa prijmú kľúčové strategické rozhodnutia. V prípade, že predaj klesol, a to malo dopad na finančné prostriedky podniku. Finančné oddelenie nebude mať priamy prístup k údajom o predaji. Finančné oddelenie bude musieť požiadať člena obchodného tímu o získanie príslušných údajov. Toto je zapuzdrenie. Všetky finančné činnosti sú zabalené do jedného subjektu nazývaného „finančné oddelenie“.
Táto koncepcia zapuzdrenia sa používa v jazyku C na skrývanie a ochranu údajov. Môže sa implementovať, keď má hlavný volajúci objekt objekt, objekt by mal byť schopný nájsť použiteľné funkcie a rovnakým spôsobom nájsť dáta.
Výhody zapuzdrenia v C
- Zapuzdrenie skrýva implementáciu programu, a preto je v budúcnosti ľahko čitateľné a modifikovateľné podľa obchodných požiadaviek.
- To nám umožňuje nasadiť aktualizovanú verziu kódu všade tam, kde je to potrebné, bez toho, aby bolo potrebné reštrukturalizovať celý program.
- Zabezpečuje program poskytovaním funkcií skrytia údajov.
- Zapuzdrenie podporuje modulárny spôsob programovania, ktorý zaisťuje odolnosť kódu.
Prečo potrebujeme zapuzdrenie v C?
Potrebujeme zapuzdrenie v C, aby sme mohli manipulovať s modifikátormi prístupu v C. Modifikátory prístupu sú výslovne prítomné v C ++ napríklad pre verejné, súkromné, ale nie sú explicitne prítomné v C. Hoci túto vlastnosť môžeme využiť v implementácii zapuzdrenia. Zapuzdrenie tiež poskytuje bezpečný kód, ktorý je možné lepšie pochopiť na príklade uvedenom v nižšie uvedenej časti. To podporuje prispôsobivosť s meniacimi sa požiadavkami, pretože ktorýkoľvek kód, ktorý vyžaduje zmenu, môže byť upravený v samostatnom súbore bez zmeny v hlavnom programe. Toto do istej miery poskytne jednoduchý a bezchybný kód.
Príklad zapuzdrenia v C
Dáta v jazyku C sú predvolene verejné. Aj keď premenné „Struct“ je možné deklarovať ako súkromné definovaním oddelene od hlavnej triedy. To sa dá dosiahnuť samostatnou hlavičkou a zdrojovými súbormi C. Za hlavičkovým súborom nasleduje prípona „.h“, zatiaľ čo za súbormi C nasleduje prípona „.C“. V nasledujúcom príklade: Existujú tri súbory
- p_variable.h
- main_prog.c
- Access_pfile.c
p_variable.h: Je to hlavičkový súbor, ktorý sa má zahrnúť do iných súborov „.c“. Tento súbor slúži ako spojenie medzi údajmi roztrúsenými vo viacerých súboroch.
main_prog.c: Je to hlavný implementačný súbor. Keď sa toto vykoná, vykoná sa volanie funkcií k funkciám, ktoré sú definované v iných C súboroch spolu so štruktúrami.
Access_pfile.c: Je to súbor obsahujúci štruktúru. Pretože „struct“ vyžaduje alokáciu a delokáciu pamäte, používajú sa niektoré funkcie zo štandardnej knižnice C, ako napríklad „malloc ()“ a „alloc ()“.
Súbor: 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
Súbor: 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.
)
Súbor: 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;
)
Výkon:
záver
Zapuzdrenie je hlavným krokom smerom k objektovo orientovanému programovaniu. Tento článok poskytuje informácie o enkapsulácii v C. Pomocou prístupových a mutačných metód, modifikátorov prístupu, môžeme použiť enkapsuláciu aj v C #, C ++, PHP. Výhoda vlastností spočíva v tom, že používatelia môžu s objektom manipulovať z hľadiska interných údajov pomocou jedinej pomenovanej položky, ktorá má v nej definované údaje a funkcie.
Odporúčané články
Toto je sprievodca zapuzdrením v C. Tu diskutujeme o zavedení a potrebe zapuzdrenia v C spolu s výhodou a príkladmi. Viac informácií nájdete aj v ďalších navrhovaných článkoch -
- Abstrakcia vs zapuzdrenie
- Zapuzdrenie v Pythone
- Zapuzdrenie do Java
- Zapuzdrenie v PHP
- Fungovanie zapuzdrenia v JavaScripte
- Zapuzdrenie do JavaScriptu