Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пример Система управления лифтами 3 09 2015.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
10 Мб
Скачать
☆

5.4. Абстрактный прецедент «Отправить Лифт»

На диаграмме кооперации для абстрактного прецедента Отправить Лифт на­чальные предусловия различаются в зависимости от того, в какой конкретный пре­цедент он включен. Сначала рассмотрим, как данный прецедент исполняется в со­ставе прецедента Остановка Лифта на Этаже. При входе в состояние Проверка Следующего Этажа Назначения объект Управление Лифтом посылает сообще­ние Проверить Следующий Этаж Назначения объекту Состояние и План Дви­жения Лифта (событие А16 на рис.8), который, в свою очередь, передает со­общение Запрос Вверх (или Запрос Вниз) объекту Управление Лифтом, информируя его о направлении, в котором собирается двигаться лифт. Это и есть первое событие в абстрактном прецеденте Отправить Лифт.

Во втором случае объект Управление Лифтом находится в состоянии Лифт Стоит. Диспетчер Лифта получает сообщение либо от планировщика (рис.6), либо от Интерфейса Кнопки Лифта (рис.5) с запросом посетить определен­ный этаж. Диспетчер Лифта посылает сообщение объекту Состояние и План Движения Лифта с просьбой обновить план. Если лифт занят обслуживанием запроса, то объект Состояние и План Движения Лифта возвращает сообщение Подтвердить с нулевым параметром. Если же лифт стоит, то объект Состояние и План Движения Лифта возвращает то же сообщение Подтвердить, но с пара­метром «вверх» (или «вниз»). В таком случае Диспетчер Лифта отправляет со­общение Запрос Вверх (или Запрос Вниз) объекту Управление Лифтом.

Поскольку сообщения Вверх и Вниз приходят объекту Управление Лифтом из разных источников, то в нижеследующем описании последовательности сооб­щений мы называем отправителя объектом-источником. Этот объект можно считать входным параметром для модели кооперации. В сценарии, изображенном на диаграмме кооперации, Запрос Вверх приходит от объекта Состояние и План Движения Лифта (рис.9).

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

Предусловие. Лифт находится в состоянии Лифт Стоит либо в состоянии Проверка Следующего Этажа Назначения.

D1: {Объект-источник} отправляет сообщение Запрос Вверх объекту Управление Лифтом, который переходит в состояние Дверь Закрывается перед Движением Вверх.

D2: В результате такого перехода возникают два параллельных выходных со­бытия. Объект Управление Лифтом посылает команду Закрыть Дверь объекту Интерфейс Двери. На диаграмме состояний событие Закрыть Дверь (как и другое выходное событие) показано в виде действия при выходе, посколь­ку событие Запрос Вверх может поступить либо из состояния Лифт Стоит, либо из состояния Проверка Следующего Этажа Назначения. Диаграмма состояний получится короче, если изобразить одно, а не два действия при вхо­де (по одному на каждый переход).

Рис.9. Диаграмма кооперации для прецедента Отправить Лифт

Рис.10. Прецедент Отправить Лифт: диаграмма состояния объекта Управление Лифтом

D2a (параллельная последовательность): Объект Управление Лифтом дает команду Выключить Лампочку Этажа «Вверх» объекту Интерфейс Лампоч­ки Этажа, который выключает физическую лампочку (D2a.l).

D3: Объект Интерфейс Двери командует физической двери Закрыть Дверь.

D4: Когда дверь закроется, она передаст Ответ Двери.

D5: Интерфейс Двери отправляет сообщение Дверь Закрыта объекту Управление Лифтом, который переходит в состояние Лифт Начинает Движение.

D6: Объект Управление Лифтом посылает команду Вверх объекту Интер­фейс Мотора.

D6a: Объект Управление Лифтом направляет запрос Выключить Лампочку Направления «Вверх» объекту Интерфейс Лампочки Направления, кото­рый выключает физическую лампочку (D6a.l).

D7: Объект Интерфейс Мотора приказывает реальному мотору Запустить Мотор.

D8: Как только лифт начинает движение вверх, мотор выдает сообщение От­вет Мотора.

D9: Объект Интерфейс Мотора посылает сообщение Лифт Поехал объекту Управление Лифтом, который переходит в состояние Лифт Едет.

D10: Объект Управление Лифтом отправляет сообщение Отбыл объектам Состояние и План Движения Лифта (D10) и Планировщик (Dl0a).

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