На самом высоком уровне абстракции, моделируя структурные свойства класса (то есть атрибуты), вы просто записываете их имена. Обычно этого вполне достаточно, чтобы читатель мог понять общее назначение модели. В дополнение к этому, как было описано выше, можно определить видимость, область действия и кратность каждого атрибута. Кроме того, можно задать тип, начальное значение и изменяемость атрибутов. А для обозначения множества логически связанных атрибутов допустимо использовать стереотипы (см. главу 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++.