Ú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

  1. Zapouzdření skrývá implementaci programu, a proto je v budoucnu snadno čitelné a upravitelné podle obchodních požadavků.
  2. To nám umožňuje nasadit aktualizovanou verzi kódu, kdekoli je to třeba, aniž by bylo nutné restrukturalizovat celý program.
  3. Zabezpečuje program poskytováním funkce skrývání dat.
  4. 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

  1. p_variable.h
  2. main_prog.c
  3. 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 -

  1. Abstrakce vs zapouzdření
  2. Zapouzdření v Pythonu
  3. Zapouzdření v Javě
  4. Zapouzdření v PHP
  5. Práce zapouzdření v JavaScriptu
  6. Zapouzdření do JavaScriptu

Kategorie: