30.10.2013 Aufrufe

Bewertung der Qualität objektorientierter Entwürfe - Worte-Projekt

Bewertung der Qualität objektorientierter Entwürfe - Worte-Projekt

Bewertung der Qualität objektorientierter Entwürfe - Worte-Projekt

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

142 10 Ein spezifisches <strong>Qualität</strong>smodell<br />

10.2.2 Bemerkungen zu den <strong>Entwürfe</strong>n<br />

Vererbung<br />

Bei den <strong>Entwürfe</strong>n fällt auf, dass Vererbung kaum verwendet wird. Das deckt sich<br />

auch mit Beobachtungen von Cartwright (1998) aus studentischen <strong>Projekt</strong>en. Wenn<br />

Vererbung verwendet wurde, beschränkt sie sich auf eine Stufe. Anhand positiver<br />

und negativer Beispiele wird die Nutzung <strong>der</strong> Vererbung in den <strong>Entwürfe</strong>n illustriert.<br />

Gruppe 8 verwendet das Strategy-Muster (Gamma et al., 1995), um den Algorithmus<br />

zur Verbindungssuche je nach Optimierungsziel zu parametrisieren. Dazu dient die<br />

abstrakte Klasse Optimization mit ihren drei Unterklassen, welche die verschiedenen<br />

Optimierungsziele repräsentieren (vgl. Abbildung 10-2). Wichtigste Operation ist<br />

dabei getWeight, welche die <strong>Bewertung</strong> einer Verbindung gemäß dem Optimierungsziel<br />

liefert. Die Unterklassen implementieren die Operation aus <strong>der</strong> Oberklasse mit<br />

<strong>der</strong> korrekten <strong>Bewertung</strong>smethode.<br />

Abbildung 10-2: Strategy-Muster bei Gruppe 8<br />

Eine Alternative dazu ist die Verwendung des Template-Method-Musters (Gamma et<br />

al., 1995), wie sie Gruppe 4 vorgenommen hat. Die <strong>Bewertung</strong> wird <strong>der</strong> Verbindung<br />

selbst zugeordnet. Die abstrakte Klasse Connection besitzt eine Operation getDistance,<br />

welche die <strong>Bewertung</strong> liefert. Diese wird von den konkreten Unterklassen je nach<br />

Optimierungsziel implementiert (vgl. Abbildung 10-3). Die Operation processNode<br />

(implementiert in Connection) verwendet dann getDistance bei <strong>der</strong> Verbindungssuche.<br />

Gruppe 12 hingegen benutzt Vererbung eher problematisch. Von einer Klasse TwoDigitNumber,<br />

die eine zweistellige Zahl repräsentiert, werden zwei Unterklassen Hour und<br />

Minute abgeleitet, ohne dabei Erweiterungen o<strong>der</strong> Redefinitionen vorzunehmen (vgl.<br />

Abbildung 10-4, linke Seite). Das deutet darauf hin, dass die Klassen (abgesehen vielleicht<br />

von einem semantischen Unterschied durch den Namen) überflüssig sind. Hour<br />

und Minute sind eigentlich Instanzen (und keine Spezialisierungen) von TwoDigitNumber<br />

und sollten daher nicht als Klassen modelliert werden. Der Fragebogen zur Strukturiertheit<br />

(vgl. Abschnitt B.2) enthält eine entsprechende Frage, die das Problem aufdeckt.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!