Атрибут - Объектно-ориентированный подход и диаграммы классов в UML

Атрибут (attribute) - это инкапсулируемый элемент данных класса, т. е. элемент данных, который содержится в объекте, принадлежащем описываемому классу.

У атрибута должен быть тип (type expression), который может представлять собой простой тип или быть сложным, как например:

CArray<CString *, CPoint *>

В любом случае, детали, касающиеся типов атрибутов, не специфицированы UML. Единственное, что определено - это указание имени одного из классов системы. Более подробное описание типа зависит от того, какой язык программирования используется разработчиками.

Атрибут изображается в виде текстовой строки, отражающей различные его свойства:

<видимость> <имя>:<тип> = <начальное_значение> {<свойства>}

<видимость> имеет С++ семантику видимости членов класса:

    - Открытый атрибут (public), обозначается символом +; - Защищенный атрибут (protected), обозначается символом #; - Закрытый атрибут (private), обозначается символом -.

Видимость типа "открытый атрибут" означает, что любая сущность, имеющая доступ к объекту определяемого класса, имеет доступ и к этому атрибуту.

Видимость типа "защищенный атрибут" означает, что к атрибуту имеют доступ только методы данного класса и его потомков.

Видимость типа "закрытый атрибут" означает, что атрибут доступен только методам класса, который его инкапсулирует.

Символ области видимости может быть опущен. Это означает, что область видимости не показывается (а не то, что она не определена или "public" по умолчанию). Также область видимости может изображаться ключевым словом "public", "private" или "protected". Это особенно удобно для задания области видимости для целой группы атрибутов:

"public"

XCoord : integer = 0

YCoord : integer = 0

"private"

RgbColor : RGB = (192, 192, 192)

<имя> - это идентификатор, представляющий имя атрибута.

<тип> - зависящее от языка реализации описание типа атрибута.

<начальное_значение> - зависящее от языка реализации выражение, задающее начальное значение для атрибута вновь созданного объекта. Эта часть определения атрибута не обязательна. Независимо от ее наличия конструктор объекта может изменить начальное значение.

<свойства> - строка дополнительных свойств элемента. Необязательная часть. Если свойства не указываются, скобки {} опускаются. Примером свойства может служить имя автора:

{Author = Smith}

Нет символа, показывающего возможность изменить атрибут. По умолчанию атрибут изменяемый. Указав в его свойствах пометку "{frozen}" можно объявить атрибут неизменяемым.

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

Coords[3]: integer

Sons[0..*]: human

Пример:

+color: RGB = (192, 192, 192)

#navigable: boolean = TRUE

+goal: enum(gTest, gWork) = gWork

-id: integer

Похожие статьи




Атрибут - Объектно-ориентированный подход и диаграммы классов в UML

Предыдущая | Следующая