
1
3
Служащий
Служащий
с
почасовой
оплатой
Служащий
на
окладе
Временный
служащий
Рис
.
1
.3.
Обобщение
действующего
лица
Нет
необходимости
всегда
создавать
связи
этого
типа
.
В
общем
случае
,
они
нужны
,
если
поведение
действующего
лица
одного
типа
отличается
от
поведения
другого
постольку
,
поскольку
это
затрагивает
систему
.
Если
оба
подтипа
используют
одни
и
те
же
варианты
использования
,
показывать
обобщение
действующего
лица
не
требуется
.
Варианты
использования
являются
необходимым
средством
на
стадии
формирования
требований
к
ПО
.
Каждый
вариант
использования
–
это
потенциальное
требование
к
системе
,
и
пока
оно
не
выявлено
,
невозможно
запланировать
его
реализацию
.
1.4.
Диаграммы
взаимодействия
Диаграммы
взаимодействия
(interaction diagrams)
описывают
поведение
взаимодействующих
групп
объектов
.
Как
правило
,
диаграмма
взаимодействия
охватывает
поведение
объектов
в
рамках
только
одного
варианта
использования
.
На
такой
диаграмме
отображается
ряд
объектов
и
те
сообщения
,
которыми
они
обмениваются
между
собой
.
Сообщение
(message)
–
это
средство
,
с
помощью
которого
объект
-
отправитель
запрашивает
у
объекта
получателя
выполнение
одной
из
его
операций
.
Информационное
(informative)
сообщение
–
это
сообщение
,
снабжающее
объект
-
получатель
некоторой
информацией
для
обновления
его
состояния
.

1
4
Сообщение
-
запрос
(interrogative)
–
это
сообщение
,
запрашивающее
выдачу
некоторой
информации
об
объекте
-
получателе
.
Императивное
(imperative)
сообщение
–
это
сообщение
,
запрашивающее
у
объекта
-
получателя
выполнение
некоторых
действий
.
Существует
два
вида
диаграмм
взаимодействия
:
диаграммы
последовательности
(sequence diagrams)
и
кооперативные
диаграммы
(collaboration diagrams).
1.4.1.
Диаграммы
последовательности
Диаграммы
последовательности
отражают
поток
событий
,
происходящих
в
рамках
варианта
использования
.
Например
,
вариант
использования
«
Снять
деньги
»
предусматривает
несколько
возможных
последовательностей
,
такие
как
снятие
денег
,
попытка
снять
деньги
,
не
имея
их
достаточного
количества
на
счету
,
попытка
снять
деньги
по
неправильному
идентификационному
номеру
и
некоторые
другие
.
Нормальный
сценарий
снятия
денег
со
счета
(
при
отсутствии
таких
проблем
,
как
неправильный
идентификационный
номер
или
недостаток
денег
на
счете
)
показан
на
рис
.
1
.4.
Эта
диаграмма
последовательности
показывает
поток
событий
в
рамках
варианта
использования
«
Снять
деньги
».
Все
действующие
лица
показаны
в
верхней
части
диаграммы
;
в
приведенном
выше
примере
изображено
действующее
лицо
Клиент
.
Объекты
,
требуемые
системе
для
выполнения
варианта
использования
«
Снять
деньги
»,
также
представлены
в
верхней
части
диаграммы
.
Стрелки
соответствуют
сообщениям
,
передаваемым
между
действующим
лицом
и
объектом
или
между
объектами
для
выполнения
требуемых
функций
.
На
диаграмме
последовательности
объект
изображается
в
виде
прямоугольника
,
от
которого
вниз
проведена
пунктирная
вертикальная
линия
.
Эта
линия
называется
линией
жизни
(lifeline)
объекта
.
Она
представляет
собой
фрагмент
жизненного
цикла
объекта
в
процессе
взаимодействия
.

1
5
Рис
.
1
.4.
Диаграмма
последовательности
для
снятия
клиентом
денег
со
счета
Иван
:
Клиент
Приемник
карт
Экран
ATM
Счет
Ивана
Кассовый
аппарат
Управление
АТМ
1
:
Принять
карту
2:
Считать
№
карты
1
0:
Выбор
действия
(
Снять
со
счета
)
1
2:
Ввод
суммы
(20
рублей
)
1
6:
Уменьшить
вклад
(20
руб
)
3:
Инициализировать
экран
1
5:
Проверить
вклад
(20
руб
.)
7:
Открыть
счет
8:
Проверить
PIN-
код
4:
Запросить
PIN-
код
6:
Открыть
счет
9:
Запросить
действие
11
:
Запросить
сумму
1
3:
Снять
(20
руб
.)
1
4:
Снять
(20
руб
.)
1
8:
Вернуть
карту
1
7:
Выдать
(20
руб
.)
5:
Ввод
PIN-
кода
(
1
234)

1
6
Каждое
сообщение
представляется
в
виде
стрелки
между
линиями
жизни
двух
объектов
.
Сообщения
появляются
в
том
порядке
,
как
они
показаны
на
странице
сверху
вниз
.
Каждое
сообщение
помечается
как
минимум
именем
сообщения
;
при
желании
можно
добавить
также
аргументы
и
некоторую
управляющую
информацию
,
и
,
кроме
того
,
можно
показать
само
-
делегирование
(self-delegation) –
сообщение
,
которое
объект
посылает
самому
себе
,
при
этом
стрелка
сообщения
указывает
на
ту
же
самую
линию
жизни
.
Хороший
способ
первоначального
обнаружения
некоторых
объектов
–
это
изучение
имен
существительных
в
потоке
событий
.
Можно
также
прочитать
документы
,
описывающие
конкретный
сценарий
.
Под
сценарием
понимается
конкретный
экземпляр
потока
событий
.
Поток
событий
для
варианта
использования
«
Снять
деньги
»
говорит
о
человеке
,
снимающем
некоторую
сумму
денег
со
счета
с
помощью
АТМ
.
Не
все
объекты
появляются
в
потоке
событий
.
Там
,
например
,
может
не
быть
форм
для
заполнения
,
но
их
необходимо
показать
на
диаграмме
,
чтобы
позволить
действующему
лицу
ввести
новую
информацию
в
систему
или
просмотреть
её
.
В
потоке
событий
,
скорее
всего
,
также
не
будет
и
управляющих
объектов
(control objects).
Эти
объекты
управляют
последовательностью
потока
в
варианте
использования
.
1.4.2.
Кооперативные
диаграммы
Вторым
видом
диаграммы
взаимодействия
является
кооперативная
диаграмма
.
Подобно
диаграммам
последовательности
,
кооперативные
диаграммы
(collaborations)
отображают
поток
событий
через
конкретный
сценарий
варианта
использования
.
Диаграммы
последовательности
упорядочены
по
времени
,
а
кооперативные
диаграммы
больше
внимания
заостряют
на
связях
между
объектами
.
На
рис
.
1
.5
приведена
кооперативная
диаграмма
,
описывающая
,
как
клиент
снимает
деньги
со
счета
.
Как
видно
из
рисунка
,
здесь
представлена
вся
та
информация
,
которая
была
и
на
диаграмме
последовательности
,
но
кооперативная
диаграмма
по
-
другому
описывает
поток
событий
.
Из
нее
легче
понять
связи
между
объектами
,
однако
,
труднее
уяснить
последовательность
событий
.

1
7
Приемник
карт
Иван
:
Клиент
Экран
ATM
Счет
Ивана
Кассовый
аппарат
Управление
ATM
2:
Считать
№
карты
4:
Запросить
PIN-
код
9:
Запросить
действие
11
:
Запросить
сумму
1
5:
Проверить
вклад
(20
руб
.)
1
6:
Уменьшить
вклад
(20
руб
.)
1
:
Принять
карту
3:
Инициализировать
экран
1
0:
Выбор
действия
(
Снять
со
счета
)
1
2:
Ввод
суммы
(20
руб
.)
5:
Ввод
PIN-
кода
(
1
234)
6:
Открыть
счет
1
3:
Снять
(20
руб
.)
7:
Открыть
счет
8:
Проверить
PIN-
код
1
4:
Снять
(20
руб
.)
1
8:
Вернуть
карту
1
7:
Выдать
(20
руб
.)
Рис
.
1
.5.
Кооперативная
диаграмма
,
описывающая
процесс
снятия
клиентом
денег
со
своего
счета
По
этой
причине
часто
для
какого
-
либо
сценария
создают
диаграммы
обоих
типов
.
Хотя
они
служат
одной
и
той
же
цели
и
содержат
одну
и
ту
же
информацию
,
но
представляют
ее
с
различных
точек
зрения
.
На
кооперативной
диаграмме
так
же
,
как
и
на
диаграмме
последовательности
,
стрелки
обозначают
сообщения
,
обмен
которыми
осуществляется
в
рамках
данного
варианта
использования
.
Их
временн
á
я
последовательность
,
однако
,
указывается
путем
нумерации
сообщений
.
1.5.
Диаграммы
классов
1.5.1.
Общие
сведения
Диаграмма
классов
определяет
типы
классов
системы
и
различного
рода
статические
связи
,
которые
существуют
между
ними
.
На
диаграммах
классов
изображаются
также
атрибуты
классов
,
операции
классов
и
ограничения
,
которые
накладываются
на
связи
между
классами
.