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.

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-

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!