2010-04-22 12 views
9

Ja i kilku innych programistów obecnie czyszczymy naszą starszą bazę kodu, głównie oddzielając warstwy wizualne i dane. Aby pomóc programistom nie angażującym się w ten proces refaktoryzacji w zrozumienie modelu, chciałbym przedstawić (raczej nieformalny) diagram klas z komentarzami na temat zakresu i pożądanego zastosowania dla każdej klasy. Ponieważ jestem leniwy, chciałbym użyć do tego UMLGraph.Jak właściwie reprezentuję mixin/rola/cechę z UML?

Jednak jest mały problem: mamy bazę kodu perla, a refaktoryzacja w znacznym stopniu wykorzystuje role Moose. Teraz nie znam UML wystarczająco dobrze, aby znaleźć odpowiednią abstrację dla ról - moim pierwszym domysłem byłyby interfejsy, ale zawierają również implementację; dziedziczenie wielokrotne również tego nie czyni.

W jaki sposób (lub w jaki sposób) prawidłowo reprezentuję role na diagramie klasowym?

Odpowiedz

3

chciałbym reprezentować pewną rolę jako klasa UML z «role» stereotypu. Klasa tworząca rolę miałaby wtedy powiązanie z rolą ze stereotypem «does».

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

Gdybym potrzebne do dalszego dostosowania rolę, z aliasów lub wykluczeń, którą tworzę, że jako klasa stowarzyszeniowej z prawidłowo adnotacjami członków oraz z «adaptation» stereotypu. Nazwa klasy asocjacyjnej nie ma znaczenia, ponieważ nie będzie prawdziwym typem w projekcie; więc zostawię to bez nazwy.

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

(Należy pamiętać, że wykazały adaptację „klasa” podłączony do składu i roli dostosowuje. Co ja naprawdę chciałem zrobić, to podłączyć go do związku pomiędzy MyComposition i MyRole1. To właśnie że używane przeze mnie narzędzie nie obsługiwało klas asocjacyjnych).

+0

Jordão, podoba mi się wygląd tych schematów. Z którego narzędzia korzystałeś, aby je stworzyć? –

+0

@WayneConrad: Użyłem [yUML] (http://yuml.me/), sprawdź to! –

+0

To jak grafviz dla UML. Bardzo dobrze! –