Введение в инкапсуляцию в C
Были случаи, когда из-за требований бизнеса нам нужно было писать сложный код. Этот код не будет удобным и выглядит сложным для понимания. Чтобы программа выглядела проще для чтения, мы можем заключить сложный фрагмент кода в капсулу и спрятать его. Это также послужит дополнительным уровнем защиты от любых вредоносных инъекций в коде. Затем мы можем использовать этот фрагмент кода, вызывая его экземпляр в основной программе, а не писать целую кучу сложных строк. Эта функция называется инкапсуляцией. Это одна из основных особенностей объектно-ориентированных языков. Тем не менее, он не ограничивается только языками ООП. В C инкапсуляция происходит несмотря на отсутствие частных и открытых ключевых слов. Инкапсуляция также используется различными другими языками программирования, такими как C #, C ++, PHP, JAVA.
Работа инкапсуляции в C
Чтобы понять, как работает инкапсуляция, давайте рассмотрим реальный пример. Рассмотрим большую компанию, которая имеет собственное производство книг и доставляет их покупателям, связываясь со сторонними поставщиками. Чтобы эта бизнес-модель работала, будут задействованы различные отделы, такие как отдел закупок, производственный отдел, отдел продаж, финансовый отдел. Отдел закупок будет заботиться обо всех связанных с закупками мероприятиях, таких как закупка чернил, бумаги, бумажных обложек, принтеров и т. Д. Отдел продаж будет заниматься маркетингом, продажами записей. Ответственность финансового отдела за проведение финансового аудита, расчет прибылей и убытков и публикацию отчетов, на основании которых будут приниматься ключевые стратегические решения. В случае, если продажи упали, и это повлияло на финансы бизнеса. Тогда финансовому отделу не будет разрешен прямой доступ к данным о продажах. Финансовый отдел должен будет попросить члена отдела продаж получить соответствующие данные. Это инкапсуляция. Вся финансовая деятельность объединена в одно подразделение, называемое «финансовый отдел».
Эта концепция инкапсуляции используется на языке C для сокрытия и защиты данных. Это может быть реализовано, когда основная вызывающая программа имеет объект, объект должен быть в состоянии найти применимые функции и таким же образом они находят данные.
Преимущества инкапсуляции в C
- Инкапсуляция скрывает реализацию программы и, следовательно, легко читается и изменяется в будущем в соответствии с требованиями бизнеса.
- Это позволяет нам развертывать обновленную версию кода там, где это требуется, без необходимости реструктуризации всей программы.
- Он защищает программу, предоставляя функции сокрытия данных.
- Инкапсуляция способствует модульному способу программирования, делающему код устойчивым.
Зачем нам нужна инкапсуляция в C?
Нам нужна инкапсуляция в C, чтобы манипулировать модификаторами доступа в C. Модификаторы доступа явно присутствуют в C ++ для, например, Public, private, но они явно не присутствуют в C. Хотя мы можем использовать это свойство в C, реализуя инкапсуляцию. Инкапсуляция также обеспечивает безопасный код, который можно лучше понять на примере, приведенном в следующем разделе. Это способствует адаптируемости к изменяющимся требованиям, поскольку любой код требует изменения, может быть изменен в отдельном файле без каких-либо изменений в основной программе. Это даст простой и безошибочный код до некоторой степени.
Пример инкапсуляции в C
Данные на языке Си общедоступны по умолчанию. Хотя переменные «Struct» могут быть объявлены закрытыми, определяя их отдельно от основного класса. Это может быть достигнуто с помощью отдельного заголовочного и исходного C-файлов. За заголовочным файлом следует расширение «.h», а за файлами C следует расширение «.C». В приведенном ниже примере: есть три файла
- p_variable.h
- main_prog.c
- 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 и примерами. Вы также можете просмотреть наши другие предлагаемые статьи, чтобы узнать больше -
- Абстракция против инкапсуляции
- Инкапсуляция в Python
- Инкапсуляция в Java
- Инкапсуляция в PHP
- Работа инкапсуляции в JavaScript
- Инкапсуляция в JavaScript