Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

4966

.pdf
Скачиваний:
3
Добавлен:
13.11.2022
Размер:
854.74 Кб
Скачать

71

1)зависимость – отношение между двумя сущностями, при котором изменение одной из них, независимой, может повлиять на семантику другой, зависимой;

2)ассоциация – соединение между объектами (равноценными, а также целыми и его частями);

3)обобщение – применяется для описания связей типа «предок–потомок» при которых объект-потомок может представлять часть обобщенного объекта (родителя или предка);

4)реализация – связь, например, между интерфейсом класса (объявлением класса) и реализацией интерфейса класса (описанием хода выполнения операций класса);

5)агрегация – специальный вид ассоциации, описывающий отношение между агрегатом (целым) и компонентом (частью).

Пример отношений в диаграммах классов приведён на рисунке 17.

Class_A

- sizeX: int

"кострукторы"

+Class_A(char Ch1)

+Class_A(int x):sizeX(x){}

"открытые функции"

+getLeftUp(): int

+setLeftUp(int Up): int

Рисунок 16 – Пример формального описания класса Рекомендации для разработки диаграммы классов на языке UML:

1)диаграммы классов в первую очередь являются графическим изображением инфологической модели предметной области;

2)в процессе проектирования программной системы диаграммы классов дополняются новыми статическими элементами, обнаруженными в ходе процесса проектирования;

3)каждая, взятая в отрыве от остальных, диаграмма классов не может и не должна охватывать весь проект целиком;

4)диаграмма классов заостряет внимание только на одном аспекте статического вида системы с точки зрения стадии проектирования;

72

5)диаграмма классов является моделью и содержит лишь те элементы, которые существенны для понимания модели (показывает детали, соответствующие требуемому уровню абстракции, опуская те, без которых можно обойтись);

6)диаграммы классов должны показывать один аспект в нескольких «ракурсах», каждый из которых раскрывает только один вид отношений (в каждой диаграмме классов должны доминировать отношения какого-либо одного вида).

Пакет

 

 

 

Транспорт

Заказчик

 

Перемещает

 

 

обобщение

ассоциация

 

 

Автотранспорт

Авиатранспорт

Водный транспорт

 

 

обобщение

Самолёты

 

Вертолёты

 

 

Парк самолётов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Груз

 

 

 

 

 

 

 

 

 

Судно

 

 

Вес

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

зависимость

Габариты

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Агрегирование

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Реализация

 

 

 

 

 

 

 

Самолёты_типа_ А

 

 

 

 

 

 

 

 

 

 

 

интерфейса

 

 

 

 

 

 

 

 

 

 

 

 

Способ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

погрузки

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

судна

 

Самолёты_типа_ В

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

обобщение

реализация

зависимость

ассоциация

73

Рисунок 17 – Отношения в диаграмме классов

2.3.5. Диаграмма последовательностей

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

1)определите сценарий, в котором будет происходить взаимодействие элементов системы (подсистема, операция, классы, объекты);

2)определите элементы системы (например, объекты), принимающие участие в сценарии;

3)разместите объекты на диаграмме последовательностей слева на право по горизонтали так, чтобы объекты-инициаторы действий были расположены левее (например, роли);

4)проведите для каждого объекта линию жизни по вертикали сверху вниз пунктирной линией;

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

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

7)укажите точный промежуток времени работы объекта фокусом управления (утолщённая вертикальная полоса, перекрывающая пунктирную линию жизни объекта);

8)укажите пред- и постусловия (по условию сценария) для возникновения сообщений и объектов;

9)по окончании времени жизни объекта на его линии жизни ставится знак «Х» (что не запрещает вновь создать такой объект позднее).

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

 

 

74

 

приведён на рисунке 19. Активные объекты классов «А» и «В» выделены жир-

ной линией.

 

 

 

а)

б)

 

в)

Рисунок 18 − Графическое изображение видов сообщений

Пакет для сценария АВС

 

 

 

А:Объект_класса_А

В:Объект_класса_В

 

Передача сообщения от А к В

Создать объект С

 

 

 

С:Объект_класса_С

Передача сообщения от В к А

Удалить объект С

Вызов функ-

 

 

 

 

 

 

ции класса «С»

Передача сообщения от В к А

 

Вызов функ-

 

 

 

ции класса «В»

 

Линии жизни объектов

 

Ось времени

 

 

 

Рисунок 19 – Диаграмма последовательностей

Разновидность сообщения (рисунок 18, а) используется для вызова процедур

или выполнения операций. Начало этой стрелки соприкасается с фокусом управ-

ления того объекта-клиента, который инициирует это сообщение. Конец стрелки

соприкасается с линией жизни того объекта, который принимает это сообщение

и выполняет в ответ определённые действия. При этом принимающий объект

может получить фокус управления, становясь в этом случае активным. Переда-

ющий объект может потерять фокус управления или остаться активным.

75

Разновидность сообщения (рисунок 18, б) используется для обозначения простого асинхронного сообщения (одностороннего без подтверждения), которое передаётся в произвольный момент времени. Передача такого сообщения не сопровождается получением фокуса управления объектом-получателем.

Разновидность сообщения (рисунок 18, в) используется для возврата из вызова процедуры. Примером может служить простое сообщение о завершении вычислений без предоставления результата расчётов объекту-клиенту.

Пакет для сценария обработки событий активности пользователя

 

Пользователь

 

 

 

 

Отработка

 

 

нажатия кла-

 

:монитор событий

виши (рефлек-

 

сия)

 

 

Нажатие клавиши

 

 

Фокус непре-

Создать окно

:окно-экран

рывной

 

 

 

активности

 

 

 

Подать сигнал по-

 

 

сле закрытия

 

 

Закрыть все окна

Создание но-

Передача звукового сообщения

вого окна в

 

 

 

 

рабочем окне

 

 

(рекурсия)

 

Время жизни

 

 

объектов

 

Рисунок 20 – Пример диаграммы последовательностей

2.3.6. Диаграммы объектов

Диаграммой объектов называется диаграмма, на которой показаны объекты и их отношения в некоторый момент времени. С системной точки зрения диаграмма объектов есть экземпляр диаграммы классов, т.е. частным случаем диаграммы классов, где классы представлены в виде множества экземпляров классов. Диаграммы объектов показывают мгновенное отражение состояния сотрудничающих объектов с целью достижения цели конкретного сценария, однако со-

76

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

Графически диаграмму объектов представляют в виде графа, состоящего из вершин и рёбер. Вершинами являются объекты, рёбрами – отношения ассоциации. На диаграмме объект представляется как прямоугольник с двумя секциями (см. рисунок 21).

Верхняя секция содержит в себе имя объекта и его класса, подчёркнутое сплошной линией и имеющего синтаксис:

<имя объекта>:<имя класса>

при этом:

имя объекта – имя объекта (может быть опущено, в этом случае в первой секции пишется двоеточие и имя класса);

–имя класса– имя класса, может содержать в себе полный путь к данному классу, например, student : Academy : : Department : : Spesial.

Вторая секция содержит в себе список имён атрибутов и их значений. Каждая строка из списка имеет синтаксис:

<имя атрибута>:<тип>=<значение>

при этом:

имя атрибута – соответствует атрибуту класса объекта;

–тип– тип атрибута соответствует типу атрибута класса объекта;

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

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

треугольник : Фигуры :: Ломаная_линия

координа-

ты_вершин=((0,0),(4,0),(4,8))

Цвет_Линии=255 Цвет_Заливки=256

77

Рисунок 21 – Объект – экземпляр класса

Приведём общие правила построения диаграммы объектов:

1)идентифицируйте прецедент (вариант использования) и сценарий с пред-

ипост условиями выполнения операций;

2)идентифицируйте классы для каждого обнаруженного сценария, а также отношения между ними (диаграмма классов и взаимодействия);

3)зафиксируйте сценарий в некоторый момент времени и изобразите все объекты, участвующие в сценарии;

4)укажите состояние и значения атрибутов каждого объекта;

5)укажите связи ассоциации (представляющие собой экземпляры существующих ассоциаций) между объектами.

Пакет фрагмента описания сценария «Выбор вида услуг при

 

оплате через банкомат»

 

 

 

: окно-экран_интерфейса

 

: система банкомата

 

таймер_показа=30сек

 

 

 

связь_с_банком=60 сек

 

 

 

 

 

 

идентификатор=1346

 

 

 

PIN-код=9876543

 

:сенсорная зона

1

:сенсорная зона

2

размерХ=10

 

размерХ=10

 

размерY=30

 

размерY=30

 

режим_мигания=1

 

режим_мигания=0

 

сообщение= «Получить деньги»

сообщение= «Отмена»

 

 

Рисунок 22 – Диаграмма объектов

 

2.3.7. Диаграммы состояний

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

78

Основное внимание при описании состояний уделяется порядку возникновения событий. Диаграмма состояний предназначена для моделирования поведения реактивных объектов. Реактивным называется объект, поведение которого выражается в реакции (т.е. ответных действий) на внешние события. Описание последовательности состояний, через которые проходит объект на протяжении своего жизненного цикла, реагируя на события, в том числе описание реакций на эти события, называется автомат (State machine). Как правило, реактивный объект находится в состоянии ожидания, пока не получит событие, после чего его реакция зависит от предшествующих событий (поведение автомата).

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

Диаграмма состояний изображается в виде алгоритма поведения объектов (см. рисунок 23), в котором представлен поток управления от одного состояния объекта к последующему состоянию. Элементы описания поведения системы:

1)устойчивые состояния (например: ожидание, сброс, проверка и т.д.);

2)события, инициирующие смену состояния;

3)действия, выполняемые при каждой смене состояния;

4)переходы в другие состояния.

Состояние объекта – статус, при котором параметры объекта удовлетворяет некоторому условию, объект осуществляет определенную деятельность или ожидает какого-то события. Состояния простые – состояние, которое не имеет внутренней, вложенной структуры.

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

Событие − сообщение объекту, способное вызвать срабатывание перехода. Переход − отношение между двумя состояниями, показывающее, что объект,

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

Действие − элементарное вычисление в рамках одного состояния, которое приводит к смене текущего состояния. Деятельность − это продолжающиеся элементарные вычисления внутри автомата.

79

При изображении диаграммы состояний следует:

1)именовать диаграмму, соответственно назначению (например, сценарию);

2)смоделировать состояния объекта;

3)указать переходы между состояниями.

На рисунке 23 «деятельностью» будут являться дуги: «Собрать комплект и сдать в приёмную комиссию»; «Пройти курс подготовки» и т.д. Дуга перехода от состояния «Подача документов в вуз» к состоянию «Подготовка к экзаменам» означает выполнение некоторого действия «Подтверждение факта сдачи доку-

ментов абитуриентом в приёмную комиссию». Так как «масштаб» данной диа-

граммы не предусматривает описание столь элементарных примитивов, то такое действие «скрыто» на текущей стадии описания поведения объектов. Декомпо-

зировать указанное элементарное действие мы можем посредством диаграммы деятельностей. Итак, если на диаграмме состояний представлен поток управле-

ния от состояния к состоянию, то на диаграмме деятельности показывают поток управления от деятельности к деятельности.

 

80

Пакет: Сценарий удачного поступления в вуз

 

Поступление абитуриента в вуз

Собрать комплект

 

 

и сдать в приём-

 

ную комиссию

Начальное

 

состояние

 

 

Подача документов в

Пройти курс

вуз

подготовки

 

 

Выполнить

Подготовка к экзаменам

испытательные

задания по всем

 

 

предметам

 

Сдача экзаменов

Пройти

 

собеседование

 

Зачисление вуз

конечное

 

 

состояние

Рисунок 23 – Диаграмма состояний

Одним из экземпляров диаграммы состояний на рисунке 23 может являться описание события «получение низкой оценки» в состоянии «Сдача экзаменов» и переход к начальному состоянию.

2.3.8. Диаграммы деятельностей

Диаграмма деятельностей (Activity diagram) визуализирует процесс от перехода до перехода, т.е. так же, как и диаграмма состояний моделирует поведение системы, но на более детальном уровне. Деятельность (Activity) − это продолжающийся во времени неатомарный шаг вычислений в автомате. Деятельности в конечном счёте приводят к выполнению некоего действия, которое изменяет состояние моделируемого объекта. Действие может заключаться в вызове другой операции, посылке сигнала, создании или уничтожении объекта либо в простом вычислении, например значения выражения. Важно: на диаграмме деятельности следует отражать операции, соответствующие фокусу активности одного объекта на диаграмме последовательностей (алгоритм его функций и методов).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]