Latest web development tutorials

C ++ Datenkapselung

Alle C ++ Programme haben zwei grundlegende Elemente:

  • Programmanweisungen (Code): Dieser Teil des Programms ist es, eine Aktion auszuführen, werden sie Funktionen aufgerufen.
  • Programmdaten: Die Daten werden Programminformationen, Programmfunktionen betroffen sein werden.

Verkapselung ist ein Konzept der objektorientierten Programmierung in der Funktionsdaten und Manipulieren von Daten miteinander verbunden, so dass Störungen von außen und Missbrauch zu verhindern, wodurch gewährleistet Sicherheit. Datenkapselung von weiteren wichtigen OOP - Konzepte kommen, nämlichDaten versteckt.

Datenkapselung ist ein Mechanismus , auf Funktionsdaten und Manipulation von DatenabstraktiongebündeltenDatenein ausgesetzt ist , nur zu den Bedienoberflächen und den Mechanismus versteckt Implementierungsdetails.

Durch die Schaffung einer C ++Klassen Unterstützung Verkapselung und Daten versteckt (öffentlich, geschützt, privat).Wir wissen bereits, dass die Klasse private Mitglieder (privat) enthält, an die Mitglieder des (geschützt) und die Mitglieder der öffentlichen (public) Mitglieder zu schützen. Standardmäßig werden alle in der Klasse definierten Elemente sind privat. Zum Beispiel:

class Box
{
   public:
      double getVolume(void)
      {
         return length * breadth * height;
      }
   private:
      double length;      // 长度
      double breadth;     // 宽度
      double height;      // 高度
};

Variable Länge, Breite und Höhe sind private (privat). Das bedeutet, dass sie nur von anderen Mitgliedern der Box-Klasse zugegriffen werden kann, können Sie andere Teile des Programms nicht zugreifen. Dies ist ein Weg-Paket zu erreichen.

Um ein Mitglied der Öffentlichkeit Klasse zu werden (das heißt, andere Teile des Programms zugreifen können), müssen Sie das Schlüsselwortpublic verwenden , bevor diese Elemente deklariert sind.Alle Bezeichner sind in der Öffentlichkeit hinter der Variable oder Funktion definiert ist, kann von allen anderen Funktionen verwendet werden, um das Programm zuzugreifen.

Die Klasse wird als Freund einer anderen Klasse definiert, wäre es Implementierungsdetails, wodurch Verkapselung aus. Idealerweise so weit wie möglich außerhalb verstecken Implementierungsdetails der einzelnen Klassen.

Beispiele von Datenpaketen

C ++ Programm, jede Klasse mit Mitgliedern der öffentlichen und privaten Daten können als Beispiele für Verkapselung und Datenabstraktion verwendet werden. Betrachten Sie die folgenden Beispiele:

#include <iostream>
using namespace std;

class Adder{
   public:
      // 构造函数
      Adder(int i = 0)
      {
        total = i;
      }
      // 对外的接口
      void addNum(int number)
      {
          total += number;
      }
      // 对外的接口
      int getTotal()
      {
          return total;
      };
   private:
      // 对外隐藏的数据
      int total;
};
int main( )
{
   Adder a;
   
   a.addNum(10);
   a.addNum(20);
   a.addNum(30);

   cout << "Total " << a.getTotal() <<endl;
   return 0;
}

Wenn der obige Code kompiliert und ausgeführt wird, erzeugt es die folgenden Ergebnisse:

Total 60

Die Klasse über den Zahlen zusammen und gibt die Summe. Öffentliche MitgliederaddNum und getTotalexterne Schnittstelle ist, müssen die Benutzer zu kennen , um ihre Klasse zu verwenden. Ausländische private MitgliederInsgesamt ist versteckt, Benutzer müssen es nicht verstehen, aber es ist eine normale Klassenarbeit erforderlich.

Design Strategy

Unter normalen Umständen werden wir eine private Klasse - Mitgliedsstaat (privat) einrichten, es sei denn , wir wirklich ausgesetzt werden müssen, um einegute Kapselung zu gewährleisten.

Dies wird in der Regel auf die Datenelemente angewendet, aber es ist gleichermaßen anwendbar auf alle Mitglieder, einschließlich virtueller Funktionen.