Может ли видимость класса отображаться на диаграммах классов UML? - PullRequest
9 голосов
/ 07 ноября 2011

Класс видимости является важной частью дизайна объекта.Я не видел примеров диаграмм, показывающих непубличные классы в нескольких книгах по UML, и не видел способа показать видимость классов в Enterprise Architect, среди других инструментов.Enterprise Architect и другие инструменты позволяют установить видимость класса в метамодели, но мне еще не удалось найти способ показать это на диаграммах.

Ответы [ 6 ]

1 голос
/ 04 февраля 2015

Согласно спецификации UML v2.5 beta 2 не только NamedElement, но и PackageableElement имеют атрибут Visibility типа VisibilityKind

из p48:

PackageableElement[Абстрактный класс]

.. [snip] ..

Атрибуты

  • visibility: VisibilityKind [0..1] = public A PackageableElement должениметь видимость, указанную, если она принадлежит пространству имен.По умолчанию видимость общедоступна.

Ограничения

  • namespace_needs_visibility Элемент PackageableElement, принадлежащий пространству имен, должен иметь видимость.inv: visibility = null подразумевает namespace = null

Однако я не нашел каких-либо инструкций по обозначению этой видимости

0 голосов
/ 10 сентября 2015

Если вы определяете свой класс с помощью стереотипа (скажем, <<class>>), вы можете назначить скрипт формы для стереотипа.Если вы только указываете художественное оформление, следует использовать чертеж по умолчанию для класса и добавить свое художественное оформление, которое может быть условным на основе свойства области класса:

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

.Р в верхнем левом углу публичного класса.Однако вместо этого у вас может быть значок.

К сожалению, я не могу найти способ присвоения скрипта формы классу, не являющемуся стереотипом по умолчанию.Кто-нибудь знает, как это сделать?

0 голосов
/ 03 февраля 2015

Я только что посмотрел в инфраструктуре UML 2.4.1. На рисунке 10.3 с. 95 вы видите Класс, определенный как Тип, который является Элементом NamedElement, который является Элементом. С пакетом видимости NamedElement имеет видимость, как определено в 9.21.1 на с. 88, если он принадлежит пространству имен. Таким образом, класс имеет видимость, если у вас есть видимости. Вы можете использовать обычные обозначения с + - # и ~ (стр. 89).

VisualParadigm может сделать это.

0 голосов
/ 29 ноября 2013
0 голосов
/ 07 ноября 2011

UML поддерживает видимость независимо от языка программирования, как в метамодели, так и в представлении.

Существует перечисление с именем VisbilityKind, которое используется в различных местах (см. спецификацию надстройки UML 2.3 * раздел 7.3.5.5, стр. 142).

На диаграммах классов существуют различные способы иллюстрации видимости.Наиболее распространенным является использование «-» для представления частных функций и «+» для представления общедоступных.Например:

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

См. Рис. 7.28 / 7.29 на стр. 52 спецификации для дополнительных примеров.

hth.

0 голосов
/ 07 ноября 2011

В Eclipse у вас есть видимость в значке.Я имею в виду, что у вас есть зеленый значок класса, а если приватный, то сверху ставится apЭтот значок также виден на диаграмме классов, если вы выберите опцию.Надеюсь, что это поможет.

...