- •Технология разработки программного обеспечения
- •Использование объектного подхода при проектировании программного продукта
- •Контрольные вопросы:
- •Контрольные вопросы
- •Индивидуальное задание:
- •Контрольные вопросы
- •Индивидуальное задание:
- •Примеры использования таких диаграмм
- •Для моделирования процессов
- •Для моделирования операций
- •Контрольные вопросы
- •Индивидуальное задание:
- •Индивидуальное задание:
- •Контрольные вопросы
- •Контрольные вопросы
Индивидуальное задание:
№ вариант |
Диаграмма последовательности |
1 |
покупка товара |
2 |
работа компании |
3 |
электронная почта |
4 |
банковские вклады |
5 |
библиотека |
6 |
интернет – кафе |
7 |
прием заказа на ремонт электрооборудования |
8 |
ремонт транспортных средств |
9 |
склад предприятия |
10 |
мобильный телефон |
11 |
обучение в колледже |
12 |
обучение программированию |
13 |
функционирование компьютера |
14 |
спортивные соревнования |
15 |
расписание занятий |
Занятие 6: Построение диаграммы кооперации
Диаграмма взаимодействия (кооперации) показывает поток сообщений между объектами системы и основные ассоциации между ними и по сути, как уже было сказано выше, является альтернативой диаграммы последовательностей. Диаграмма взаимодействия (кооперации), как и диаграмма последовательностей, показывает взаимодействие объектов во времени, т. е. в динамике.
Объекты обозначаются прямоугольниками с подчеркнутыми именами (чтобы отличить их от классов), ассоциации между объектами указываются в виде соединяющих их линий, над ними может быть изображена стрелка с указанием названия сообщения и его порядкового номера.
Необходимость номера сообщения объясняется очень просто - в отличие от диаграммы последовательностей, время на диаграмме взаимодействия не показывается в виде отдельного измерения. Поэтому последовательность передачи сообщений можно указать только с помощью их нумерации.
Пример 1):
Как видите, эта диаграмма описывает (очень грубо) работу персонала библиотеки по обслуживанию клиентов: библиотекарь получает заказ от клиента, поручает сотруднику найти информацию по нужной клиенту книге, а после получения данных поручает еще одному сотруднику выдать книгу клиенту. Еще пример 2):
Диаграмма описывает процесс управления учебными курсами для некоего учебного центра.
Пример 3):
Диаграмма кооперации - диаграмма взаимодействий, в которой основной акцент сделан на структурной организации объектов, посылающих и получающих сообщения.
Итак, кооперация (collaboration). Это статическая конструкция для моделирования набора сущностей, взаимодействующих друг с другом. Кооперация определяет набор взаимодействующих ролей, используемых вместе, чтобы показать некую функциональность. Кооперация часто реализует некоторый паттерн (шаблон проектирования). Впрочем, о шаблонах проектирования мы сейчас говорить не будем, поскольку они выходят за рамки этого курса и первого теста программы OCUP. Заинтригованным читателям мы предложим попробовать ввести словосочетание "design patterns" в адресную строку браузера. Спорим, попадете на статью "Design pattern (computer science)" из "Википедии"?
Кооперация изображается в виде эллипса с пунктирной границей, причем символ этот может использоваться двумя способами. Вот первый способ:
Мы видим, что эта диаграмма буквально иллюстрирует наши слова о кооперации как наборе ролей, используемых вместе, чтобы показать некую функциональность, в данном случае - выполнение ежемесячного резервного копирования. Второй способ показывает прикрепленные к объектам (классам) роли в рамках данной кооперации. Назначение роли изображается пунктирной линией со стрелкой на конце, направленной в сторону объекта. Имя роли указывается на конце линии, рядом с объектом. Посмотрите, например, на эту диаграмму Пример 4):
Все ведь понятно, правда? Видно, кто какую роль играет и в каком взаимодействии (кооперации). А еще показана генерализация и кооперации, и самих исполнителей.
С кооперацией разобрались. Отметим, что, скорее всего, в реальном моделировании вы с ней будете встречаться крайне редко. Следующие элементы, которые можно увидеть на диаграмме взаимодействия - это объекты и классы.
Поскольку диаграмма кооперации - всего лишь альтернативная форма представления той же информации, которая содержится в диаграмме последовательностей, то и обозначения объектов (классов) в ней, по сути, такие же, как и на диаграмме последовательностей (и на других диаграммах). Чтобы проиллюстрировать это утверждение, приведем пример диаграммы взаимодействия, позаимствованный с сайта http://www.agilemodeling.com/ (а точнее, http://www.agilemodeling.com/style/collaborationDiagram.htm) Пример 5):
Иногда нужно показать одновременную отправку сообщений. Чтобы отметить параллельные потоки сообщений, их номера предваряют буквами A, B, C, D и т. д. Вот пример таких обозначений, позаимствованный опять-таки с http://www.agilemodeling.com/ Пример 6):
Мультиобъект показывает, что на "дальнем" конце ассоциации находится не один, а целый набор объектов. Такая конструкция используется, чтобы показать операцию, которая нацелена на целый набор объектов. Мультиобъект изображается как два прямоугольника, смещенных по отношению друг к другу, что создает впечатление "колоды карт". Сообщение, отправленное мультиобъекту, означает сообщение к набору объектов, например, операция выбора - поиска определенного объекта. Пример подобной диаграммы показан на рисунке Пример 7):
Смысл диаграммы вполне понятен: для печати документа из некоторого приложения необходимо выбрать из всех доступных некий конкретный принтер. Символ композиции применен для того, чтобы показать, что принтер входит в состав набора объектов. Предположим теперь, что у нас доступны несколько сетевых принтеров и один локальный. Как показать, что выбран именно он? Легко. Для этого используют связи со стереотипами. Чтобы показать, что выбран локальный принтер, чуть изменим предыдущую диаграмму Пример 8):
Следует отметить, что иногда вместо фигурных скобок используются угловые кавычки (как мы привыкли делать, указывая стереотип в названии компонента или класса), но чаще все же применяют фигурные скобки.
Чтобы закрепить полученные знания о связях со стереотипами, приведем еще один пример Пример 9):
Смысл диаграммы опять вполне понятен, ведь правда? А стереотипы связей позволяют исключить неоднозначности, которые могли бы быть, если бы мы говорили, например, о многонациональной распределенной компании...
И еще одна вещь, которая связана с понятием кооперации - композитный объект. Композитный объект - это высокоуровневый объект, состоящий из нескольких частей-объектов. Это экземпляр композитного класса, реализующего композитное агрегирование класса и его частей. Композитный объект - понятие, близкое к понятию кооперации, но более простое и более ограниченное. Это конструкция, показывающая целое в виде взаимодействующих частей, но в основном с точки зрения композиции. Изображается композитный объект в виде прямоугольного символа объекта, но с некоторыми отличиями:
имя объекта указывается в верхней части прямоугольника, отделенной от его остальной части горизонтальной линией;
в нижней части прямоугольника размещаются части композитного объекта, также, естественно, изображаемые символами объектов;
части композитного объекта могут (и даже должны) быть связаны между собой;
допускается ситуация, когда некоторые части композитного объекта сами являются композитными объектами.
Посмотрим же, как это выглядит на примере Пример 10):