2010-04-22 10 views
9

Ich und einige andere Entwickler bereinigen derzeit unsere Legacy-Code-Basis und trennen hauptsächlich visuelle und Datenschichten. Um Entwicklern, die nicht an diesem Refactoring beteiligt sind, zu helfen, das Modell zu verstehen, möchte ich ein (eher informelles) Klassendiagramm mit Kommentaren zum Umfang und der gewünschten Verwendung für jede Klasse vorstellen. Da ich faul bin, würde ich gerne UMLGraph dafür verwenden.Wie stelle ich eine Mischung/Rolle/Eigenschaft mit UML richtig dar?

Allerdings gibt es ein kleines Problem: Wir haben eine Basis Perl-Code bekommen und das Refactoring verwendet ausgiebig Moose Rollen. Jetzt weiß ich nicht, dass UML gut genug ist, um eine angemessene Abstinenz für Rollen zu finden - meine erste Vermutung wären Schnittstellen, aber sie enthalten auch Implementierung; mehrfache Vererbung schneidet es auch nicht ganz ab.

Wie kann ich (oder wie würden Sie) repräsentieren Rollen richtig in einem Klassendiagramm?

Antwort

3

ich eine Rolle als UML-Klasse mit dem «role» Klischee darstellen würde. Die Klasse, die die Rolle zusammenstellt, würde dann eine Assoziation mit der Rolle mit dem Stereotyp «does» haben.

Simple Composition http://img820.imageshack.us/img820/5665/simplecomposition.png

Wenn ich brauche, um die Rolle anzupassen, mit Aliasnamen oder Ausschlüssen, würde ich schaffen, dass als Assoziationsklasse mit richtig kommentierten Mitgliedern und mit dem «adaptation» Klischee. Der Name der Assoziationsklasse würde keine Rolle spielen, da dies kein realer Typ im Design ist; also würde ich es ungenannt lassen.

Composition with Conflict Resolution http://img828.imageshack.us/img828/244/conflictcomposition.png

(Bitte beachten Sie, dass ich die Anpassung „Klasse“ mit der Zusammensetzung und der Rolle, die sie paßt gezeigt. Was es mit dem Zusammenhang zwischen MyComposition und MyRole1 mir wirklich tun wollte verbinden war. Es ist einfach dass das von mir verwendete Werkzeug keine Assoziationsklassen unterstützt).

+0

Jordão, ich mag das Aussehen dieser Diagramme. Mit welchem ​​Tool haben Sie sie erstellt? –

+0

@WayneConrad: Ich habe [yUML] (http://yuml.me/) verwendet, schau es dir an! –

+0

Das ist wie Graphviz für UML. Sehr schön! –