Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
компьютерная техника (конспектировать ).docx
Скачиваний:
66
Добавлен:
05.11.2018
Размер:
1.56 Mб
Скачать

Выбор экземпляра

В примере Клиент-Клерк конечный автомат, управляющий связью, делает выбор между клиентом и клерком произвольно. В типичном случае, однако, будет необходима более комплексная стратегия выбора. Для обеспечения желаемой линии поведения необходимо, чтобы для объектов, участвующих в связи (или для других близлежащих объектов) были определены дополнительные атрибуты. Например, если Вы хотите определять клиентов к клеркам, которые обслужили наименьшее количество клиентов до текущего момента, атрибут Клерк. Количество Обслуженных Клиентов следует добавить к Клерку. В качестве альтернативы стратегия поиска могла принимать во внимание время прихода клиента (Клиент. Время Прихода), его возраст или то, как долго он имел дело с организацией, которая обеспечивает обслуживание.

4.5 Общий случай конкурирующей связи

Построение модели состояний для создания экземпляров конкурирующей связи обычно требует некоторой осторожности, простая форма монитора непосредственно пригодна только в определенных ситуациях. Этот раздел представляет систематическую процедуру для построения требуемой модели состояний Определителя в общем случае. Процедура иллюстрируется на примере отеля с конечным числом комнат. Постояльцы конкурируют друг с другом при бронировании комнат на различные сроки.

1-й шаг: информационная модель

Как обычно, сначала мы формируем информационную модель. Конкурирующая связь, должна быть формализована как ассоциативный объект. Любые атрибуты, необходимые для того, чтобы обеспечить требуемую стратегию выбора, должны быть приведены в соответствующих объектах. Информационная модель проблемы бронирования комнаты в отеле показана на рнс.4.5.1.

Атрибуты Постояльца и Комнаты обеспечивают стратегию выбора, согласно которой наиболее частым клиентам предоставляются самые спокойные (бесшумные) комнаты.

2-й шаг: модели состояний для участвующих объектов

Формируем модели состояний для обоих объектов, участвующих в связи. Идентифицируем все события моделей состояний объектов, которые ожидаем получить из модели состояний Определителя.

На рис.4.5.2 показаны модели состояний для Постояльца На Срок и для Комнаты На Срок. Событиями, которые мы планируем создавать в модели состояний Определителя, являются:

П2: за постояльцем закрепляют комнату на срок(ID постояльца, срок);

П4: комнат нет(ID постояльца, срок); К1: комната закреплена(ID комнаты, срок).

Рис.4.5.1. Информационная модель проблемы бронирования комнаты в отеле.

3-й шаг: модель состояний Определителя, первый набросок

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

4-й шаг: корректировка первого наброска

Исследуйте первый набросок модели Определителя, чтобы увидеть, удачен ли он, а если нет, то почему. Убедитесь, что события, ожидаемые участвующими объектами, порождаются.

На первой, черновой модели (рис.4.5.3), возможно, Вы смогли попасть в состояние 3 и обнаружить, что все постояльцы хотели забронировать комнаты на те дни, когда отель был полон, и что имелись комнаты, не забронированные на другое время. В этом случае действие не могло быть выполнено.

Постоялец На Срок Комната На Срок

Рис.4.5.2. Модели состояний проблемы бронирования комнаты в отеле.

Это значит, что в состоянии 2 должны рассматриваться только такие комнаты, которые постояльцы хотят забронировать на определенные сроки. На скорректированной модели состояний, показанной на рис.4.5.4, представлено следующее:

  • событие Б-А1 переопределено таким образом, что оно несет относящиеся к делу входные данные, в этом случае - дату как дополнительные данные;

  • действие состояния 2 рассматривает только комнаты на указанный срок. Если действие определяет, что бронирование может быть осуществлено, событие создается для переноса нас к состоянию 3 обычным способом. Если бронирование невозможно, действие создает ранее отсутствующее событие П4, сообщающее постояльцу, что бронирование нельзя осуществить, и другое событие, переносящее нас в состояние 1, чтобы выбрать более перспективного постояльца.

Обратите внимание, что мы теперь используем новое событие (Б-А99) для перехода в состояние 3, так как событие, ранее используемое для этой цели (Б-А2), может применяться к дате, для которой у нас нет ожидающих постояльцев. Должно соблюдаться правило: когда Вы достигаете состояния, осуществляющего определение, необходимо, чтобы действие могло успешно выполняться.

5-й шаг: корректировка моделей состояний участвующих объектов

Чтобы сделать модели состояний объектов не противоречащими модели Определителя, обычно требуются незначительные корректировки. В частности, удостоверьтесь, что события, порожденные участвующими объектами, несут все (и только все) данные, фактически используемые моделью Определителя. Также может случиться, что некоторые события не являются больше необходимыми. В примере с отелем Комната На Срок не является больше необходимой для создания Б-А2: Комната свободна.