Въведение в капсулирането в С

Имало е случаи, когато поради бизнес изисквания трябва да пишем сложен код. Този код няма да бъде удобен за потребителя и изглежда трудно за разбиране. За да направим програмата да изглежда по-лесно за четене, можем да увием сложния фрагмент от код в капсула и да го скрием. Това ще служи и като допълнителен слой защита срещу всякакви злонамерени инжекции в кода. След това можем да използваме това парче код, като извикаме неговия екземпляр в основната програма, а не да запишем целия куп сложни редове. Тази функция се нарича капсулация. Това е една от основните характеристики на обектно-ориентираните езици. Тя обаче не се ограничава само до езиците на OOP. В C, капсулирането е било, въпреки липсата на частни и публични ключови думи. Капсулирането се използва от различни други езици за програмиране като C #, C ++, PHP, JAVA.

Работа на капсулацията в С

За да разберем работата на капсулацията, нека разгледаме примера от реалния живот. Помислете за голяма компания, която има собствена производствена единица за книги и ги доставя на клиентите, като се обвързва с доставчици на трети страни. За да работи този бизнес модел ще има различни отдели като отдел за обществени поръчки, производствен отдел, отдел продажби, финансов отдел. Отделът за обществени поръчки ще се грижи за всички свързани с поръчки дейности като закупуване на мастило, хартия, хартиени корици, принтери и др. Отделът за продажби ще работи по маркетинг, рекордни продажби. Отговорности на финансовия отдел да провеждат финансовите одити, да изчисляват печалби / загуби и да публикуват отчети, въз основа на които ще се вземат ключови стратегически решения. В случай че продажбите спаднат и това се отрази на финансите на бизнеса. Тогава финансовият отдел няма да има директен достъп до данните за продажбите. Финансовият отдел ще трябва да поиска член на екипа по продажбите да получи съответните данни. Това е капсулирането. Всички дейности по финанси са обвързани с едно образувание, наречено „финансов отдел“.

Тази концепция за капсулиране се използва на език С за скриване и защита на данните. Тя може да бъде реализирана, когато основната извикваща програма има обект, обектът трябва да може да намери приложимите функции и по същия начин те да намерят данните.

Предимства на капсулирането в С

  1. Капсулирането крие изпълнението на програма и следователно лесно за четене и промяна в бъдеще според изискванията на бизнеса.
  2. Позволява ни да разположим актуализираната версия на кода, когато е необходимо, без да се изисква преструктуриране на цялата програма.
  3. Той защитава програмата, като предоставя функционалност за скриване на данни.
  4. Капсулирането насърчава модулен начин на програмиране, което прави кода еластичен.

Защо се нуждаем от капсулация в С?

Нуждаем се от капсулиране в C, за да манипулираме модификаторите на достъп в C. Модификаторите на достъп изрично присъстват в C ++ за напр. Public, private, но те не присъстват изрично в C. Въпреки че можем да използваме това свойство в C, като прилагаме капсулирането. Капсулацията също така осигурява защитен код, който може да бъде разбран по-добре чрез пример, даден в по-долу раздела. Това насърчава адаптивността с променящи се изисквания, тъй като който код изисква промяна, може да бъде променен в отделен файл, без да се променя нищо в основната програма. Това ще даде прост и без грешки код до известна степен.

Пример за капсулиране в С

Данните на езика C са по подразбиране публични. Въпреки че „Struct“ променливите могат да бъдат обявени за частни, като ги дефинираме отделно от основния клас. Това може да се постигне чрез отделно заглавие и изходни C файлове. Заглавният файл е последван от разширението „.h“, докато C файловете са последвани от разширението „.C“. В примера по-долу: Има три файла

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

p_variable.h: Това е заглавен файл, който трябва да бъде включен в други „.c“ файлове. Този файл действа като връзка между данните, разпръснати по множество файлове.

main_prog.c: Това е основният файл за изпълнение. Когато това се изпълнява, тогава се извиква функция към функции, в които са дефинирани в други C файлове, заедно със структури.

Access_pfile.c: Това е файл, съдържащ структура. Тъй като „struct“ изисква разпределение и де-разпределение на паметта, се използват някои функции от стандартната C библиотека като „malloc ()“ и „alloc ()“.

Файл: 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

Файл: 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.
)

Файл: 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;
)

изход:

заключение

Капсулирането е водещата стъпка към обектно-ориентираното програмиране. Тази статия дава информация за капсулирането в C. Използвайки accessor и mutator методи, модификатори за достъп, можем да използваме и капсулирането в C #, C ++, PHP. Предимството на свойствата е, че потребителите могат да манипулират обекта от вътрешна гледна точка на данни, използвайки един именован елемент с данни и функционалност, дефинирани в него.

Препоръчителни статии

Това е ръководство за капсулирането в C. Тук обсъждаме въвеждането и необходимостта от капсулиране в C, заедно с предимство и примери. Можете да разгледате и другите ни предложени статии, за да научите повече -

  1. Абстракция срещу капсулация
  2. Капсулиране в Python
  3. Капсулиране в Java
  4. Капсулация в PHP
  5. Работа на капсулиране в JavaScript
  6. Капсулиране в JavaScript