1 Von objektorientiertem Softwareentwurf zu Entwurfsmustern


[Seminar: OOP]...[Entwurfsmuster nach Gamma]...[2 OOP für Fortgeschrittene]

Der objektorientierte Softwareentwurf ist ungleich aufwendiger als der "herkömmliche", prozedurale Entwurf. Der Entwickler (, der auch weiblich sein kann, aber der Einfachheit halber nicht in meinem Text !) muß viele Festlegungen treffen, die sich nicht direkt aus der Problemstellung ableiten. Diese sind sicher nicht in der von mir angegebenen Reihenfolge, sondern vielmehr parallel zueinander zu treffen:


Bildung von Klassen: Hier muß der Entwickler die Daten und die auf sie anzuwendenden Operationen in Klassen abbilden. Im Rahmen der Fragestellung der Objektgranularität ist in erster Linie festzulegen, wie detailliert die Aufteilung der Daten/Methoden auf die verschiedenen Klassen erfolgen soll.

Die gebildeten Klassen verbindet eine zu gestaltende Vererbungshierarchie. Der Entwickler hat zu entscheiden, welche Klassen sinnvollerweise voneinander erben sollen. Weiterhin sind ggf. abstrakte Klassen zu bilden.

Im Rahmen der Schnittstellengestaltung muß festgelegt werden, welche Daten ein Objekt (einer Klasse) mit Hilfe welcher Methoden welchen anderen Objekten (welcher Klassen) zur Verfügung stellen soll.

Neben "Verwandschaftsbeziehungen" der Klassen muß es natürlich auch Beziehungen zwischen den Objekten der Klassen geben. Ein Objekt kann beispielsweise ein anderes Objekt erzeugen, besitzen oder eine Referenz auf es verwalten. Diese Beziehungen sind ebenso wichtig wie die Vererbungsbeziehungen, weil durch sie erst ein guter objektorientierter Softwareentwurf mit flexibler Struktur entsteht.


Der zuvor als "Mehraufwand" dargestellten Entwicklungsarbeit steht ein enormer Nutzen gegenüber, der die Popularität objektorientierter Entwicklung begründet. Objektorientierte Entwürfe (selbstverständlich nur die Guten !) sind flexibler. Veränderungen in der Problemstellung sind leicht zu realisieren, das gleiche gilt für Erweiterungen. Diese Flexibilität beruht hauptsächlich darauf, daß der Entwickler bei seiner Arbeit wiederverwendbare Entwürfe entwickelt hat, die durch diverse Techniken (vgl. Abschnitt 2) verändert werden können.
Der gedankliche Brückenschlag zu den Entwurfsmustern gelingt, wenn man erkennt, daß verschiedene Softwarestücke ähnliche (oder sogar gleiche) Strukturen enthalten. Wenn man diese Strukturen hinreichend abstrahiert, kann man sie als Muster bezeichnen. Vollkommen analog hierzu wurden in der Vergangenheit auch bewährte Algorithmen katalogisiert, veröffentlicht und standardisiert. Sortieralgorithmen sind hier sicherlich das beste Beispiel, da jeder Softwareentwickler in seiner Ausbildung zu Übungszwecken mit ihnen konfrontiert wird.
Demnach besteht die "Technik" von Erich Gamma und seinen Kollegen Richard Helm, Ralph Johnson und John Vlissides (in Fachkreisen auch als "Gang Of Four " bekannt) nicht (nur) im Entwurf von Mustern, sondern in der Art, sie zu beschreiben und somit anwendbar zu machen. Die Abschnitte 3 und 5 beschäftigen sich hiermit.


[Seminar: OOP]...[Entwurfsmuster nach Gamma]...[2 OOP für Fortgeschrittene]...[Seitenanfang]