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

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

50 5 Ein Referenzmodell für den objektorientierten Entwurf<br />

• isAbstract: Boolean. Klassen können abstrakt (Wert true) o<strong>der</strong> konkret (Wert false)<br />

sein.<br />

• visibility: VisibilityKind. Bedeutung und Herleitung analog zu <strong>der</strong> bei den Paketen.<br />

Beziehungen<br />

• extends: C × C<br />

Eine Klasse erweitert eine Oberklasse, d. h. sie erbt von ihr. Eine Klasse kann beliebig<br />

viele Oberklassen erweitern, auch keine. Die Ableitung vom UML-Metamodell<br />

ist analog zur extends-Relation bei Interfaces.<br />

• realizes: C × I<br />

Eine Klasse realisiert ein Interface. Eine Klasse kann beliebig viele Interfaces realisieren,<br />

auch keine.<br />

Im UML-Metamodell steht die Klasse Abstraction, eine Unterklasse von Dependency,<br />

für diese Beziehung. realizes(k,i) gilt genau dann, wenn es eine Instanz a von<br />

Abstraction mit Stereotyp «realize» gibt, bei <strong>der</strong> die Rolle a.supplier mit i und die<br />

Rolle a.client mit k belegt ist.<br />

• has: C × O<br />

Eine Klasse besitzt eine Operation. Eine Klasse kann beliebig viele Operationen<br />

haben, auch keine. Geerbte Operationen zählen nicht mit. Die Ableitung vom<br />

UML-Metamodell ist analog zur has-Relation bei den Interfaces.<br />

• has: C × A<br />

Eine Klasse besitzt ein Attribut. Eine Klasse kann beliebig viele Attribute haben,<br />

auch keine. Geerbte Attribute zählen nicht mit. Die Ableitung vom UML-Metamodell<br />

ist analog zur obigen has-Relation, da Feature auch Oberklasse von Attribute<br />

ist.<br />

• associates: C × (C ∪ I)<br />

Eine Klasse kann mit einer Klasse (o<strong>der</strong> einem Interface) assoziiert sein (gerichtet<br />

durch Navigierbarkeit). Eine Klasse kann beliebig viele an<strong>der</strong>e Klassen assoziieren,<br />

auch keine. Eine Klasse kann sich auch selbst assoziieren. Geerbte Assoziationen<br />

zählen nicht mit.<br />

Im UML-Metamodell steht die Klasse Association für eine Assoziation. Association<br />

hat mindestens zwei AssociationEnds, in denen die Eigenschaften <strong>der</strong> Assoziation<br />

abgelegt sind (Navigierbarkeit: isNavigable, Art <strong>der</strong> Assoziation: aggregation). associates(k,l)<br />

gilt genau dann, wenn es eine Instanz a von Association gibt, die zwei<br />

Instanzen e1 und e2 von AssociationEnd hat, und wenn die Rolle e1.type mit k, die<br />

Rolle e2.type mit l belegt ist. Außerdem muss e2.isNavigable gelten, d. h. es muss<br />

möglich sein, von k nach l über die Assoziation zu navigieren.<br />

Das Attribut e1.aggregation gibt die Art <strong>der</strong> Assoziation an (none, aggregate, composite)<br />

und wird auf die Relation selbst übertragen. Auf diese Weise kann durch<br />

das Attribut aggregation <strong>der</strong> associates-Relation bei Bedarf zwischen normaler Assoziation,<br />

Aggregation und Komposition unterschieden werden. 2<br />

Sofern eine Association mehr als zwei AssociationEnds hat, wird sie in binäre Assoziationen<br />

zerlegt. Eine n-äre Assoziation kann so (je nach Navigierbarkeit <strong>der</strong> AssociationEnds)<br />

in bis zu n(n-1)/2 binäre Assoziationen zerlegt werden.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!