Wprowadzenie do enkapsulacji w C.
Zdarzały się sytuacje, w których ze względu na wymagania biznesowe musieliśmy pisać skomplikowany kod. Ten kod nie będzie przyjazny dla użytkownika i wygląda na trudny do zrozumienia. Aby program był łatwiejszy do odczytania, możemy owinąć złożony fragment kodu w kapsułce i ukryć go. Będzie to również służyć jako dodatkowa warstwa ochrony przed złośliwymi zastrzykami w kodzie. Następnie możemy użyć tego fragmentu kodu, wywołując jego instancję w programie głównym, zamiast pisać całą grupę złożonych linii. Ta funkcja nazywa się enkapsulacją. Jest to jedna z podstawowych cech języków obiektowych. Jednak nie ogranicza się to tylko do języków OOP. W języku C enkapsulacja występuje pomimo braku prywatnych i publicznych słów kluczowych. Z enkapsulacji korzystają także inne języki programowania, takie jak C #, C ++, PHP, JAVA.
Działanie enkapsulacji w C.
Aby zrozumieć działanie enkapsulacji, rozważmy prawdziwy przykład. Zastanów się, jak duża firma ma własną jednostkę produkcyjną książek i dostarcza je klientom, łącząc się z zewnętrznymi dostawcami. Aby ten model biznesowy zadziałał, zaangażowane będą różne działy, takie jak dział zaopatrzenia, dział produkcji, dział sprzedaży, dział finansów. Dział zaopatrzenia zajmie się wszystkimi czynnościami związanymi z zaopatrzeniem, takimi jak zakup atramentu, papieru, okładek papierowych, drukarek itp. Dział sprzedaży będzie pracował nad marketingiem, sprzedażą płyt. Obowiązki działu finansowego do przeprowadzania audytów finansowych, obliczania zysków / strat i publikowania raportów, na podstawie których podejmowane będą kluczowe decyzje strategiczne. W przypadku spadku sprzedaży, co wpłynęło na finanse firmy. Wtedy dział finansów nie będzie miał dostępu do danych sprzedaży bezpośrednio. Dział finansowy będzie musiał poprosić członka zespołu sprzedaży o uzyskanie odpowiednich danych. To jest kapsułkowanie. Wszystkie działania finansowe są objęte jednym podmiotem zwanym „działem finansów”.
Ta koncepcja enkapsulacji jest używana w języku C do ukrywania i ochrony danych. Może być zaimplementowany, gdy główny program wywołujący ma obiekt, obiekt powinien być w stanie znaleźć odpowiednie funkcje i w ten sam sposób znajdować dane.
Zalety kapsułkowania w C.
- Hermetyzacja ukrywa wdrożenie programu, a zatem jest łatwa do odczytania i modyfikacji w przyszłości zgodnie z wymaganiami biznesowymi.
- Pozwala nam to wdrożyć zaktualizowaną wersję kodu tam, gdzie jest to wymagane, bez konieczności restrukturyzacji całego programu.
- Zabezpiecza program, udostępniając funkcję ukrywania danych.
- Hermetyzacja promuje modułowy sposób programowania zapewniający odporność kodu.
Dlaczego potrzebujemy enkapsulacji w C?
Potrzebujemy enkapsulacji w C, aby manipulować modyfikatorami dostępu w C. Modyfikatory dostępu są jawnie obecne w C ++, np. Publiczne, prywatne, ale nie są jawnie obecne w C. Mimo że możemy skorzystać z tej właściwości w C poprzez wdrożenie enkapsulacji. Hermetyzacja zapewnia również bezpieczny kod, który można lepiej zrozumieć na przykładzie podanym w poniższej sekcji. Ułatwia to dostosowywanie się do zmieniających się wymagań, ponieważ dowolny kod wymaga zmiany, którą można zmodyfikować w osobnym pliku bez wprowadzania zmian w programie głównym. To da do pewnego stopnia prosty i bezbłędny kod.
Przykład enkapsulacji w C.
Dane w języku C są domyślnie publiczne. Chociaż zmienne „Struct” można zadeklarować jako prywatne, definiując je oddzielnie od klasy głównej. Można to osiągnąć poprzez osobny nagłówek i źródłowe pliki C. Po pliku nagłówka następuje rozszerzenie „.h”, a po plikach C rozszerzenie „.C”. W poniższym przykładzie: Istnieją trzy pliki
- p_variable.h
- main_prog.c
- Access_pfile.c
p_variable.h: Jest to plik nagłówkowy, który należy dołączyć do innych plików „.c”. Ten plik działa jako łącze między danymi rozproszonymi po wielu plikach.
main_prog.c: Jest to główny plik implementacyjny. Po wykonaniu tej funkcji wywoływana jest funkcja, w której zdefiniowane są inne pliki C wraz ze strukturami.
Access_pfile.c: Jest to plik zawierający strukturę. Ponieważ „struct” wymaga alokacji i alokacji pamięci, używane są niektóre funkcje ze standardowej biblioteki C, takie jak „malloc ()” i „replace ()”.
Plik: 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
Plik: plik_pliku dostępu.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.
)
Plik: 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;
)
Wynik:
Wniosek
Hermetyzacja jest wiodącym krokiem w kierunku programowania obiektowego. W tym artykule podano informacje na temat enkapsulacji w C. Korzystając z metod akcesora i mutatora, modyfikatorów dostępu, możemy również wykorzystać enkapsulację w C #, C ++, PHP. Zaletą właściwości jest to, że użytkownicy mogą manipulować obiektem z wewnętrznego punktu widzenia danych, używając pojedynczego nazwanego elementu, w którym zdefiniowano dane i funkcje.
Polecane artykuły
Jest to przewodnik po enkapsulacji w C. Tutaj omawiamy wprowadzenie i potrzebę enkapsulacji w C wraz z Advantage i przykładami. Możesz także przejrzeć nasze inne sugerowane artykuły, aby dowiedzieć się więcej -
- Abstrakcja a enkapsulacja
- Hermetyzacja w Pythonie
- Hermetyzacja w Javie
- Hermetyzacja w PHP
- Działanie enkapsulacji w JavaScript
- Hermetyzacja w JavaScript