Hermetyzacja C ++ (z przykładami)

W tym samouczku nauczymy się hermetyzacji w C ++ na podstawie przykładów.

Hermetyzacja jest jedną z kluczowych cech programowania obiektowego. Obejmuje łączenie składowych danych i funkcji w ramach jednej klasy.

Łączenie podobnych członków danych i funkcji w klasie razem pomaga również w ukrywaniu danych.

Hermetyzacja w C ++

Ogólnie hermetyzacja to proces pakowania podobnego kodu w jednym miejscu.

W C ++ możemy łączyć składowe danych i funkcje, które działają razem w ramach jednej klasy. Na przykład,

 class Rectangle ( public: int length; int breadth; int getArea() ( return length * breadth; ) );

W powyższym programie funkcja getArea()oblicza pole prostokąta. Aby obliczyć powierzchnię, potrzebna jest długość i szerokość.

Dlatego składowe danych (długość i szerokość) oraz funkcja getArea()są przechowywane razem w Rectangleklasie.

Hermetyzacja w C ++

Przykład 1: Hermetyzacja w C ++

 // Program to calculate the area of a rectangle #include using namespace std; class Rectangle ( public: // Variables required for area calculation int length; int breadth; // Constructor to initialize variables Rectangle(int len, int brth) : length(len), breadth(brth) () // Function to calculate area int getArea() ( return length * breadth; ) ); int main() ( // Create object of Rectangle class Rectangle rect(8, 6); // Call getArea() function cout << "Area = " << rect.getArea(); return 0; )

Wynik

 Powierzchnia = 48

W powyższym przykładzie obliczamy pole prostokąta.

Aby obliczyć powierzchnię, potrzebujemy dwóch zmiennych: długość i szerokość oraz funkcję: getArea(). W związku z tym umieściliśmy te zmienne i funkcje w jednej klasie o nazwie Rectangle.

Tutaj do zmiennych i funkcji można również uzyskać dostęp z innych klas. Dlatego nie jest to ukrywanie danych .

To tylko hermetyzacja . Po prostu trzymamy razem podobne kody.

Uwaga: ludzie często uważają hermetyzację za ukrywanie danych, ale to nie do końca prawda.

Hermetyzacja odnosi się do grupowania powiązanych pól i metod razem. Można to wykorzystać do ukrycia danych. Hermetyzacja sama w sobie nie oznacza ukrywania danych.

Dlaczego kapsułkowanie?

  • W C ++ hermetyzacja pomaga nam zachować powiązane dane i funkcje razem, dzięki czemu nasz kod jest bardziej przejrzysty i czytelny.
    • Pomaga kontrolować modyfikację naszych członków danych.
      Rozważmy sytuację, w której chcemy, aby pole długości w klasie było nieujemne. Tutaj możemy ustawić zmienną długości jako prywatną i zastosować logikę wewnątrz metody setAge(). Na przykład,
       class Rectangle ( private: int age; public: void setLength(int len) ( if (len>= 0) length = len; ) );
    • Funkcje pobierające i ustawiające zapewniają dostęp tylko do odczytu lub tylko do zapisu dla członków naszej klasy. Na przykład,
       getLength() // provides read-only access setLength() // provides write-only access
    • Pomaga odsprzęgać komponenty systemu. Na przykład możemy hermetyzować kod w wielu pakietach.
      Te oddzielone komponenty (pakiety) można opracowywać, testować i debugować niezależnie i jednocześnie. Wszelkie zmiany w danym komponencie nie mają żadnego wpływu na inne komponenty.
    • Możemy również uzyskać ukrywanie danych za pomocą enkapsulacji. W przykładzie 1 , jeśli zmienimy zmienne długości i szerokości na privatelub protected, to dostęp do tych pól jest ograniczony.
      I są trzymani w ukryciu przed klasami zewnętrznymi. Nazywa się to ukrywaniem danych .

    Ukrywanie danych

    Ukrywanie danych to sposób na ograniczenie dostępu naszych członków danych poprzez ukrycie szczegółów implementacji. Hermetyzacja umożliwia także ukrywanie danych.

    Możemy użyć modyfikatorów dostępu, aby uzyskać ukrywanie danych w C ++. Na przykład,

    Przykład 2: Ukrywanie danych w C ++ przy użyciu prywatnego specyfikatora

     #include using namespace std; class Rectangle ( private: // Variables required for area calculation int length; int breadth; public: // Setter function for length void setLength(int len) ( length = len; ) // Setter function for breadth void setBreadth(int brth) ( breadth = brth; ) // Getter function for length int getLength() ( return length; ) // Getter function for breadth int getBreadth() ( return breadth; ) // Function to calculate area int getArea() ( return length * breadth; ) ); int main() ( // Create object of Rectangle class Rectangle rectangle1; // Initialize length using Setter function rectangle1.setLength(8); // Initialize breadth using Setter function rectangle1.setBreadth(6); // Access length using Getter function cout << "Length = " << rectangle1.getLength() << endl; // Access breadth using Getter function cout << "Breadth = " << rectangle1.getBreadth() << endl; // Call getArea() function cout << "Area = " << rectangle1.getArea(); return 0; )

    Wynik

     Długość = 8 Szerokość = 6 Powierzchnia = 48

    Tutaj utworzyliśmy zmienne długości i szerokości private.

    Oznacza to, że do tych zmiennych nie można uzyskać bezpośredniego dostępu poza Rectangleklasą.

    Aby uzyskać dostęp do tych zmiennych prywatnych, użyliśmy publicfunkcji setLength(), getLength(), setBreadth(), i getBreadth(). Nazywa się to funkcjami pobierającymi i ustawiającymi.

    Uczynienie zmiennych prywatnymi pozwoliło nam ograniczyć nieautoryzowany dostęp spoza klasy. To jest ukrywanie danych .

    Jeśli spróbujemy uzyskać dostęp do zmiennych z main()klasy, otrzymamy błąd.

     // error: rectangle1.length is inaccessible rectangle1.length = 8; // error: rectangle1.breadth is inaccessible rectangle1.length = 6;

Interesujące artykuły...