C ++ - Kapselung (mit Beispielen)

In diesem Tutorial lernen wir anhand von Beispielen die Kapselung in C ++ kennen.

Die Kapselung ist eines der Hauptmerkmale der objektorientierten Programmierung. Es beinhaltet die Bündelung von Datenelementen und Funktionen innerhalb einer einzelnen Klasse.

Das Bündeln ähnlicher Datenelemente und Funktionen innerhalb einer Klasse hilft auch beim Ausblenden von Daten.

C ++ Kapselung

Im Allgemeinen ist die Kapselung ein Prozess, bei dem ähnlicher Code an einer Stelle verpackt wird.

In C ++ können wir Datenelemente und Funktionen bündeln, die innerhalb einer einzelnen Klasse zusammenarbeiten. Beispielsweise,

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

Im obigen Programm getArea()berechnet die Funktion die Fläche eines Rechtecks. Um die Fläche zu berechnen, benötigt sie Länge und Breite.

Daher werden die Datenelemente (Länge und Breite) und die Funktion getArea()in der RectangleKlasse zusammengehalten.

Kapselung in C ++

Beispiel 1: C ++ - Kapselung

 // 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; )

Ausgabe

 Fläche = 48

Im obigen Beispiel berechnen wir die Fläche eines Rechtecks.

Um eine Fläche zu berechnen, benötigen wir zwei Variablen: Länge und Breite sowie eine Funktion : getArea(). Daher haben wir diese Variablen gebündelt und funktionieren in einer einzigen Klasse namens Rectangle.

Hier kann auch von anderen Klassen auf die Variablen und Funktionen zugegriffen werden. Daher sind dies keine versteckten Daten .

Dies ist nur eine Kapselung . Wir halten nur ähnliche Codes zusammen.

Hinweis: Die Kapselung wird häufig als Verstecken von Daten betrachtet, aber das stimmt nicht ganz.

Kapselung bezieht sich auf die Bündelung verwandter Felder und Methoden. Dies kann verwendet werden, um das Ausblenden von Daten zu erreichen. Die Kapselung an sich ist kein Verstecken von Daten.

Warum Verkapselung?

  • In C ++ hilft uns die Kapselung, verwandte Daten und Funktionen zusammenzuhalten, wodurch unser Code sauberer und einfacher zu lesen ist.
    • Es hilft, die Änderung unserer Datenelemente zu kontrollieren.
      Stellen Sie sich eine Situation vor, in der das Längenfeld in einer Klasse nicht negativ sein soll. Hier können wir die Längenvariable privat machen und die Logik innerhalb der Methode anwenden setAge(). Beispielsweise,
       class Rectangle ( private: int age; public: void setLength(int len) ( if (len>= 0) length = len; ) );
    • Die Getter- und Setter-Funktionen bieten unseren Klassenmitgliedern Lese- oder Schreibzugriff . Beispielsweise,
       getLength() // provides read-only access setLength() // provides write-only access
    • Es hilft, Komponenten eines Systems zu entkoppeln. Zum Beispiel können wir Code in mehrere Bundles kapseln.
      Diese entkoppelten Komponenten (Bundles) können unabhängig und gleichzeitig entwickelt, getestet und debuggt werden. Änderungen an einer bestimmten Komponente haben keine Auswirkungen auf andere Komponenten.
    • Wir können das Verstecken von Daten auch durch Kapselung erreichen. Wenn wir in Beispiel 1 die Variablen für Länge und Breite in privateoder ändern protected, ist der Zugriff auf diese Felder eingeschränkt.
      Und sie werden vor äußeren Klassen verborgen gehalten. Dies wird als Datenverstecken bezeichnet .

    Ausblenden von Daten

    Das Ausblenden von Daten ist eine Möglichkeit, den Zugriff unserer Datenmitglieder einzuschränken, indem die Implementierungsdetails ausgeblendet werden. Die Kapselung bietet auch eine Möglichkeit zum Ausblenden von Daten.

    Wir können Zugriffsmodifikatoren verwenden, um das Ausblenden von Daten in C ++ zu erreichen. Beispielsweise,

    Beispiel 2: Ausblenden von C ++ - Daten mithilfe des privaten Bezeichners

     #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; )

    Ausgabe

     Länge = 8 Breite = 6 Fläche = 48

    Hier haben wir die Längen- und Breitenvariablen gemacht private.

    Dies bedeutet, dass auf diese Variablen außerhalb der RectangleKlasse nicht direkt zugegriffen werden kann .

    Um diese privaten Variablen zugreifen, haben wir verwendete publicFunktionen setLength(), getLength(), setBreadth(), und getBreadth(). Diese werden als Getter- und Setter-Funktionen bezeichnet.

    Herstellung der Variablen privaten erlaubt uns nicht autorisierten Zugriff beschränken von außerhalb der Klasse. Dies ist das Verstecken von Daten .

    Wenn wir versuchen, auf die Variablen der main()Klasse zuzugreifen , wird eine Fehlermeldung angezeigt.

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

Interessante Beiträge...