Archiv für den Monat: Dezember 2012

Überprüfen des Modells mit Objektdiagrammen

Über objektorientierte Analyse / objektorientiertes Design gibt es zahlreiche Bücher. Ziel ist es, ein für Software nutzbares Modell einer Domäne zu erstellen. Deshalb ist das Klassendiagramm das meistgewählte Werkzeug dafür.

Der Unterschied zwischen einer Klasse und einem Objekt besteht in ihren unterschiedlichen Metaebenen: Das Objekt ist Instanz einer Klasse, liegt also eine Metaebene tiefer. In einer Domäne oder auch im Alltag kommen aber nur Objekte vor (es wird immer mit Instanzen gearbeitet). Die Objekte werden bei der Analyse durch Abstraktion auf Klassen zurückgeführt.

Ein Beispiel: Der interessierte Naturfreund stellt sich beim Beobachten eines Fischs die Frage, zu welcher Art, zu welcher Klasse dieses Objekt gehört. In einem guten Bestimmungsbuch sind deshalb die Pflanzen- und Tierarten gezeichnet statt fotographiert, um individuelle Merkmale auszublenden und nur die charakteristischen Merkmale der Klasse darzustellen.

(aus: Dr. E. Bade: Handbuch für Naturaliensammler. Das Bild zeigt einen Dorsch oder dorschartigen Fisch und keinen Lachs)
(aus: Dr. E. Bade: Handbuch für Naturaliensammler. Das Bild zeigt einen Dorsch oder dorschartigen Fisch und keinen Lachs)

(aus: Dr. E. Bade: Die mitteleuropäischen Süßwasserfische. Weniger detailliert als die vorige Zeichnung, aber ein echter Lachs)
(aus: Dr. E. Bade: Die mitteleuropäischen Süßwasserfische. Weniger detailliert als die vorige Zeichnung, aber ein echter Lachs)

Auch in der Objektorientierung sind zunächst die Objekte bekannt. Es wäre naheliegend, damit ein Modell der Instanzen, der Objekte zu erstellen. Der heute übliche Weg ist aber, direkt ein Klassendiagramm zu erstellen. Trotzdem ist meiner Meinung nach ein Modell der Objekte genauso wichtig; wenn schon nicht zum Erfassen der Domäne, dann wenigstens zum Überprüfen, ob die Klassen ein korrektes Abbild der Instanzen der Domäne erlauben, denn nur dann erfüllt das Klassenmodell die Anforderungen.

Als Beispiel das Modell eines Lachs:

Modell eines Lachs

Für die Instanzen der Domäne hier ein Zitat aus „Die mitteleuropäischen Süßwasserfische“ von Dr. E. Bade:
„Die Färbung des Rückens ist in der Regel blaugrau, Bauch und Seiten silbern (…). Die Rückenflosse ist grau und trägt oft eine Reihe schwarzer kleiner Flecken an der Basis, die übrigen Flossen sind an ihrer Einlenkung gelblich oder rötlich, an ihrem freien Rande schwärzlich. Besonders lebhaft werden die Farben zur Laichzeit (…). Zur Laichzeit ist bei den Männchen der Bauch nicht selten purpurrot und auch die Flossen besitzen einen rötlichen Anflug.“

Mit Hilfe dieser Information kann das Klassenmodell überprüft werden, indem ein Objektdiagramm erstellt wird:

Objektdiagramm einer Lachsinstanz

Hinweis: In vielen UML-Tools gibt es keinen separaten Diagrammtyp für Objektdiagramme, die Instanzen können dann in einem Klassendiagramm modelliert werden.
Das Objektdiagramm zeigt einige Schwächen des Modells:
– Das Gewicht ist ohne Einheit angegeben, offensichtlich ist der Wert das Gewicht in Gramm
– Die Fischinstanz kann beliebig viele Flossen besitzen, allerdings sind die Flosseninstanzen im Diagramm nur durch den Objektnamen in ihrer Position bestimmt. Der Objektname ist nur im UML-Diagramm vorhanden, in Java sind alle Objekte anonym.
– Die Unterscheidung zwischen paarigen Flossen (Brustflosse, Bauchflosse) und unpaarigen Flossen fehlt.

Fazit: Das Objektdiagramm ist das Mittel zum Testen, wie sich die Domäne mit den Klassenmodell abbilden läßt.