Срабатывание перехода по условию
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Если пешеходы переходят улицу достаточно редко, то автоматическое переключение светофора будет неоправданно часто прерывать движение автомобилей. В этом случае разумно установить специальную кнопку, при нажатии которой пешеходом, светофор автомобилей остановит на некоторое время движение автомашин. Для этого перетащите мышью элемент Кнопка с палитры Элементы управления на диаграмму класса активного объекта Model рядом с пешеходным светофором, рисунок 3.10. Назовите кнопку и ее метку: переход.

 

Рисунок 3.10 – остановка движения автомобилей

 

Определите действие при нажатии на кнопку так, чтобы устанавливался в значение true булевый параметр ожидание. Для этого нужно записать в поле Действие окна свойств этой кнопки команду: ожидание = true.

Логический параметр ожидание, конечно же, нужно ввести на диаграмме активного объекта Model с начальным значением false. Этот параметр будет определять, собирается ли пешеход перейти дорогу. Значение этого параметра будем переводить в false каждый раз, как только пешеходный светофор перейдет в состояние мигает. Для этого нужно записать в поле Действие при входе окна свойств состояния мигает стейтчарта для_пешеходов команду: ожидание = false.

Таким образом, при нажатии кнопки переход, стейтчарт автомобилей «узнает» об ожидающих на переходе пешеходах и переключится из состояния движение в состояние внимание и затем в состояние стоп движения автомобилей.

В случае если некий злоумышленник будет постоянно нажимать кнопку переход, это может полностью парализовать движение автомобилей. Для того чтобы этого не произошло, в стейтчарте Для_автомобилей сделайте иерархическим состояние движение, с двумя простыми состояниями непрерывное и обычное, как показано на рис. 3.11.

 

Рисунок 3.11 – состояние движения

 

В состоянии непрерывное автомобили будут двигаться до истечения таймаута 10 секунд, невзирая на состояние параметра ожидание, т.е. автомобилям будет гарантированно предоставлено некоторое время для движения, даже если кнопка переход будет всегда нажата. После истечения таймаута 10 секунд светофор перейдет в обычное состояние движения, которое может прерываться. Переход T из состояния обычное сработает, когда будет нажата кнопка переход, т.е. параметр ожидание будет истинен.

Если кнопка переход не нажата (т. е. параметр ожидание имеет значение false), автомобили будут продолжать движение до нажатия этой кнопки. Если нажать кнопку один или более раз, то параметр ожидание станет истинным и автомобильный светофор из состояния обычное перейдет в состояние внимание и затем остановит движение автомобилей.

Контрольные вопросы

1. Как передать сигнал от стейчарта СТ_1 стейчарту СТ_2?

2. В чем отличие элементов  от ?

3. Как в модели реализовано защита от частого нажатия кнопки ПЕРЕХОД?

4. Как изменить модель светофора с кнопкой таким образом, что бы моделировалось автоматическое нажатие кнопки ПЕРЕХОД в случайный момент времени в интервале от 5 секунд до 1 минуты?

5. По какому параметру можно перейти из одного состояния в другое?

6. Как изменить модель светофора с кнопкой таким образом, что бы пешеход видел, нажата уже кнопка или нет, например, с помощью надписи?

Дата: 2019-03-05, просмотров: 303.