Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> C Sprache

Datenabstraktion in C++

Datenabstraktion bezieht sich darauf, der Außenwelt nur wesentliche Informationen bereitzustellen und ihre Hintergrunddetails zu verbergen, d. h. die erforderlichen Informationen im Programm darzustellen, ohne die Details zu präsentieren.

Datenabstraktion ist eine Programmier- (und Design-) Technik, die auf der Trennung von Schnittstelle und Implementierung beruht.

Nehmen wir ein reales Beispiel eines Fernsehers, den Sie ein- und ausschalten, den Kanal wechseln, die Lautstärke regeln und externe Komponenten wie Lautsprecher, Videorecorder und DVD-Player hinzufügen können, ABER Sie kennen seine internen Details nicht Das heißt, Sie wissen nicht, wie es Signale über die Luft oder über ein Kabel empfängt, wie es sie übersetzt und schließlich auf dem Bildschirm anzeigt.

Daher können wir sagen, dass ein Fernseher seine interne Implementierung klar von seiner externen Schnittstelle trennt, und Sie können mit seinen Schnittstellen wie dem Einschaltknopf, dem Kanalwechsler und der Lautstärkeregelung spielen, ohne etwas über seine Interna zu wissen.

In C++ bieten Klassen ein hohes Maß an Datenabstraktion . Sie stellen der Außenwelt genügend öffentliche Methoden zur Verfügung, um mit der Funktionalität des Objekts zu spielen und Objektdaten zu manipulieren, d. h. den Zustand, ohne tatsächlich zu wissen, wie die Klasse intern implementiert wurde.

Beispielsweise kann Ihr Programm sort() aufrufen Funktion, ohne zu wissen, welchen Algorithmus die Funktion tatsächlich verwendet, um die gegebenen Werte zu sortieren. Tatsächlich könnte sich die zugrunde liegende Implementierung der Sortierfunktion zwischen Versionen der Bibliothek ändern, und solange die Schnittstelle gleich bleibt, wird Ihr Funktionsaufruf immer noch funktionieren.

In C++ verwenden wir Klassen unsere eigenen abstrakten Datentypen (ADT) zu definieren. Sie können den cout verwenden Objekt der Klasse ostream um Daten wie folgt zur Standardausgabe zu streamen −

Live-Demo
#include <iostream>
using namespace std;

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

Hier müssen Sie nicht verstehen, wie cout zeigt den Text auf dem Bildschirm des Benutzers an. Sie müssen nur die öffentliche Schnittstelle kennen und die zugrunde liegende Implementierung von „cout“ kann sich frei ändern.

Zugriffsbezeichnungen erzwingen Abstraktion

In C++ verwenden wir Zugriffslabels, um die abstrakte Schnittstelle zur Klasse zu definieren. Eine Klasse kann null oder mehr Zugriffskennzeichen enthalten −

Es gibt keine Beschränkungen, wie oft ein Zugriffsetikett erscheinen darf. Jede Zugriffsbezeichnung gibt die Zugriffsebene der nachfolgenden Mitgliedsdefinitionen an. Die angegebene Zugriffsebene bleibt in Kraft, bis das nächste Zugriffslabel angetroffen oder die schließende rechte Klammer des Klassenkörpers gesehen wird.

Vorteile der Datenabstraktion

Die Datenabstraktion bietet zwei wichtige Vorteile −

Indem Datenelemente nur im privaten Abschnitt der Klasse definiert werden, kann der Autor der Klasse Änderungen an den Daten vornehmen. Wenn sich die Implementierung ändert, muss nur der Klassencode untersucht werden, um zu sehen, welche Auswirkungen die Änderung haben kann. Wenn Daten öffentlich sind, kann jede Funktion, die direkt auf die Datenelemente der alten Darstellung zugreift, beschädigt werden.

Beispiel für Datenabstraktion

Jedes C++-Programm, in dem Sie eine Klasse mit öffentlichen und privaten Membern implementieren, ist ein Beispiel für Datenabstraktion. Betrachten Sie das folgende Beispiel −

Live-Demo
#include <iostream>
using namespace std;

class Adder {
   public:
      // constructor
      Adder(int i = 0) {
         total = i;
      }
      
      // interface to outside world
      void addNum(int number) {
         total += number;
      }
      
      // interface to outside world
      int getTotal() {
         return total;
      };
      
   private:
      // hidden data from outside world
      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 er das folgende Ergebnis −

Total 60

Obige Klasse addiert Zahlen und gibt die Summe zurück. Die öffentlichen Mitglieder - addNum und getTotal sind die Schnittstellen zur Außenwelt und ein Benutzer muss sie kennen, um die Klasse zu verwenden. Das private Mitglied gesamt ist etwas, worüber der Benutzer nichts wissen muss, aber für den ordnungsgemäßen Betrieb der Klasse erforderlich ist.

Strategie entwerfen

Abstraktion trennt Code in Schnittstelle und Implementierung. Während Sie also Ihre Komponente entwerfen, müssen Sie die Schnittstelle unabhängig von der Implementierung halten, damit die Schnittstelle intakt bleibt, wenn Sie die zugrunde liegende Implementierung ändern.

In diesem Fall wären alle Programme, die diese Schnittstellen verwenden, nicht betroffen und müssten nur mit der neuesten Implementierung neu kompiliert werden.


C Sprache

  1. C++-Datentypen
  2. C++-Operatoren
  3. C++-Klassen und -Objekte
  4. C++-Klassenvorlagen
  5. C++ Char-Datentyp mit Beispielen
  6. Java - Abstraktion
  7. Java - Datenstrukturen
  8. Speicherklassen in C++
  9. C++-Datenstrukturen
  10. Polymorphismus in C++