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.
74 7 Entwurfsqualität<br />
Ausleihen, während die Ausleihe Informationen über den ausgeliehenen Film und<br />
die Leihdauer (in Tagen) hat. Ein Film hat einen Preiscode, <strong>der</strong> zusammen mit <strong>der</strong><br />
Leihdauer den Preis bestimmt. Es gibt Preiscodes für normale Filme (regular), Kin<strong>der</strong>filme<br />
(children’s) und Neuerscheinungen (new release). Der Preiscode eines Films<br />
kann sich än<strong>der</strong>n, z. B. von „new release“ nach „regular“, daher gibt es in Movie eine<br />
Operation setPriceCode.<br />
Erste Stufe: Entkopplung und Kapselung<br />
Entwurf A (vgl. Abbildung 7-1) sieht vor, den Rechnungsbetrag in <strong>der</strong> Klasse Customer<br />
zu berechnen und dazu die erfor<strong>der</strong>liche Information bei Rental und Movie einzuholen.<br />
Customer holt sich in <strong>der</strong> Methode statement von Rental die Ausleihdauer<br />
und den Film, von diesem wie<strong>der</strong>um den Preiscode (vgl. Abbildung 7-2).<br />
Abbildung 7-1: Klassendiagramm für Entwurf A<br />
Abbildung 7-2: Sequenzdiagramm für Entwurf A<br />
Dieses Vorgehen ist ein Verstoß gegen das Demetergesetz (Lieberherr, Holland, 1989),<br />
weil bei einem Objekt, das von einer an<strong>der</strong>en Klasse (Rental) als Resultat eines Methodenaufrufs<br />
(getMovie) geliefert wurde, eine Methode aufgerufen wird (getPriceCode).<br />
Dadurch entsteht eine unnötige Kopplung zwischen Customer und Movie, die als<br />
Benutzungsbeziehung mit Stereotyp «call» im Klassendiagramm sichtbar ist. Um<br />
diese zu vermeiden, sollte stattdessen über Rental delegiert werden. Außerdem lässt<br />
sich feststellen, dass die Preisberechnung für einen einzelnen Ausleihvorgang logisch<br />
gesehen eigentlich zu Rental gehört, da dort bereits alle erfor<strong>der</strong>lichen Informationen<br />
vorliegen. In statement müssten die einzelnen Beträge dann nur noch aufsummiert<br />
werden. Die Preisberechnung anhand des Preiscodes ist bei Movie am besten aufgehoben,<br />
da sich so neue Preiscodes besser kapseln lassen (Verbergen einer Entwurfsent-