В статической модели отражаются статические отношения, существующие в системе управления лифтами. Для начала рассмотрим физические классы предметной области (рис.3). Лифт - это составной класс, содержащий один Мотор, одну Дверь, n Кнопок Лифта и n Лампочек Лифта. Этаж - это тоже составной класс, включающий Кнопку Этажа и Лампочку Этажа. Обычно имеется по два экземпляра каждого объекта (для двух направлений), но на нижнем и верхнем этажах есть лишь по одной лампочке и кнопке.

Рис.3. Концептуальная статическая модель системы управления лифтами
Класс Лифт ассоциирован также с классом Датчик Прибытия, который извещает о приближении лифта к этажу, и с классом Лампочка Направления, которую лифт включает и выключает. Класс Лампочка Направления ассоциирован с классом Этаж. На каждом этаже установлены одна или две лампочки направления для каждого лифта.
|
Из диаграммы контекста системы видно, что, за исключением перечисленных составных классов, остальные классы на рис.3, представляющие объекты реального мира, - это внешние устройства, то есть датчики или приводы. Поэтому они изображены в виде классов внешних устройств ввода или вывода, которые осуществляют интерфейс с системой управления лифтами (рис. 18.4).
| Рис.4. Диаграмма контекста классов для системы управления лифтами |
Разбиение на объекты
Чтобы подготовиться к динамическому моделированию, рассмотрим программные объекты в системе управления лифтами. Объект Лифт составлен из нескольких объектов. Поскольку он получает информацию от внешних объектов и управляет внешними объектами, то некоторые его компоненты - это объекты интерфейса устройств ввода/вывода, а именно датчиков и приводов лифта.
Для каждого объекта внешнего устройства существует соответствующий объект программного интерфейса. Так, лифт получает вызовы от объектов Интерфейс Кнопки Лифта, расположенных на каждом этаже. В лифте есть также объекты Интерфейс Двери и Интерфейс Мотора, взаимодействующие соответственно с физической дверью и мотором. Помимо этого, лифт посылает команды объектам Интерфейс Лампочки Лифта, которых имеется столько же, сколько этажей. Класс Этаж составлен из классов Интерфейс Кнопки Этажа и Интерфейс Лампочки Этажа. На каждом этаже находится по два экземпляра этих классов, а на первом и последнем - по одному. Существует также объект Интерфейс Датчика Прибытия, который посылает сообщения объекту Управление Лифтом, когда лифт приближается к этажу, и объект Интерфейс Лампочки Направления для взаимодействия с физической лампочкой.
Помимо объектов интерфейса устройств, выявленных с помощью диаграммы контекста классов, нужны еще сущностные и управляющие объекты. Для каждого лифта необходим сущностный объект Состояние и План Движения Лифта. Под состоянием понимается информация о том, движется ли лифт вообще, в каком направлении, на каком этаже он стоит или какой этаж только что проехал. Сюда же относят план движения лифта, включающий список этажей, которые лифт должен посетить.
С каждым лифтом связан зависящий от состояния управляющий объект Управление Лифтом, в ведении которого находятся дверь и мотор лифта. Он управляет закрыванием и открыванием двери, а также запуском и остановом мотора. Состояния этого объекта изображены на диаграмме состояний лифта. Поскольку запросы на вызов лифта могут поступать в любое время, то необходимо создать отдельный объект-координатор Диспетчер Лифта, который будет принимать запросы и обновлять план движения лифта. Еще одна проблема - выбор лифта, который обслужит поступивший с этажа вызов. Избежать сложностей можно, включив еще один координирующий объект Планировщик, который будет заниматься поиском подходящего лифта.
Динамическая модель
Далее следует определить взаимодействия между объектами, соответствующие каждому прецеденту. В этом примере мы будем пользоваться диаграммами кооперации. Для каждого прецедента разрабатывается своя диаграмма кооперации, на которой изображены участвующие в нем объекты и последовательность их взаимодействий. Кроме того, если в кооперацию вовлечен зависящий от состояния объект Управление Лифтом, то последовательность событий также изображается на диаграмме состояний. Ниже приводятся описания сообщений для каждого прецедента.






