Статические модели объектно-ориентированных программных систем



· обеспечивают представление структуры систем из базовых строительных блоков и отношений между ними;

· не показывают динамики изменений системы во времени;

· несут описания операций, реализующих заданное поведение системы.

Основное средство для представления - диаграммы классов.

Вершины диаграмм нагружены классами, а дуги (ребра) — отношениями между ними.

Диаграммы используются:

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

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

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

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

Рис. 29.

 

Свойства

Синтаксис представления свойства:

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

В UML определены три уровня видимости (табл. 2):

  Табл. 2.

Уровни видимости

 

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

 

 

Если видимость не указана, считают, что свойство объявлено с публичной видимостью. Существуют три характеристики свойств (табл. 3):

Табл. 3. Характеристики свойств

 

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

 

 

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

Примеры объявления свойств (табл. 4):

Табл. 4. Пример

 

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

 

 

Операции

Синтаксис представления операции:

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

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

Табл. 5. Пример

 

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

 

 

В операции можно указать ноль или более параметров.

Синтаксис формы представления параметра:

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

Элемент Направление может принимать одно из значений (табл. 6):

Табл. 6. Значения

 

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

 

Характеристики операций (табл. 7):

Табл. 7. Характеристики операций

 

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

 

Организация свойств и операций

Пустота секции в обозначении класса не означает, что у класса отсутствуют свойства или операции. Для явного определения большего количества свойств или атрибутов в конце показанного списка проставляются три точки. В длинных списках свойств и операций разрешается группировка — каждая группа начинается со своего стереотипа.

Рис. 30.

Множественность

Ограничения количества экземпляров класса:

· задать ноль экземпляров (в этом случае класс превращается в утилиту, которая предлагает свои свойства и операции);

· задать один экземпляр (класс-singleton);

· задать конкретное количество экземпляров;

· не ограничивать количество экземпляров (по умолчанию).

Количество экземпляров класса называется его множественностью.

Рис. 31.

Множественность применима к свойствам.

 

Отношения в диаграммах классов

Рис. 32.

Ассоциации отображают структурные отношения между экземплярами классов, т. е. соединения между объектами.

Рис. 33.

Класс играет в ассоциации определенную роль.

Рис. 34.

Один класс в разных ассоциациях может играть разные роли.

Для определения количества объектов, которое может соединяться через экземпляр ассоциации используется мощность роли в ассоциации.

5 - точно пять
* - неограниченное количество
0..* - ноль или более
1..* - один или более
3..7 - определенный диапазон
1..3, 7 - определенный диапазон или число

 

Рис. 35.

Чтобы для объекта на одном конце ассоциации выделить набор объектов на противоположном, вводится квалификатор — атрибут ассоциации.

Рис. 36.

Роли в ассоциациях могут иметь пометки видимости.

Рис. 37.

На конце ассоциации можно задать три уровня видимости , добавляя символ видимости к имени роли:

1. по умолчанию для роли задается публичная видимость;

2. приватная видимость указывает, что объекты на данном конце недоступны любым объектам вне ассоциации;

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

Ассоциации могут иметь свойства.

Рис. 38.

Свойства класса — ассоциации характеризуют пару объектов.

Отношения агрегации и композиции — разновидности ассоциации — показывают отношения между "целым" (агрегатом) и его "частями".

Агрегация показывает отношение по ссылке (в агрегат включены только указатели на части).

Композиция — отношение физического включения (в агрегат включены сами части).

Зависимость является отношением использования между клиентом (зависимым элементом) и поставщиком (независимым элементом).

Операции клиента:

· вызывают операции поставщика;

· имеют сигнатуры, в которых возвращаемое значение или аргументы принадлежат классу поставщика.

Рис. 39.

Обобщение — отношение между общим предметом (суперклассом) и специализированной разновидностью этого предмета (подклассом).

Подкласс может иметь одного родителя (один суперкласс), или несколько родителей (несколько супер-классов). В этом случае говорят о множественном наследовании:

Рис. 40.

Проблемы возникают при наследовании от двух классов, имеющих общего родителя. В результате образуется ромбовидная решетка наследования:

Рис. 41. ромбовидная решетка наследования

Реализация — семантическое отношение между классами, в котором класс-приемник выполняет реализацию операций интерфейса класса-источника.

Рис. 42.

Класс Каталог должен реализовать интерфейс Обработчик каталога. Таким образом, Обработчик каталога рассматривается как источник, а Каталог — как приемник. Интерфейс Обработчик каталога позволяет клиентам взаимодействовать с объектами класса Каталог без знания той дисциплины доступа, которая здесь реализована.

 

Деревья наследования

При использовании отношений обобщения строится иерархия классов. Некоторые классы в этой иерархии могут быть абстрактными.

Абстрактным называют класс, который не может иметь экземпляров. Имена абстрактных классов записываются курсивом.

Рис. 43. Дерево наследования

Класс наследует характеристики класса-родителя и передает свои характеристики классу-потомку.

Конечный класс, который не может иметь детей, помечается теговой величиной (характеристикой) leaf, записываемой за именем класса.

Корневой класс, который не может иметь родителей, помечается теговой величиной (характеристикой) root , записываемой за именем класса.

Аналогичные свойства имеют и операции.

Пример

Рис. 44. Диаграмма классов для информационной системы театра

Эту систему образуют 6 классов.

Классы-агрегаты Театр и Труппа имеют операции добавления и удаления своих частей, которые включаются в агрегаты по ссылке. Частями Театра являются Зрители и Труппы, а частями Труппы — Актеры.

Театр может состоять из одной или нескольких трупп, но каждая труппа находится в одном и только одном театре.

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

Ассоциация между классами Спектакль и Актер фиксирует, что в спектакле должен быть занят хотя бы один актер.

При этом актер может играть в любом количестве спектаклей (или вообще может ничего не играть).

Ассоциация между классами Спектакль и Зритель поясняет, что зритель может смотреть любое число спектаклей, а на каждом спектакле может быть любое число зрителей.

Между классами Труппа и Актер существуют два отношения:агрегация и ассоциация.

Агрегация показывает, что каждый актер работает в одной или нескольких труппах, а в каждой труппе должен быть хотя бы один актер.

Ассоциация отображает, что каждой труппой управляет только один актер — художественный руководитель, а некоторые актеры не являются руководителями.

На диаграмме отображены два отношения наследования, утверждающие, что и в зрителях, и в актерах есть человеческое начало.


Дата добавления: 2021-03-18; просмотров: 99; Мы поможем в написании вашей работы!

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






Мы поможем в написании ваших работ!