Modellierung mit UML - Teil 2: Konzepte

Datentypen, abstrakte Datentypen und Instanzen

Ein Datentyp ist eine Abstraktion im Kontext einer Programmiersprache. Ein Datentyp hat einen eindeutigen Namen, der ihn von anderen Datentypen unterscheidet. Dieser Name bezeichnet einen Satz von Werten, die diesem Datentyp angehören (dass heißt die Instanzen des Datentyps), und definiert die Struktur und die Operationen, die für alle Instanzen dieses Datentyps gültig sind. Datentypen werden in Typ-orientierten Sprachen verwendet und stellen sicher, dass nur gültige Operationen auf spezifische Instanzen angewendet werden.

Beispielsweise entspricht der Name int in Java den ganzen Zahlen zwischen –231 und 231–1. Gültige Operationen auf allen Instanzen dieses Typs sind die arithmetischen Operationen für ganze Zahlen (wie. Addition, Subtraktion, Multiplikation, Division) und all die Funktionen und Methoden, deren Parameter vom Typ int sind (beispilesweise mod). Der Java-Compiler meldet einen Fehler, falls eine Gleitpunktoperation auf eine Instanz vom Typint (wie etwa trunc oder floor) angewendet wird.

Ein abstrakter Datentyp ist ein durch eine implementierungsunabhängige Spezifikation definierter Datentyp. Ein abstrakter Datentyp ermöglicht es Entwicklern, einen Satz von Instanzen zu benutzen, ohne deren spezielle Implementierung zu kennen. Beispiele für abstrakte Datentypen sind Mengen, Sequenzen oder Abbildungen, die man mathematisch definieren kann. Ein System kann unterschiedliche Implementierungen des abstraktenDatentypsatzes unterstützen, wovon jede ein anderes Kriterium optimiert (beispielsweise Speicherverbrauch, Einfügezeit). Ein Entwickler, der zum Beispiel den abstrakten Datentyp Menge benutzt, braucht lediglich die Semantik von Mengenoperationen zu verstehen, aber nicht die interne Darstellung von Menge. Ein anderes Beispiel ist der abstrakte Datentyp Person mit den Operationen gibName(), gibSozialVersicherungsnummer() und gibAdresse()1.

Die Entscheidung, ob die Sozialversicherungsnummer einer Person als Zahl oder als Zeichenreihe gespeichert ist, ist aus der Sicht des restlichen Systems nicht wichtig. Solche Entscheidungen werden Implementierungsentscheidungen genannt.