Введение в инкапсуляцию в C

Были случаи, когда из-за требований бизнеса нам нужно было писать сложный код. Этот код не будет удобным и выглядит сложным для понимания. Чтобы программа выглядела проще для чтения, мы можем заключить сложный фрагмент кода в капсулу и спрятать его. Это также послужит дополнительным уровнем защиты от любых вредоносных инъекций в коде. Затем мы можем использовать этот фрагмент кода, вызывая его экземпляр в основной программе, а не писать целую кучу сложных строк. Эта функция называется инкапсуляцией. Это одна из основных особенностей объектно-ориентированных языков. Тем не менее, он не ограничивается только языками ООП. В C инкапсуляция происходит несмотря на отсутствие частных и открытых ключевых слов. Инкапсуляция также используется различными другими языками программирования, такими как C #, C ++, PHP, JAVA.

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

Чтобы понять, как работает инкапсуляция, давайте рассмотрим реальный пример. Рассмотрим большую компанию, которая имеет собственное производство книг и доставляет их покупателям, связываясь со сторонними поставщиками. Чтобы эта бизнес-модель работала, будут задействованы различные отделы, такие как отдел закупок, производственный отдел, отдел продаж, финансовый отдел. Отдел закупок будет заботиться обо всех связанных с закупками мероприятиях, таких как закупка чернил, бумаги, бумажных обложек, принтеров и т. Д. Отдел продаж будет заниматься маркетингом, продажами записей. Ответственность финансового отдела за проведение финансового аудита, расчет прибылей и убытков и публикацию отчетов, на основании которых будут приниматься ключевые стратегические решения. В случае, если продажи упали, и это повлияло на финансы бизнеса. Тогда финансовому отделу не будет разрешен прямой доступ к данным о продажах. Финансовый отдел должен будет попросить члена отдела продаж получить соответствующие данные. Это инкапсуляция. Вся финансовая деятельность объединена в одно подразделение, называемое «финансовый отдел».

Эта концепция инкапсуляции используется на языке C для сокрытия и защиты данных. Это может быть реализовано, когда основная вызывающая программа имеет объект, объект должен быть в состоянии найти применимые функции и таким же образом они находят данные.

Преимущества инкапсуляции в C

  1. Инкапсуляция скрывает реализацию программы и, следовательно, легко читается и изменяется в будущем в соответствии с требованиями бизнеса.
  2. Это позволяет нам развертывать обновленную версию кода там, где это требуется, без необходимости реструктуризации всей программы.
  3. Он защищает программу, предоставляя функции сокрытия данных.
  4. Инкапсуляция способствует модульному способу программирования, делающему код устойчивым.

Зачем нам нужна инкапсуляция в C?

Нам нужна инкапсуляция в 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. Используя методы доступа и мутатора, модификаторы доступа, мы можем использовать инкапсуляцию также в C #, C ++, PHP. Преимущество свойств заключается в том, что пользователи могут манипулировать объектом с точки зрения внутренних данных, используя один именованный элемент, в котором определены данные и функциональные возможности.

Рекомендуемые статьи

Это руководство по инкапсуляции в C. Здесь мы обсуждаем введение и необходимость инкапсуляции в C вместе с Advantage и примерами. Вы также можете просмотреть наши другие предлагаемые статьи, чтобы узнать больше -

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