ГЛАВА 11. Статические модели объектно-ориентированных программных систем

 

Статические модели обеспечивают представление структуры систем в терминах базовых строительных блоков и отношений между ними. «Статичность» этих моделей состоит в том, что здесь не показывается динамика изменений системы во времени. Вместе с тем следует понимать, что эти модели несут в себе не только структурные описания, но и описания операций, реализующих заданное поведение системы. Основным средством для представления статических моделей являются диаграммы классов [8], [23], [53], [67]. Вершины диаграмм классов нагружены классами, а дуги (ребра) – отношениями между ними. Диаграммы используются:

q в ходе анализа – для указания ролей и обязанностей сущностей, которые обеспечивают поведение системы;

q в ходе проектирования – для фиксации структуры классов, которые формируют системную архитектуру.

Вершины в диаграммах классов

 

Итак, вершина в диаграмме классов – класс. Обозначение класса показано на рис. 11.1.

Рис. 11.1.Обозначение класса

 

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

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

Рис. 11.2. Свойства уровней класса и экземпляра

 

Свойства

 

Общий синтаксис представления свойства имеет вид

Видимость Имя [Множественность]: Тип = НачальнЗначение {Характеристики}

Рассмотрим видимость и характеристики свойств.

В языке UML определены три уровня видимости:

public Любой клиент класса может использовать свойство (операцию), обозначается символом +
protected Любой наследник класса может использовать свойство (операцию), обозначается символом #
private Свойство (операция) может использоваться только самим классом, обозначается символом –

ПРИМЕЧАНИЕ

Если видимость не указана, считают, что свойство объявлено с публичной видимостью.

 

Определены три характеристики свойств:

changeable Нет ограничений на модификацию значения свойства
addOnly Для свойств с множественностью, большей единицы; дополнительные значения могут быть добавлены, но после создания значение не может удаляться или изменяться
frozen После инициализации объекта значение свойства не изменяется

ПРИМЕЧАНИЕ

Если характеристика не указана, считают, что свойство объявлено с характеристикой changeable.

 

Примеры объявления свойств:

начало Только имя
+ начало Видимость и имя
начало: Координаты Имя и тип
имяфамилия [0..1]: String Имя, множественность, тип
левыйУгол: Координаты=(0, 10) Имя, тип, начальное значение
сумма: Integer {frozen} Имя и характеристика

Операции

 

Общий синтаксис представления операции имеет вид

Видимость Имя (Список Параметров): ВозвращаемыйТип {Характеристики}

Примеры объявления операций:

записать Только имя
+ записать Видимость и имя
зарегистрировать (и: Имя, ф: Фамилия) Имя и параметры
балансСчета (): Integer Имя и возвращаемый тип
нагревать () (guarded) Имя и характеристика

В сигнатуре операции можно указать ноль или более параметров, форма представления параметра имеет следующий синтаксис:

Направление Имя : Тип = ЗначениеПоУмолчанию

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

 

in Входной параметр, не может модифицироваться
out Выходной параметр, может модифицироваться для передачи информации в вызывающий объект
inout Входной параметр, может модифицироваться

 

Допустимо применение следующих характеристик операций:

 

leaf Конечная операция, операция не может быть полиморфной и не может переопределяться (в цепочке наследования)
isQuery Выполнение операции не изменяет состояния объекта
sequential В каждый момент времени в объект поступает только один вызов операций. Как следствие, в каждый момент времени выполняется только одна операция объекта. Другими словами, допустим только один поток вызовов (поток управления)
guarded Допускается одновременное поступление в объект нескольких вызовов, но в каждый момент времени обрабатывается только один вызов охраняемой операции. Иначе говоря, параллельные потоки управления исполняются последовательно (за счет постановки вызовов в очередь)
concurrent В объект поступает несколько потоков вызовов операций (из параллельных потоков управления). Разрешается параллельное (и множественное) выполнение операции. Подразумевается, что такие операции являются атомарными







Дата добавления: 2019-02-07; просмотров: 389;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.006 сек.