222
 
   
   
clemens clemens clemens
Referat

TitelAbstrakte Datentypen 
Anzahl Worte720 
SpracheDeutsch 
ArtReferat 
SchlagworteDatenabstraktion; Funktionale Abstraktion; Datenobjektmodule; 
Downloads++++++++++ 
Bewertung+++ 

Download Zip (4051.6kB)
Download Pdf (76.2kB)


Auszug aus dem Referat (ohne Grafiken)

Abstrakte Datentypen – Dominik Rappaport, drbaden@ping.at

11. April 1999

Bevor wir uns mit abstrakten Datentypen beschäftigen, müssen wir zuerst auf die Datenabstraktion selbst genauer eingehen.

Datenabstraktion

Die Datenabstraktion unterscheidet sich von der Funktionsabstraktion dadurch, daß bei der letzteren nur der Algorithmus abstrahiert wird, bei der Datenabstraktion dagegen sowohl die interne Datenstruktur als auch ihre Zugriffsalgorithmen.

Wir können zwei Grade der Datenabstraktion unterscheiden:

Funktionale Abstraktion

Bei der funktionalen Abstraktion wird lediglich der Algorithmus abstrahiert. In den meisten Programmiersprachen wird solch eine Abstraktion auf eine Funktion abgebildet. Diese bekommt als Parameter die Datenstrukturen, die sie zu bearbeiten hat. Die Lebensdauer dieser endet allerdings mit dem Zurückkehren der Funktion (interne Parameter).

Abstrakte Datenobjekte

Ein abstraktes Datenobjekt erlaubt es, Datenstrukturen und Zugriffsoperationen auf diese Datenstruktur zu einer Einheit zusammenzufassen. Die Lebensdauer der Datenstruktur geht über die das Aufrufende der Zugriffsfunktionen hinaus. Dies ist ein wesentlicher Unterschied zu der funktionalen Abstraktion.

Der Anwender kann nur über die Zugriffsoperationen auf die Datenstruktur zugreifen. Aus der Sicht des Anwenders besteht die Abstraktion darin, daß die Details der Datenstruktur verborgen sind. Ein direkter Zugriff auf die internen Daten ist nicht erlaubt.

Ein Modul, das ein abstraktes Datenobjekt realisiert, nennt man Datenobjekt-Modul. Es besitzt folgende Eigenschaften:


Ein Datenobjekt-Modul entspricht weitgehend einem Objekt (nicht Klasse) in der Objektorientierten Programmierung.

Folgende Abbildung zeigt den prinzipiellen Aufbau eines abstrakten Datenobjekts:



Originaldokument enthält an dieser Stelle eine Grafik!
Original document contains a graphic at this position!

Es gibt eine Reihe von grafischen Notationen für abstrakte Datenobjekte, die in folgender Tabelle zusammenfaßt werden:



Originaldokument enthält an dieser Stelle eine Grafik!
Original document contains a graphic at this position!

Die Implementierung in den verschiedenen Programmiersprachen verläuft unterschiedlich. In C++ werden sie nicht direkt unterstützt. Es ist aber möglich, das Objekt auf ein .C-Modul abzubilden. Das interne Gedächtnis und die Funktionen, die zur internen Implementierung verwendet werden, werden als static markiert, wodurch sie modulglobal bleiben. Nur die Schnittstellenfunktionen werden exportiert.

Typische Anwendungsgebiete von abstrakten Datenobjekten sind:

Die Verwendung von abstrakten Datenobjekten bringt folgende Vorteile mit sich:

Abstrakte Datentypen

Bei abstrakten Datenobjekten wird die gesamte Implementierung auf ein einziges Objekt ausgerichtet. Falls zB eine Roboterhand abstrahiert wird und der Anwender benötigt aber nicht ein Roboterhand-Objekt sondern zwei, müßte er die gesamte Beschreibung (bei C das .C-Modul) textuell kopieren und vervielfältigen.

Das ist kein Problem, wenn ohnedies nur ein Objekt dieser Art im Programm vorkommt. ZB gibt es in der Steuersoftware für ein Atomkraftwerk nur einen Atomreaktor. Wenn allerdings eine gebräuchlicheres Objekt wie zB ein Container-Objekt implementiert wird, das einige hundert Male im Programm vorkommt, ist diese Methode nicht praktikabel.

Deswegen wird das Konzept des abstrakten Datenobjekts verallgemeinert. Dies geschieht dadurch, daß sich die Beschreibung nicht gleich auf ein Objekt bezieht, vielmehr wird ein Objekt-Typ beschrieben, nach dessen Muster dann beliebig viele Instanzen von Objekten gebildet werden können. Man nennt diese Typen abstrakte Datentypen. Sie sind das Äquivalent zur Klasse in der objektorientierten Programmierung.

Auf welches Objekt sich die Schnittstellenfunktionen beziehen soll, wird durch diverse Notationen ausgedrückt. In C++ geschieht dies durch die Syntax Objekt.Zugriffsfunktion.

Manchmal ist es notwendig, bestimmte Dinge in abstrakten Datentypen zu parametrisieren. ZB möchte der Anwender bei dem abstrakten Datentyp Stack festlegen, welche Datentypen in ihm gespeichert werden sollen. Mann nennt abstrakten Datentypen, die dies erlauben, generische abstrakte Datentypen. In C++ kann diese Parametrisierung über Templates erfolgen.

Der Unterschied eines abstrakten Datentyps zu einer Klasse im objektorientierten Sinn besteht darin, daß bei den ADTs keinerlei Vererbung und daraus folgend kein Polymorphismus vorgesehen ist.

Verwendung

Folgende Grafik faßt die Verwendungen von funktionaler Abstraktion, abstrakten Datenobjekten und abstrakten Datentypen zusammen.


Originaldokument enthält an dieser Stelle eine Grafik!
Original document contains a graphic at this position!


Ende des Auszuges


Hier hast Du die Möglichkeit dieses Referat zubewerten
und somit die Gesamtbewertung mitzubestimmen!