Ein Beispiel (1/4)

Nach all den theoretischen Überlegungen soll nun ein Beispiel die besprochenen Konzepte verdeutlichen. Das Beispiel ist noch kein Programmierbeispiel, sondern es soll nur verdeutlichen, wie man die Konzepte der OOP zur Realisierung von Datenstrukturen nutzen kann.

Als Beispielhierarchie nehmen wir eine Hierarchie von graphischen Objekten, da dies eine der anschaulichsten Verwendungen der Objektkonzepte ist. Ganz nebenbei war auch das erste objektorientierte Anwendungssystem 'Sketchpad' ein Graphiksystem - ein Vorläufer heutiger CAD-Systeme. Stellen wir uns also eine Reihe graphischer Objekte auf einem Bildschirm vor: Punkte, Rechtecke und Kreise. Zunächst stellt man fest, daß zwischen diesen Objekten keine 'A ist B'-Beziehung zu finden ist. Da aber all diese Objekte Eigenschaften wie z.B. eine Position, dargestellt durch zwei Koordinaten, und eine Farbe gemeinsam haben, erscheint es sinnvoll, sich eine abstrakte Basisklasse zu überlegen, von der man dann alle anderen ableitet. Die Methoden, die diese Klasse aufnimmt, sind zuerst die zu den Elementen gehörenden Zugriffsmethoden.

Außerdem sollten alle graphischen Objekte in der Lage sein, ihren Inhalt wiederzugeben, d.h. sich zu zeichnen. Auch eine Methode zum Löschen könnte sinnvoll sein. Des weiteren würde es für ein Graphiksystem wünschenswert sein, eine Option zum Verschieben der Objekte anzubieten - die zugehörige Methode müßte das Objekt löschen, die Koordinaten neu setzen und danach das Objekt wieder zeichnen. Dazu können die schon vorhandenen Methoden zum Zeichnen und Löschen genutzt werden.

Von dieser Klasse können dann die anderen abgeleitet werden. Der Punkt braucht keine weiteren Eigenschaften, das Rechteck soll zusätzlich noch eine Breite und eine Länge haben, außerdem eine Ausrichtung. Ähnlich wie das Verschieben aller Graphikobjekte, soll eine Funktion zum Drehen vorhanden sein. Im Gegensatz dazu hat der Kreis nur das zusätzliche Element Radius.

Damit ergeben sich dann die auf der nächsten Seite dargestellten Klassen. Eventuelle Parameter werden dabei in Klammern angegeben, Rückgabewerte werden ignoriert.