Latest web development tutorials

C ++ Datenabstraktion

Datenabstraktion bezieht sich nur kritische Informationen an die Außenwelt zur Verfügung zu stellen, und verstecken die Details der Implementierung von ihrem Hintergrund, dass die Leistung nur die notwendigen Informationen, ohne Details zu präsentieren.

Datenabstraktion ist eine Abhängigkeit von der Programmierschnittstelle und Implementierung Trennung (Design) Technologie.

Lassen Sie uns eine reale reale Beispiele nehmen, wie ein TV, Sie einschalten und ausschalten, den Kanal wechseln, die Lautstärke einstellen, zusätzliche externe Komponenten (wie Lautsprecher, Videorecorder, DVD-Spieler), aber Sie wissen nicht, ihre internen Details der Implementierung, das heißt, Sie wissen nicht, wie es durch ein Kabel Signal empfangen wird, wie Signal zu konvertieren und schließlich auf dem Bildschirm angezeigt.

Deshalb können wir den Fernseher auf interne Implementierung sagen und externen Schnittstellen getrennt, und Sie wissen nicht, ihre internen Prinzip unmittelbar durch seine externe Schnittstelle (wie die Power-Taste auf der Fernbedienung, Lautstärke-Regler) die TV steuern können.

Nun lassen Sie uns zur Sache kommen, ist es in Bezug auf die C ++ Programmierung, C ++Klassendatenabstraktion möglich.Sie an die Außenwelt für den Betrieb einer großen Anzahl von Datenobjekten ein gemeinsames Verfahren liefert, das heißt, in der Tat, die Außenwelt weiß, nicht die internen Klassenimplementierung.

Zum Beispiel kann Ihr Programm diesort () Funktion, ohne die Notwendigkeit , rufen Sie die Funktion der Algorithmen zu wissen , verwendet , um die Daten zu sortieren.Tatsächlich variieren die zugrundeliegende Funktion der Realisierung der Art aufgrund unterschiedlicher Repository, solange die gleiche Schnittstelle, Funktionsaufruf wie üblich.

In C ++ verwenden wir unsere eigeneKlasse abstrakten Datentyp (ADT) zu definieren.Sie können die Klasseostream coutObjekt zur Ausgabe von Daten auf die Standardausgabe verwenden, wie folgt:

#include <iostream>
using namespace std;

int main( )
{
   cout << "Hello C++" <<endl;
   return 0;
}

Hier müssen Sie nicht verstehen , wie diecout Text auf dem Bildschirm des Benutzers angezeigt.Sie müssen nur die öffentliche Schnittstelle zu, zu wissen, cout zugrunde liegende Implementierung frei geändert werden kann.

Registerkarte Zugriff zwingend Zusammenfassung

In C ++ verwenden wir die Registerkarte Zugriff die abstrakte Interface-Klasse zu definieren. Eine Klasse kann null oder mehrere Zugangs Etiketten enthalten:

  • Tag definiert die Verwendung der öffentlichen Mitglieder können alle Teile des Programms zugreifen. Zusammenfassung Hinblick auf eine Art von Daten ist öffentlich von seinen Mitgliedern festgelegt.
  • Die Verwendung von Private-Label definiert die Klassenmitglieder verwenden, können keinen Zugriff auf den Code. Privater Teil des Codes die Art der Haut Details der Implementierung verwenden.

Zugriffsfrequenz-Tag erscheint gibt es keine Begrenzung. Jeder Tag gibt den Zugang gefolgt von den Mitgliedern der definierten Zugriffsebenen. Assigned Zugriffsebene wird in der Tat bis zur nächsten Begegnung Registerkarte Zugriff bleiben oder das richtige Körper-Typ in Klammern angetroffen schließen.

Datenabstraktion Vorteile

Datenabstraktion hat zwei wichtige Vorteile:

  • Inner-Klasse wird von versehentlichen Benutzerebene Fehler geschützt Beschädigung der Zustand des Objekts verursacht werden.
  • Mit der Implementierung der Klasse kann im Laufe der Zeit ändern, um auf sich ändernde Anforderungen zu reagieren, oder diese Anforderungen nicht erfüllen, den Code Fehlerbericht auf Benutzerebene ändern.

Privat Abschnitt definiert die Datenelemente der Klasse, wenn auch nur in der Herstellung solcher Autoren frei, die Daten ändern können. Wenn Änderungen umgesetzt werden, müssen Sie nur den Code für die Klasse zu überprüfen, um zu sehen, welche Auswirkungen diese Veränderung bewirken kann. Wenn die Daten der Öffentlichkeit zugänglich ist, sind alle direkten Zugriff auf die alte Form der Datendarstellung Funktionselemente wahrscheinlich betroffen sein.

Abstrakt Instanzdaten

C ++ Programm, jede Klasse, mit den Mitgliedern der öffentlichen und privaten Datenabstraktion können als Beispiele 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. Privat Mitgliederinsgesamt Benutzer müssen nicht wissen, aber die Klasse kann notwendig arbeiten.

Design Strategy

Abstract Code in Schnittstelle und Implementierung zu trennen. So bei der Konstruktion von Komponenten muss die Schnittstelle unabhängig bleiben Umsetzungs, so dass, wenn man die zugrunde liegende Implementierung ändern, wird die Grenzfläche unverändert bleiben.

In diesem Fall unabhängig von jedem Programm über die Schnittstelle, wird die Schnittstelle nicht beeinträchtigt werden, um nur die letzte Neukompilierung realisieren.