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?
Odpowiedz
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.
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.
Twoja odpowiedź dotyczy widoczności członków klasy, a nie widoczności samej klasy. –
@ 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
myślę, trzeba spojrzeć na Uni-directional and Bi-directional association
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ć.
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
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ć?
Nie uważam, że standard UML zapewnia specyficzną notację dla widoczności, ponieważ jest to funkcja zależna od języka. – Heisenbug
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. –
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