Weitere Artikel aus dem Foto Blog

Die Idee der Entwurfsmuster in der Softwareentwicklung wurde aus der Architektur über­nommen. Der Architekt Christopher Alexander hatte in den 1970er Jahren eine Sammlung von Entwurfsmustern zusammengestellt. Die wesentliche Aufgabe dieser Muster war, die Bewohner der zu bauenden Strukturen in den Entwurfsprozess einzu­binden.

Grundlagen

Erich Gamma, Mitte der 1990er Jahre Wissenschaftler an der Hochschule in Zürich, promovierte über die Übertragung dieser Methode auf die Softwareentwicklung. Im Anschluss ging er nach Amerika, wo er zusammen mit Richard Helm, Ralph Johnson und John Vlissides das Buch »Design Patterns – Elements of Reusable Design« heraus­brachte, in dem 23 Entwurfsmuster beschrieben sind. Dieses Autorenquartett ist auch unter dem Spitznamen »Gang of Four« (Viererbande) bekannt. GoF wird gelegentlich auch als Verweis für besagtes Buch verwendet. Anders als Christopher Alexander, der seine Muster vor allem für Laien geschrieben hat, richten sich die GoF-Muster an Entwickler und nicht an Benutzer.

Grundsätzlich ist der objektorientierte Soft­wareentwurf wesentlich aufwendiger als der prozedurale Entwurf. Der Entwickler muss zahlreiche Festlegungen treffen, die sich nicht direkt aus der Problemstellung ableiten. Um Ihnen dies nochmals zu verdeutlichen, sollten Sie folgende Zusammenstellung betrach­ten:

  • Bildung von Klassen – Hier muss der Entwickler die Daten und die auf sie anzuwenden­den Operationen in Klassen abbilden. Im Rahmen der Fragestellung der Objektgranularität ist in erster Linie festzulegen, wie detailliert die Aufteilung der Daten und Methoden auf die verschiedenen Klassen erfolgen soll.
  • Vererbungshierarchie – Die gebildeten Klassen verbindet eine zu gestaltende Ver­erbungshierarchie. Der Entwickler hat zu entscheiden, welche Klassen sinnvoller­weise voneinander erben sollen. Darüber hinaus sind ggf. abstrakte Klassen zu bilden. Die Vererbungshierarchie wird beim Softwareentwurf oft auch als »Ver­wandschaftsbeziehung« bezeichnet.
  • Schnittstellengestaltung – Im Rahmen der Schnittstellengestaltung muss festgelegt wer­den, welche Daten ein Objekt einer Klasse mithilfe welcher Methoden welchen anderen Objekten anderer Klassen zur Verfügung stellen soll.
  • Beziehungen zwischen Objekten – Neben Verwandschaftsbeziehungen der Klassen muss es selbstverständlich auch Beziehungen zwischen den Objekten der Klassen geben. Ein Objekt kann beispielsweise ein anderes Objekt erzeugen, besitzen oder eine Referenz auf dieses verwalten. Diese Beziehungen sind ebenso wichtig wie die Vererbungsbeziehungen, da durch sie erst ein guter, objektorientierter Softwareent­wurf mit flexibler Struktur entsteht.

Hinweis: Sie sollten darauf achten, die einzelnen Festlegungen nicht in der angegebe­nen Reihenfolge, sondern vielmehr parallel zueinander festzulegen.

Diesem Mehraufwand, der sich während der Entwicklungsarbeit ergibt, steht ein enormer Nutzen gegenüber, der die Popularität objektorientierter Entwicklung be­gründet. Objektorientierte Entwürfe sind flexibler. Veränderungen in der Problemstel­lung sind leicht zu realisieren, das Gleiche gilt für Erweiterungen. Diese Flexibilität beruht hauptsächlich darauf, dass der Entwickler bei seiner Arbeit wiederverwendbare Entwürfe entwickelt hat, die durch diverse Techniken verändert werden können.

Der gedankliche Brückenschlag zu den Entwurfsmustern gelingt, wenn man erkennt, dass verschiedene Softwarebestandteile ähnliche oder sogar gleiche Strukturen enthal­ten. Wenn man diese Strukturen hinreichend abstrahiert, kann man sie als Muster bezeichnen.

Die Technik der Gang Of Four besteht daher nicht nur im Entwurf von Mustern, son­dern in der Art, sie zu beschreiben und somit anwendbar zu machen.

Hinweis: Vollkommen analog hierzu wurden in der Vergangenheit auch bewährte Algorith­men katalogisiert, veröffentlicht und standardisiert. Sortieralgorithmen sind hierfür ein typi­sches Beispiel.

Objektorientierung für Fortgeschrittene

Ganzen Artikel lesen... 

Kundenkommentare
Kontakt
Warenkorb: 0 Artikel
Gesamtwert: EUR 0,00
Home PHP/MySQL & JavaScript  Entwurfsmuster in PHP - Teil I