Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Унифицированный язык моделирования (Unified Mod...doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.06 Mб
Скачать

Атрибут

Используется для показа атрибутов в классах. Подобный синтаксис используется для определения уточнителей, параметров шаблона, параметров операции и так далее (некоторые из них не включают определенные элементы).

Семантика

Заметим, что атрибут семантически эквивалентен построению ассоциаций. Однако цель и применение обычно отличаются.

Тип атрибута - определяется выражением типа. Он может быть именем класса или быть составным, как array[String] of Point. В любом случае детали выражений, описывающих тип атрибута, не определяются в UML; они зависят от синтаксиса выражений, поддерживаемых используемым языком подробной спецификации или программирования.

Нотация

Атрибут отображается как текстовая строка, которая может разбираться на различные свойства атрибута как элемента модели. Синтаксис по умолчанию:

visibility name : type-expression = initial-value {property-string} видимость имя : выражение-типа = начальное-значение {строка-свойств}

где видимость принимает одно из следующих значений:

+ общедоступный (public)

# защищенный (protected)

- частный (private)

Маркер видимости может быть опущен. Отсутствие маркера видимости показывает, что видимость не показывается (а не то, что она не определена или соответствует общедоступности). ПО должно назначать видимость новым атрибутам, даже если видимость не показывается. Маркер видимости является сокращением полной строки описывающей свойство видимости.

Видимость может быть также задана с помощью ключевых слов (public, protected, private). Наиболее часто эта форма используется как встроенный элемент списка, который применяется ко всему блоку атрибутов.

Для некоторых языков программирования могут потребоваться дополнительные виды видимости, как implementation видимость в C++ (фактически для всех форм не общей видимости, зависящей от языка). Такая видимость должна определяться строкой свойства или зависящим от ПО способом.

где имя - строка идентификатор, которая представляет название атрибута;

где выражение-типа - зависящее от языка описание, определяющее тип атрибута;

где начальное-значение - зависящее от языка выражение для начального значения вновь созданного объекта. Начальное значение является необязательным (знак равенства также не пишется). Явный конструктор может увеличивать или изменять заданное для нового объекта начальное значения по умолчанию;

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

Глобальные для класса атрибуты (class-scope attribute) отображаются с помощью подчеркивания имени и выражения типа; иначе атрибут является локальным для экземпляра. Локальные для экземпляра атрибуты (instance-scope attribute) не подчеркиваются; по умолчанию атрибуты локальные.

class-scope-attribute

Никаких символов не используется для указания на то, что атрибут может изменять свое значение (по умолчанию изменяемый). Неизменяемые атрибуты описываются с помощью свойства {frozen} ({заморожен}).

В отсутствии указателя множественности атрибут принимает точно одно значение. Множественность может быть задана помещением указателя множественности в скобках после имени, например:

colors [3]: Color points [2..*]: Point

Заметим, что множественность 0..1 применяется для указания возможности пустых значений: отсутствия значения, как противопоставление точному значению из интервала. Например, следующее объявление допускает различие между пустым значением и пустой строкой:

name [0..1]: String

Ключевое слово стереотипа предшествует строке атрибута, включая индикаторы видимости. Список свойств в скобках следует за строкой атрибута.