logo

Abstrakter Datentyp in der Datenstruktur

Bevor wir den abstrakten Datentyp kennen, sollten wir wissen, was eine Datenstruktur ist.

Was ist Datenstruktur?

Eine Datenstruktur ist eine Technik zum Organisieren der Daten, damit die Daten effizient genutzt werden können. Es gibt zwei Möglichkeiten, die Datenstruktur anzuzeigen:

    Mathematische/logische/abstrakte Modelle/Ansichten:Die Datenstruktur ist die Art und Weise, die Daten zu organisieren, die einige Protokolle oder Regeln erfordert. Diese Regeln müssen modelliert werden, die unter das logische/abstrakte Modell fallen.Implementierung:Der zweite Teil ist der Implementierungsteil. Die Regeln müssen mit einer Programmiersprache implementiert werden.

Warum Datenstruktur?

Die Verwendung der Datenstruktur bietet folgende Vorteile:

  • Dies sind die wesentlichen Zutaten für die Erstellung schneller und leistungsstarker Algorithmen.
  • Sie helfen uns, die Daten zu verwalten und zu organisieren.
  • Datenstrukturen machen den Code sauberer und verständlicher.

Was ist ein abstrakter Datentyp?

Ein abstrakter Datentyp ist eine Abstraktion einer Datenstruktur, die nur die Schnittstelle bereitstellt, an die sich die Datenstruktur halten muss. Die Schnittstelle gibt keine spezifischen Details darüber an, was implementiert werden soll oder in welcher Programmiersprache.

Mit anderen Worten können wir sagen, dass abstrakte Datentypen Entitäten sind, die Definitionen von Daten und Operationen sind, aber keine Implementierungsdetails haben. In diesem Fall kennen wir die Daten, die wir speichern, und die Vorgänge, die mit den Daten ausgeführt werden können, aber wir wissen nichts über die Implementierungsdetails. Der Grund dafür, dass keine Implementierungsdetails vorliegen, liegt beispielsweise darin, dass jede Programmiersprache eine andere Implementierungsstrategie hat; Eine C-Datenstruktur wird mithilfe von Strukturen implementiert, während eine C++-Datenstruktur mithilfe von Objekten und Klassen implementiert wird.

Zum Beispiel, Eine Liste ist ein abstrakter Datentyp, der mithilfe eines dynamischen Arrays und einer verknüpften Liste implementiert wird. Eine Warteschlange wird mithilfe einer auf einer verknüpften Liste basierenden Warteschlange, einer Array-basierten Warteschlange und einer stapelbasierten Warteschlange implementiert. Eine Karte wird mithilfe einer Baumkarte, einer Hash-Karte oder einer Hash-Tabelle implementiert.

Abstraktes Datentypmodell

Bevor wir etwas über das abstrakte Datentypmodell erfahren, sollten wir etwas über Abstraktion und Kapselung wissen.

Java-String eines Arrays

Abstraktion: Hierbei handelt es sich um eine Technik, bei der die internen Details vor dem Benutzer verborgen bleiben und ihm nur die notwendigen Details angezeigt werden.

Kapselung: Es handelt sich um eine Technik zum Kombinieren der Daten und der Mitgliedsfunktion in einer einzigen Einheit, die als Kapselung bezeichnet wird.

Abstrakter Datentyp in der Datenstruktur

Die obige Abbildung zeigt das ADT-Modell. Es gibt zwei Arten von Modellen im ADT-Modell, nämlich die öffentliche Funktion und die private Funktion. Das ADT-Modell enthält auch die Datenstrukturen, die wir in einem Programm verwenden. In diesem Modell wird zunächst die Kapselung durchgeführt, d. h. alle Daten werden in einer einzigen Einheit, d. h. ADT, verpackt. Dann wird die Abstraktion durchgeführt. Das bedeutet, dass die Operationen gezeigt werden, die an der Datenstruktur ausgeführt werden können, und welche Datenstrukturen wir in einem Programm verwenden.

Lassen Sie uns den abstrakten Datentyp anhand eines Beispiels aus der Praxis verstehen.

Wenn wir das Smartphone betrachten. Wir schauen uns die hohen Spezifikationen des Smartphones an, wie zum Beispiel:

Zeichenfolge ist leer
  • 4 GB RAM
  • Snapdragon 2,2 GHz-Prozessor
  • 5-Zoll-LCD-Bildschirm
  • Zweifachkamera
  • Android 8.0

Die oben genannten Spezifikationen des Smartphones sind die Daten, und wir können auch die folgenden Vorgänge auf dem Smartphone ausführen:

    Anruf():Wir können über das Smartphone anrufen.Text():Wir können eine Nachricht senden.Foto():Wir können auf ein Foto klicken.Video():Wir können auch ein Video machen.

Das Smartphone ist eine Einheit, deren Daten bzw. Spezifikationen und Funktionen oben angegeben sind. Die abstrakte/logische Ansicht und die Operationen sind die abstrakten oder logischen Ansichten eines Smartphones.

Die Implementierungsansicht der obigen abstrakten/logischen Ansicht ist unten angegeben:

 class Smartphone { private: int ramSize; string processorName; float screenSize; int cameraCount; string androidVersion; public: void call(); void text(); void photo(); void video(); } 

Der obige Code ist die Implementierung der Spezifikationen und Vorgänge, die auf dem Smartphone ausgeführt werden können. Die Implementierungsansicht kann unterschiedlich sein, da die Syntax der Programmiersprachen unterschiedlich ist, die abstrakte/logische Sicht auf die Datenstruktur bleibt jedoch dieselbe. Daher können wir sagen, dass die abstrakte/logische Sicht unabhängig von der Implementierungssicht ist.

Hinweis: Wir kennen die Operationen, die für die vordefinierten Datentypen wie int, float, char usw. ausgeführt werden können, aber wir kennen die Implementierungsdetails der Datentypen nicht. Daher können wir sagen, dass der abstrakte Datentyp als verstecktes Feld betrachtet wird, das alle internen Details des Datentyps verbirgt.

Beispiel für eine Datenstruktur

Angenommen, wir haben ein Indexarray der Größe 4. Wir haben eine Indexposition, die bei 0, 1, 2, 3 beginnt. Array ist eine Datenstruktur, in der die Elemente an einer zusammenhängenden Position gespeichert werden. Die Speicheradresse des ersten Elements ist 1000, des zweiten Elements ist 1004, des dritten Elements ist 1008 und des vierten Elements ist 1012. Da es vom ganzzahligen Typ ist, belegt es 4 Bytes und die Differenz zwischen den Adressen jedes Elements beträgt 4 Bytes. Die in einem Array gespeicherten Werte sind 10, 20, 30 und 40. Diese Werte, Indexpositionen und Speicheradressen sind die Implementierungen.

Die abstrakte oder logische Sicht auf das Integer-Array kann wie folgt angegeben werden:

  • Es speichert eine Reihe von Elementen vom Typ Integer.
  • Es liest die Elemente nach Position, also nach Index.
  • Es ändert die Elemente nach Index
  • Es führt eine Sortierung durch

Die Implementierungsansicht des Integer-Arrays:

 a[4] = {10, 20, 30, 40} cout<< a[2] a[3] = 50