Атрибуты
На самом высоком уровне абстракции, моделируя структурные свойства класса (то есть атрибуты), вы просто записываете их имена. Обычно этого вполне достаточно, чтобы читатель мог понять общее назначение модели. В дополнение к этому, как было описано выше, можно определить видимость, область действия и кратность каждого атрибута. Кроме того, можно задать тип, начальное значение и изменяемость атрибутов. А для обозначения множества логически связанных атрибутов допустимо использовать стереотипы (см. главу 6).
Полная форма синтаксиса атрибута в языке UML следующая:
[visibility] name [multiplicity] [: type] [= initial-value] [{property-string}]
Ниже приводятся примеры допустимых объявлений атрибутов:
- origin - только имя;
- + origin - видимость и имя;
- origin : Point - имя и тип;
- head : *Item - имя и сложный тип;
- name [ 0 . . 1 ] : String - имя, кратность и тип;
- origin : Point = (0 , 0) - имя, тип и начальное значение;
- id : Integer {frozen} - имя и свойство.
Наряду с атрибутами можно использовать три свойства:
- changeable (изменяемый) - ограничений на изменение значений атрибута не установлено;
- addOnly (только добавляемый) - разрешается добавлять новые значения для атрибутов с кратностью больше единицы, но созданное значение не может быть изменено или удалено;
- frozen (замороженный) - после инициализации объекта нельзя изменять значения его атрибутов.
Если явно не оговорено противное, то все атрибуты изменяемы (changeable). При моделировании постоянных или однократно задаваемых атрибутов можно использовать свойство frozen.
Примечание: Свойство frozen соответствует ключевому слову const вязыке C++.