2011-11-06 29 views
8

Widoczność klasy jest ważną częścią projektowania obiektu. Nie widziałem żadnych przykładowych diagramów pokazujących niepubliczne zajęcia w kilku książkach UML, ani nie widziałem sposobu na pokazanie widoczności klasy w Enterprise Architect, wśród innych narzędzi. Enterprise Architect i inne narzędzia pozwalają ustawić widoczność klasy w metamodelu, ale jeszcze nie widziałem sposobu, aby pokazać to na diagramach.Czy widoczność klas może być widoczna na diagramach klas UML?

+0

Nie uważam, że standard UML zapewnia specyficzną notację dla widoczności, ponieważ jest to funkcja zależna od języka. – Heisenbug

+0

Dzięki @Heisenbug. Byłem w stanie zobaczyć widoczność klasy na diagramach pakietów Enterprise Architect. To może być jedyny sposób, aby zobaczyć to w tym konkretnym narzędziu. Następnym krokiem jest przejrzenie odpowiedniej części specyfikacji UML. –

+2

Jestem dość pewny, że schemat pakietów jest rzeczywiście jedynym sposobem, aby zobaczyć widoczność elementu (aka Zakres) w Enterprise Architect. Nie opublikuję go jako odpowiedzi, ponieważ wykonałeś już pracę detektywa, ale rozważ proszę zrobienie tego samemu (i zaznaczenie odpowiedzi na pytanie) dla przyszłych poszukiwaczy. – Uffe

Odpowiedz

0

W Eclipse masz widoczność na ikonie. Mam na myśli, że masz zieloną ikonę klasy i jeśli jest ona prywatna, to p jest umieszczana na górze. Ta ikona jest również widoczna na diagramie klasowym po wybraniu opcji. Mam nadzieję, że ta pomoc.

0

UML obsługuje widoczność w sposób neutralny dla języka programowania, zarówno w metamodelu, jak iw reprezentacji.

Istnieje wyliczenie o nazwie VisbilityKind, które jest używane w różnych miejscach (zob. Sekcja UML 2.3 superstructure spec sekcja 7.3.5.5 p142).

Na diagramach klas istnieją różne sposoby zilustrowania widoczności. Najczęściej używa się "-" do reprezentowania prywatnych funkcji i "+" do reprezentowania publicznych. Np

---------------------------- 
| Class     | 
|--------------------------| 
| +publicAttribute: Type | 
| -privateAttribute: Type | 
|--------------------------| 
| +publicMethod()   | 
| -privateMethod()   | 
---------------------------- 

Patrz rysunek 7.28/7.29 na p52 z the spec więcej przykładów.

hth.

+1

Twoja odpowiedź dotyczy widoczności członków klasy, a nie widoczności samej klasy. –

+0

@ BjörnPollex Widoczność jest związana z pewnym zakresem, bez widoczności zakresu nie ma znaczenia. Instancja klasy może być członkiem innej instancji klasy iw tym przypadku jej widoczność może być widoczna, jak pokazano w tej odpowiedzi. – SomeWittyUsername

0

Właśnie poszukaliśmy go w infrastrukturze UML 2.4.1. Na rys. 10.3 str. 95 widzisz Class zdefiniowany jako typ, który jest NamedElement, który jest elementem. W pakiecie widoczności NamedElement ma widoczność zdefiniowaną w 9.21.1 na p. 88, jeśli należy do przestrzeni nazw. Klasa ma widoczność, jeśli masz widoczność. Możesz używać zwykłych notacji z + - # i ~ (s. 89).

Program VisualParadigm może to zrobić.

1

Według UML specyfikacji v2.5 beta 2 nie tylko NamedElement ale również PackageableElement ma atrybutu widoczność typu VisibilityKind

z p48:

PackageableElement [Streszczenie klasa]

.. [ciach] ..

Atrybuty

  • Widoczność: VisibilityKind [0..1] = public Parametr PackageableElement musi mieć określoną widoczność, jeśli jest własnością obszaru nazw. Domyślna widoczność jest publiczna.

Ograniczenia

  • namespace_needs_visibility PackageableElement należące do przestrzeni nazw musi mieć widoczność. inw: widoczność = null oznacza nazw = null

Nie znaleziono żadnych wskazówek zapisem tej widoczności jednak

0

Jeśli zdefiniować klasę ze stereotypem (słownie < <klasa> >) następnie możesz przypisać skrypt kształtów do stereotypu. Jeśli tylko określić dekoracji, to powinien użyć domyślnego rysunek dla klasy i dodać swoją dekorację, która może być uwarunkowane na podstawie własności zakresu klasy za:

decoration X 
{ 
    if(hasproperty("scope","public")) 
    print("P"); 
} 

Wypisuje P w górnym, lewy róg klasy publicznej. Możesz jednak zamiast tego mieć ikonę.

Niestety, nie mogę znaleźć sposobu przypisania skryptu kształtów do domyślnej, niestereotypowej klasy. Czy ktoś wie, jak to zrobić?