Abstrakter Datentyp
| Dieser Artikel bedarf einer Überarbeitung. Eine Begründung befindet sich in der Regel auf der Diskussionsseite. Wenn du Lust hast, verbessere den Artikel und entferne anschließend diesen Baustein. |
Als Abstrakte Datentypen bezeichnet man in der Informatik spezielle Datentypen, deren Operationen genau spezifiziert sind, die jedoch im Gegensatz zu den elementaren und zusammengesetzten Datentypen nicht an einen konkreten Wertebereich gebunden sind. Die Bindung an den Wertebereich findet erst durch die konkrete Ausprägung des abstrakten Datentypen statt.
Der Begriff Abstrakter Datentyp wird meist im engen Umfeld von Programmiersprachen verwendet, insbesondere bei Programmiersprachen wie Ada oder Modula-2, die gezielt die Erstellung von abstrakten Datentypen unterstützen.
Wird bei der Betrachtung von der konkreten Ausprägung und der konkreten Implementation des abstrakten Datentypen in einer konkreten Programmiersprache abgesehen, wird sehr häufig auch von Datenstrukturen gesprochen. Die Abgrenzung zwischen dem Begriff Datenstruktur und Abstrakter Datentyp ist äußerst schwierig und fließend. Sobald der Schwerpunkt der Betrachtung auf den Daten, ihrer internen Organisation und den dazu nötigen Operationen liegt, spricht man eher von einer Datenstruktur, bei Betrachtung aller definierten Operationen auf dem zugehörigen Wertebereich wird häufig der Begriff Abstrakter Datentyp verwendet.
| Inhaltsverzeichnis |
Eigenschaften abstrakter Datentypen
Anzustrebende Eigenschaften eines gut programmierten ADT und meist auch einer gut spezifierten Datenstruktur sind:
- Universalität (implementation independence): Der einmal entworfene und implementierte ADT kann in jedes beliebige Programm einbezogen und dort benutzt werden (z.B. in Form einer Unit).
- Präzise Beschreibung (precise specification): Die Schnittstelle zwischen Interface und Implementation muss eindeutig und vollständig sein.
- Einfachheit (simplicity): Der Anwender muss sich nicht um die innere Realisation des ADT kümmern, da der ADT seine Repräsentation und Verwaltung im Speicher selbst übernimmt.
- Kapselung (information hiding): Das Interface soll als eine hermetische Grenze aufgefasst werden. Der Anwender soll sehr genau wissen, was ein ADT tut, aber keinesfalls, wie er es tut.
- Geschütztheit (integrity): Der Anwender kann in die interne Struktur der Daten nicht eingreifen. Die Gefahr, Daten ungewollt zu löschen bzw. zu verändern sowie Programmierfehler zu begehen, ist dadurch deutlich herabgesetzt.
- Modularität (modularity): Das modulare Prinzip erlaubt übersichtliches und damit sicheres Programmieren und leichten Austausch von Programmteilen. Bei der Fehlersuche können einzelne Module sehr isoliert betrachtet werden. Viele Verbesserungen können über ADTs nachträglich ohne die geringste Änderung in sämtlichen Umgebungs- bzw. Anwendungsprogrammen übernommen werden.
Wird objektorientiert programmiert, können diese Eigenschaften besonders leicht erfüllt werden, weil das objektorientierte Paradigma auf natürliche Weise die Erstellung von ADTs unterstützt. Eine weitere Möglichkeit zur Erstellung von ADTs (auch in Verbindung mit objektorientierter Programmierung) sind generische Typen.
Beispiele für abstrakte Datentypen (zugleich auch Datenstrukturen)
Erläuterung am Beispiel: Der abstrakte Datentyp Warteschlange bietet die Funktionalität beliebige Objekt nach dem FIFO-Prinzip zu verarbeiten. Ob in die Warteschlange zum Beispiel Druckaufträge, Kopieraufträge, Tastatureingaben oder beliebige andere Objekte eingereiht und verarbeitet werden, ist für die Funktionalität irrelevant. Die Warteschlange abstrahiert demnach vom verarbeiteten Objekt.
Mathematisch
Spezifikation einer Termalgebra durch Signatur, Konstruktor und Axiome.
Siehe auch
Datentyp, Programmierparadigma
