ЛЕКЦИЯ 7. Статические модели объектно-ориентированных программных систем

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

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

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

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

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

ЛЕКЦИЯ 7. Статические модели объектно-ориентированных программных систем - student2.ru

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

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

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

ЛЕКЦИЯ 7. Статические модели объектно-ориентированных программных систем - student2.ru

Рис. 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 Конечная операция, операция не может быть полиморфной и не может переопределяться (в цепочке наследования) Выполнение операции не изменяет состояния объекта В каждый момент времени в объект поступает только один вызов операций. Как следствие, в каждый момент времени выполняется только одна операция объекта. Другими словами, допустим только один поток вызовов (поток управления) Допускается одновременное поступление в объект нескольких вызовов, но в каждый момент времени обрабатывается только один вызов охраняемой операции. Иначе говоря, параллельные потоки управления исполняются последовательно (за счет постановки вызовов в очередь) В объект поступает несколько потоков вызовов операций (из параллельных потоков управления). Разрешается параллельное (и множественное) выполнение операции. Подразумевается, что такие операции являются атомарными


Наши рекомендации