Úvod do zapouzdření v C
Byly případy, kdy z důvodu obchodních požadavků potřebujeme napsat komplexní kód. Tento kód nebude uživatelsky přívětivý a vypadá těžko srozumitelně. Abychom program snáze přečetli, můžeme složený zlomek kódu zabalit do kapsle a skrýt. To bude také sloužit jako přidaná vrstva ochrany před škodlivými injekcemi v kódu. Tento kód pak můžeme použít tak, že místo hlavního kódu voláme jeho instanci místo psaní celé řady složitých řádků. Tato funkce se nazývá zapouzdření. Je to jedna z hlavních vlastností objektově orientovaných jazyků. Nejde však pouze o jazyky OOP. V C byla enkapsulace navzdory absenci soukromých a veřejných klíčových slov. Zapouzdření používají různé další programovací jazyky jako C #, C ++, PHP, JAVA.
Práce zapouzdření v C
Abychom pochopili fungování zapouzdření, podívejme se na příklad skutečného života. Zvažte velkou společnost, která má vlastní interní produkční jednotku knih a dodává je zákazníkům prostřednictvím vazby s prodejci třetích stran. Aby tento obchodní model fungoval, budou zapojena různá oddělení, jako je oddělení nákupu, výrobní oddělení, obchodní oddělení, finanční oddělení. Oddělení nákupu se postará o veškeré činnosti spojené s nákupem, jako je nákup inkoustu, papíry, papírové obaly, tiskárny atd. Obchodní oddělení bude pracovat na marketingu, prodeji záznamů. Povinnosti finančního oddělení provádět finanční audity, vypočítat zisky / ztráty a zveřejňovat zprávy, na jejichž základě budou přijata klíčová strategická rozhodnutí. V případě, že prodej klesl, a to mělo dopad na finance podniku. Finanční oddělení nebude mít přímý přístup k prodejním datům. Finanční oddělení bude muset požádat člena obchodního týmu o získání příslušných údajů. Toto je zapouzdření. Všechny finanční činnosti jsou zabaleny do jednoho subjektu nazvaného „finanční oddělení“.
Tento koncept zapouzdření se používá v jazyce C pro skrytí a ochranu dat. Může být implementován, když hlavní volající program má objekt, objekt by měl být schopen najít použitelné funkce a stejným způsobem najít data.
Výhody zapouzdření v C
- Zapouzdření skrývá implementaci programu, a proto je v budoucnu snadno čitelné a upravitelné podle obchodních požadavků.
- To nám umožňuje nasadit aktualizovanou verzi kódu, kdekoli je to třeba, aniž by bylo nutné restrukturalizovat celý program.
- Zabezpečuje program poskytováním funkce skrývání dat.
- Zapouzdření podporuje modulární způsob programování tak, aby byl kód odolný.
Proč potřebujeme zapouzdření do C?
Potřebujeme zapouzdření v C, abychom mohli manipulovat s modifikátory přístupu v C. Modifikátory přístupu jsou výslovně přítomny v C ++ např. Pro veřejné, soukromé, ale nejsou explicitně přítomny v C. Ačkoli můžeme tuto vlastnost v C implementovat implementací zapouzdření. Zapouzdření také poskytuje bezpečný kód, který lze lépe pochopit na příkladu uvedeném v níže uvedené části. To podporuje přizpůsobivost s měnícími se požadavky, protože kterýkoli kód vyžaduje změnu, lze upravit v samostatném souboru beze změn v hlavním programu. To do určité míry poskytne jednoduchý a bezchybný kód.
Příklad zapouzdření v C
Data v jazyce C jsou ve výchozím nastavení veřejná. Ačkoli proměnné „Struct“ mohou být prohlášeny za soukromé definováním odděleně od hlavní třídy. Toho lze dosáhnout samostatnou hlavičkou a zdrojovými soubory C. Za hlavičkovým souborem následuje přípona „.h“, zatímco u souborů C následuje přípona „.C“. V níže uvedeném příkladu: Existují tři soubory
- p_variable.h
- main_prog.c
- Access_pfile.c
p_variable.h: Je to soubor záhlaví, který má být zahrnut do jiných souborů „.c“. Tento soubor funguje jako propojení mezi daty rozptýlenými do více souborů.
main_prog.c: Jedná se o hlavní implementační soubor. Je-li to provedeno, provede se volání funkcí do funkcí, které jsou definovány v jiných C souborech spolu se strukturami.
Access_pfile.c: Jedná se o soubor obsahující strukturu. Protože „struct“ vyžaduje alokaci a delokaci paměti, používají se některé funkce ze standardní knihovny C jako „malloc ()“ a „alloc ()“.
Soubor: 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
Soubor: 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.
)
Soubor: 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ýstup:
Závěr
Zapouzdření je předním krokem k objektově orientovanému programování. Tento článek poskytuje informace o zapouzdření v C. Pomocí přístupových a mutačních metod, modifikátorů přístupu, můžeme využít zapouzdření v C #, C ++, PHP. Výhodou vlastností je, že uživatelé mohou manipulovat s objektem z hlediska interních dat pomocí jediné pojmenované položky, která má v sobě definovaná data a funkce.
Doporučené články
Toto je průvodce zapouzdřením v C. Zde diskutujeme zavedení a potřebu zapouzdření v C spolu s výhodou a příklady. Další informace naleznete také v dalších navrhovaných článcích -
- Abstrakce vs zapouzdření
- Zapouzdření v Pythonu
- Zapouzdření v Javě
- Zapouzdření v PHP
- Práce zapouzdření v JavaScriptu
- Zapouzdření do JavaScriptu