Вступ до інкапсуляції в С

Були випадки, коли через бізнес-вимоги нам потрібно писати складний код. Цей код не буде зручним для користувачів і його важко зрозуміти. Для того, щоб програма виглядала легше для читання, ми можемо загорнути складний фрагмент коду в капсулу і приховати його. Це також послужить додатковим рівнем захисту від будь-яких шкідливих ін'єкцій у код. Тоді ми можемо використовувати цей фрагмент коду, викликаючи його екземпляр у головній програмі, а не записуючи цілу купу складних рядків. Ця особливість називається інкапсуляцією. Це одна з основних особливостей об'єктно-орієнтованих мов. Однак він не обмежується лише мовами OOP. У C, інкапсуляція була незважаючи на відсутність приватних та публічних ключових слів. Інкапсуляція використовується різними іншими мовами програмування, такими як C #, C ++, PHP, JAVA.

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

Для розуміння роботи інкапсуляції розглянемо приклад із реального життя. Подумайте про велику компанію, яка має власний власний виробничий підрозділ книг і доставляє їх покупцям, зв’язуючись із сторонніми постачальниками. Для роботи цієї бізнес-моделі будуть задіяні різні відділи, такі як відділ закупівель, виробничий відділ, відділ продажу, відділ фінансів. Відділ закупівель піклується про всі заходи, пов'язані із закупівлями, такі як закупівля чорнила, паперів, паперових обкладинок, принтерів тощо. Відділ продажів працюватиме над маркетингом, рекордною продажем. Обов'язки відділу фінансів проводити фінансовий аудит, підраховувати прибутки / збитки та публікувати звіти, на підставі яких приймаються ключові стратегічні рішення. У випадку, якщо продажі знизилися, це позначилося на фінансах бізнесу. Тоді відділ фінансів не матиме доступу до даних про продажі. Фінансовому департаменту доведеться звернутися із проханням до члена торгової групи отримати відповідні дані. Це інкапсуляція. Усі види фінансів охоплені однією організацією, яка називається "фінансовий департамент".

Ця концепція інкапсуляції використовується мовою С для приховування та захисту даних. Він може бути реалізований, коли в основній програмі виклику є об'єкт, об'єкт повинен бути в змозі знайти застосовні функції і таким же чином вони знайти дані.

Переваги інкапсуляції в С

  1. Інкапсуляція приховує реалізацію програми, а отже, її легко читати та змінювати в майбутньому відповідно до вимог бізнесу.
  2. Це дозволяє нам розгорнути оновлену версію коду там, де потрібно, не вимагаючи реструктуризації всієї програми.
  3. Він захищає програму, забезпечуючи функціональність приховування даних.
  4. Інкапсуляція сприяє модульному способу програмування, роблячи код стійким.

Чому нам потрібна інкапсуляція в С?

Нам потрібна інкапсуляція на C, щоб маніпулювати модифікаторами доступу в C. Модифікатори доступу явно присутні у C ++, наприклад, для публічних, приватних, але вони явно відсутні в C. Хоча ми можемо використовувати цю властивість у С, реалізуючи інкапсуляцію. Інкапсуляція також забезпечує захищений код, який можна краще зрозуміти на прикладі, наведеному в розділі нижче. Це сприяє пристосованості до змін вимог, оскільки той, який вимагає зміни, може бути змінений в окремому файлі, не змінюючи нічого в основній програмі. Це дасть простий і без помилок код до деякої міри.

Приклад інкапсуляції в С

Дані на мові C за замовчуванням є загальнодоступними. Хоча змінні “Struct” можна визнати приватними, визначивши їх окремо від основного класу. Цього можна досягти, маючи окремий заголовок та вихідні файли С. Заголовок файлу супроводжується розширенням ".h", а за файлами C - розширенням ".C". У наведеному нижче прикладі: Є три файли

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

p_variable.h: Це файл заголовка, який повинен бути включений до інших файлів ".c". Цей файл діє як зв’язок між даними, розкиданими по декількох файлах.

main_prog.c: Це основний файл реалізації. Коли це виконується, функціональний виклик здійснюється до функцій, які визначені в інших файлах С разом із структурами.

Access_pfile.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. Використовуючи методи доступу та мутаторів, модифікатори доступу, ми можемо використовувати інкапсуляцію також у C #, C ++, PHP. Перевага властивостей полягає в тому, що користувачі можуть маніпулювати об'єктом з внутрішньої точки зору даних, використовуючи один названий елемент, що має в ньому дані та функціональні можливості.

Рекомендовані статті

Це посібник з інкапсуляції в C. Тут ми обговорюємо введення та потребу інкапсуляції в C разом із перевагою та прикладами. Ви також можете ознайомитися з іншими запропонованими нами статтями, щоб дізнатися більше -

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