Диаграмма кооперации для прецедента «Остановка Лифта на Этаже»

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

А1: Объект Интерфейс Датчика Прибытия получает информацию от внешнего устройства.

А2: Интерфейс Датчика Прибытия посылает номер этажа в сообщении Подходит к Этажу объекту Управление Лифтом.

A3: Объект Управление Лифтом отправляет сообщение Проверить Этот Этаж объекту Состояние и План Движения Лифта, который проверяет, дол­жен ли лифт остановиться на этаже, к которому он подходит.

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

 

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

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

 

А5: В результате перехода в состояние Лифт Останавливается объект Управление Лифтом отдает объекту Интерфейс Мотора команду Стоп.

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

А6: Объект Интерфейс Мотора приказывает физическому мотору Остано­вить Мотор.

А7: Объект Интерфейс Мотора передает команду Лифт Остановлен объек­ту Управление Лифтом, который переходит в состояние Открывается Дверь Лифта.

А9: При переходе в состояние Открывается Дверь Лифта объект Управле­ние Лифтом посылает объекту Интерфейс Двери команду Открыть Дверь.

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

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

А11: Объект Интерфейс Двери получает Ответ Двери.

А12: Объект Интерфейс Двери посылает сообщение Дверь Открыта объек­ту Управление Лифтом, который переходит в состояние Лифт на Этаже.

А13: Объект Управление Лифтом запускает таймер.

А14: По прошествии тайм-аута таймер генерирует сообщение, которое переводит объект Управление Лифтом в состояние Проверить Следующий Этаж Назначения.

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

Заметим, что А9, А9а, А9b и А9с - параллельные последовательности, выпол­няемые в результате четырех выходных событий для одного и того же перехода. Порядок их реализации не детерминирован. Так, событие А9а.1 (следующее за А9а) может произойти как до, так и после события А10 (которое следует за А9). Обрати­те внимание, что главной последовательности суффикс (к примеру, A9d) не при­сваивается, поскольку это усложнило бы последующую нумерацию событий.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: