Was ist bei der Modellierung von Datentypen zu beachten?

Als erstes erfolgt in der Regel die Festlegung aus welchen Elementardatentypen (in Java z.B. int oder double) ein Datentyp besteht und welche Operationen auf dem Datentyp benötigt werden. In Programmiersprachen wie C# oder C++ ist ferner zu entscheiden, ob es sich um einen stackbasierten Wertetyp handeln soll oder um eine Datenklasse. In Java entfällt diese Entscheidung leider, da keine programmdefinierten Wertetypen möglich sind.

Datenklassen

Als Datenklasse wird eine Klasse bezeichnet die einen Datentyp und Operationen darauf implementiert. Bei der Modellierung ist grundsätzlich zu entscheiden ob Instanzen der Klasse

sein sollen.

Restriktionen, Spezialisierung und Verwendung von Null-Referenzen

Neben der Zusammensetzung eines Datentypen aus Elementartypen und den Operationen auf einem Datentypen sind oftmals Restriktionen und die Spezialisierung von Datentypen relevant.

Nehmen wir als Beispiel die Typen Line und Point aus der zweidimensionalen Vektorgeometrie. Hier betrachten wir den Typ Line, definiert durch zwei geordnete Punkte vom Typ Point und interpretiert als gerichtete kürzeste Verbindung zwischen den zwei Punkten.

Bei der Modellierung stellen sich unter anderem folgende Fragen:

Weitere Fragestellungen

Auswirkungen der Modellierung auf Lesbarkeit und Fehlerhäufigkeit

Die Modellierung der Datentypen hat einen großen Einfluss auf die Lesbarkeit und auf die Häufigkeit von Programmfehlern. So erfordert die Zulassung von Null-Referenzen zusätzliche Fallunterscheidungen und führt bei unachtsamer Programmierung schnell zu einem Laufzeitfehler. Erlaubt ein Datentyp wie Line beispielsweise die Länge null, so kann nicht mehr ungeprüft durch seine Länge dividiert werden und die Orientierung der Linie ist nur noch eine optionale Eigenschaft die undefiniert ist wenn die Linie die Länge null hat.

Zur Startseite


Anmerkungen:



   Zur Person        Impressum               Autor und Copyright 2013: Raoul Naujoks, Dipl.-Inform., Braunschweig    Stand 5.6.2013