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
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.