Дж. Рамбо, М. Блаха - UML 2.0 - Объектно-ориентированное моделирование и разработка (1158633), страница 30
Текст из файла (страница 30)
В режиме отображения часы показывают часы и минуты, между которыми мигает символ двоеточия. Режим настройки состоит из двух подрежимов: настройка часов и настройка минут. Кнопка А позволяет выбрать режим. Каждый раз при ее нажатии происходит переход к очередному режиму в последовательности: отображение, установка часов, установка минут, отображение и т. д. Кнопка В позволяет увеличивать значение часов или минут на единицу при каждом нажатии в одном из режимов установки. Чтобы кнопка смогла породить новое событие, ее необходимо отпустить. Нарисуйте диаграмму состояний часов.
5.3. (4) На рис. У5.1 изображена неполная и упрощенная диаграмма состояний телефонного автоответчика. Автоответчик детектирует входящий звонок по первому же сигналу и отвечает заранее записанным сообщением. Когда сообщение завершается, автоответчик записывает сообщение звонящего. Когда звонящий вешает трубку, автоответчик тоже вешает трубку и отключается до следующего звонка.
Добавьте на диаграмму следующие надписи: са77 оегесгеЫ (обнаружен звонок), апяеег саЛ (ответ на звонок), р(ау аяпоивсеглелг (воспроизвести приветствие), гесоп1 техгайе (записать послание), са11ет Ьапяз ир (звонящий вешаег трубку), апвоипсетепг сотрМе (приветствие закончилось), 134 Глава 5 ° Моделирование состояний Рис. У5.1. Диаграмма октояний автоответчика 5.4. (7) Автоответчик из предыдущего примера срабатывал по первому же звонку. Измените диаграмму состояний таким образом, чтобы он срабатывал по пятому звонку.
Если кто-нибудь подойдет к телефону до пятого звонка, автоответчик не должен делать ничего. Следите за тем, чтобы не перепутать пять вызовов, когда человек снимает трубку с первого звонка, и пять звонков от одного вызова. 5.5. (3) В персональном компьютере контроллер диска обычно передает поток байтов с дисковода в буфер в памяти с помощью ведущего узла (центрального процессора или контроллера прямого доступа к памяти РМА).
На рис. У5.2 показана частичная упрощенная диаграмма состояний управления передачей данных. Контроллер передает ведущему узлу сигнал о каждом новом доступном байте. Данные должны быть считаны и сохранены для того, чтобы контроллер мог перейти к следующему байту. Когда контроллер обнаруживает, что данные были считаны, он сообшает об отсутствии данных до тех пор, пока не подготовит следующий байт. Если байт не будет считан до того, как контроллер подготовит следующий, контроллер выдает сигнал потери данных до тех пор, пока не получит сигнал сброса.
Добавьте на диаграмму надписи: гезес (сброс), (пс((саде г7ага м пег аоайаБ!е (индикация отсутствия данных), гпйсаге гтага аоаяаЫе (индикация наличия данных), г7аса геаа Ьу Ьозг (данные считаны ведущим узлом), пега ИаСа геах(у (готовы новые данные), гпйсаСе ааСа 1озг (индикация потери данных). Рмс. У5.2. Неполная диаграмма состояний протокола передачи данных 5.б. (5) На рис. У5.3 изображена неполная диаграмма состояний системы управления двигателем, которая часто применяется в бытовой технике. Независимая система управления всего устройства определяет, когда двигатель должен быть включен, и непрерывно подает сигнал ВКЛ на управляющий вход двигателя.
Когда на вход подается сигнал ВКЛ, система управления двигателя должна запустить двигатель и поддерживать его работу. Двигатель запускается по- Упражнения 135 дачей напряжения на пусковую и рабочую обмотки. Датчик, называемый стартовым реле, определяет момент запуска двигателя, после чего отключает пусковую обмотку. Напряжение остается только на рабочей обмотке. Когда сигнал ВКЛ пропадает, обе обмотки отключаются. Рис.
У5.3. Неполная диаграмма состояний системы управления двигателем Электродвигатели, применяемые в бытовой технике, могут перегреваться из-за чрезмерной нагрузки или невозможности запуска. Для защиты от перегрева в систему управления двигателем часто добавляется датчик превышения температуры. Если двигатель нагревается слишком сильно, система управления снимает напряжение с обеих обмоток и игнорирует сигнал ВКЛ до тех пор, пока двигатель не остынет и не будет нажата клавиша сброса. Добавьте на диаграмму следующие элементы.
Деятельность; подать напряжение на пусковую обмотку, подать напряжение на рабочую обмотку. События: двигатель перегрелся, подан сигнал ВКЛ, снят сигнал ВКЛ, двигатель работает, сброс. Условие: двигатель не перегрет. 5.7. (6) Система управления в упражнении 5.6 имела один непрерывно активный вход.
В другой широко используемой системе двигатель управляется двумя кнопками: пуск и стоп. Для запуска двигателя пользователь нажимает кнопку пуск. Двигатель продолжает вращаться и после ее отпускания. Для остановки двигателя пользователь нажимает кнопку стоп. Кнопка стоп имеет приоритет перед кнопкой пуск, поэтому при нажатии обеих кнопок двигатель не вращается. Если обе кнопки нажать и отпустить одновременно, результат будет зависеть от того, в каком порядке кнопки будут отпущены. Если кнопку стоп отпустить первой, двигатель запускается. В противном случае он не запускается.
Измените диаграмму состояний из упражнения 5.6, добавив на нее кнопки пуск и стоп. 5.8, (5) Подготовьте диаграмму состояний для выделения и перетаскивания объектов при помощи редактора диаграмм из упражнения 4.2. Курсор управляется двухкнопочной мышью. При нажатии левой кнопки в тот момент, когда курсор находится над объектом (прямоугольником или линией), объект выделяется (при этом выделение снимается с любого ранее выделенного объекта). Если левая кнопка нажимается в тот момент, когда курсор не находится над объектом, выделение снимается со всех ранее выделенных объектов. Перемещение мыши с нажатой левой кнопкой приводит к перетаскиванию выделенного объекта.
136 Глава 5 ° Моделирование состояний СорумасЫпе ОиЮ/рарег рарегАииег/ рарегТгзуВесотезЕтр!у АНО МОТ з//СоргезМег/е рарегра!ЛС/еати МаЫпцСор1ез Рарегйат ио ! рпп1Сор1ез г/о ! цазьииат/пцмцм рзреграгпВесотезВ!осаеи аДСор/езМаг/е з!аиргеззе!/ розге/гите//Оп ! питСор!ез:=1, !зли1оСопиаз1:=ТЙОЕ, з/ге:=поппе/ ! кета! ууагпйпд г/о ! !пгета/тез1/пд, аазьйеэиус/цм !псгетеп! ! питСор/ее++ йеаау епоу ! 1итйеаиу ЫцпЮп г/есттеп! ! ]питСор!ез>1] ! питсор/ез- ропе/Тите//О/Г ! 1игпйеаиумцьЮФ слзпдеСопеаз! ]НОТ 1зАигосоп1тз1] ! соп1газ1:=пепиа/ие спапдеЗйе ! з1хе:=пепл/а/ие !одд/ели!оСоп!тз! ! 1здигоСоп1газв=НОТ 'ади/оСоп/гзз1 Рнс.
У5.4. Диаграмма состояний копировального аппарата 5.9. (6) Расширьте диаграмму состояний из упражнения 5.8. Если пользователь щелкает левой кнопкой мыши на объекте при нажатой клавише 5Н]РТ, обьект добавляется к множеству вьщеленных объектов. Перемещение мыши при нажатой левой кнопке приводит к перетаскиванию всех выделенных объектов.
5.10. (5) На рис. У5.4 приведена диаграмма состояний копировального аппарата. В начальном состоянии копировальный аппарат выключен. Включение питания переводит аппарат в основное состояние: одна копия, автоматическая настройка контраста, нормальный размер. В процессе прогрева аппарат мигает индикатором готовности. Когда самопроверка автомата завершается, индикатор готовности перестает мигать и начинает гореть непрерывно. После этого автомат считается готовым к работе. Оператор может изменить любой параметр, пока автомат находится в режиме готовности к работе. Оператор может увеличить или уменьшить количество копий, их размер, переключаться между автоматической и ручной настройкой контраста, а также изменять контраст в том случае, если выбран ручной режим его настройки.
После установки нужных значений параметров оператор может нажать кнопку ПУСК, после чего аппарат начнет копирование. Обычно копирование продолжается до тех пор, пока не будет сделано необходимое количество копий. Исключительные ситуации связаны с застреванием бумаги или ее отсутствием.
Когда бумага застревает в аппарате, оператор должен удалить затор, и аппарат сможет продолжить копирование. Добавление новой бумаги позволяет аппарату продолжить работу после остановки из-за отсутствия бумаги. Упражнения 137 Расширьте диаграмму, добавив на нее следующие моменты.
Копировальный аппарат работает не совсем так, как положено: после удаления затора оператор должен выключить аппарат и снова включить его, чтобы он заработал. Если аппарат отключается без удаления затора, затор остается. 5Д!. (7) Обшаривая старый замок, вы с другом нашли книжный шкаф, за которым, судя по всему, открывается вход в секретный коридор. Пока вы осматривали шкаф, ваш друг вынул свечку из подсвечника и обнаружил, что этот подсвечник управлял входом. Шкаф повернулся на половину оборота, подтолкнув вас и отделив вас от друга. Друг вставил свечу обратно. Шкаф повернулся на полный оборот, но вы остались за ним. Друг вынул свечу.