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.

  1. Hermetyzacja ukrywa wdrożenie programu, a zatem jest łatwa do odczytania i modyfikacji w przyszłości zgodnie z wymaganiami biznesowymi.
  2. Pozwala nam to wdrożyć zaktualizowaną wersję kodu tam, gdzie jest to wymagane, bez konieczności restrukturyzacji całego programu.
  3. Zabezpiecza program, udostępniając funkcję ukrywania danych.
  4. 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

  1. p_variable.h
  2. main_prog.c
  3. 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 -

  1. Abstrakcja a enkapsulacja
  2. Hermetyzacja w Pythonie
  3. Hermetyzacja w Javie
  4. Hermetyzacja w PHP
  5. Działanie enkapsulacji w JavaScript
  6. Hermetyzacja w JavaScript