Главная » Просмотр файлов » Гради Буч - Объектно-ориентированный анализ и проектирование с примерами приложений на С++

Гради Буч - Объектно-ориентированный анализ и проектирование с примерами приложений на С++ (1158635), страница 47

Файл №1158635 Гради Буч - Объектно-ориентированный анализ и проектирование с примерами приложений на С++ (Гради Буч - Объектно-ориентированный анализ и проектирование с примерами приложений на С++) 47 страницаГради Буч - Объектно-ориентированный анализ и проектирование с примерами приложений на С++ (1158635) страница 472019-09-18СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 47)

Наконец, можно определить событие просто как операцию, такуюкак GardeningPlan:: execute (). Это похоже на подход, которыйтрактует события как имена, но в отличие от него здесь не требуется явногодиспетчера событий.Для нашего метода несущественно, какая из этих стратегий выбранадля разработки, если она последовательно проводится во всей системе.Обычно в замечаниях указывается, какая стратегия использована для данногоконкретного автомата.Действие можно записывать, используя синтаксис, показанный вследующих примерах:•heater.startUp() действиепроизошло событие•DeviceFailureначать некоторую деятельность•start Heating•stop Heatingпрекратить деятельность.Имена операций или событий должны быть уникальны в областивидимости диаграммы; там, где необходимо, они могут бытьквалифицированы соответствующими именами классов или объектов.

Вслучае начала или прекращения некоторой деятельности, она может бытьпредставлена операцией (такой, как Actuator::shutDown ()) илисимволическим именем (для событий). Когда деятельность соответствуетнекоторой функции системы, такой, как harvest crop (сбор урожая), мыобычно пользуемся символическими именами.На каждой диаграмме состояний и переходов должно присутствоватьровно одно стартовое состояние; оно обозначается немаркированнымпереходом в него из специального значка, изображаемого в виде закрашенногокружка. Иногда бывает нужно указать также конечное состояние (обычноавтомат, ассоциированный с классом или системой в целом, никогда недостигает конечного состояния; этот автомат просто перестает существоватьпосле того, как содержащий его объект уничтожается).

Мы обозначаемконечное состояние, рисуя немаркированный переход от него к специальномузначку, изображаемому как кружок с закрашенной серединой.Рис. 5-20. Диаграмма состояний и переходов для контроллера тепличнойсреды (EnvironmentalController)Пример. До сих пор вводились значки, описывающие существенныеэлементы диаграмм состояний и переходов. В совокупности онипредоставляют разработчику систему обозначений, достаточную длямоделирования простого конечного плоского автомата, пригодного дляописания приложений с ограниченным числом состояний. Системы, имеющиемного состояний или обладающие сильно запутанным событийнымповедением, которое описывается переходами по условию или в результатепредыдущих состояний, требуют для построения диаграмм переходов болеесложных понятий.На рис.

5-20 показан пример использования существенныхобозначений. Пример опять описывает гидропонную систему. Мы видимдиаграмму состояний и переходов для класса EnvironmentalController,впервые введенного на рис. 5-5.На этой диаграмме все события представляются символическимиименами. Мы видим, что все объекты этого класса начинают свою жизнь вначальном состоянии Idle (ожидание); затем они изменяют свое состояние пособытию Define climate, для которого не предполагается явных действий(считается, что это событие, то есть ввод климатического задания, происходиттолько в дневное время). Дальше динамическое поведение этого классасостоит в переключении между со-стояниями Daytime и Nighttime (день иночь); оно определяется событиями Sunrise и Sunset (восход и закат)соответственно; с этими событиями связаны действия по изменениюосвещения.

В обоих состояниях событие понижения или повышениятемпературы в теплице вызывает обратную реакцию (операцияadjustTemperature(), которая является локальной в этом классе). Мывозвращаемся в состояние Idle, когда поступит событие Terminateclimate, то есть будет отменено климатическое задание.Дополнительные понятияЭлементы диаграмм состояний и переходов, которые мы только чтоописали, недостаточны для многих случаев сложных систем. По этой причинемы расширим наши обозначения, включив семантику карт состояний,предложенную Харелом.Рис. 5-21.

Действия, условные переходы и вложенные состоянияДействия, ассоциированные с состояниями и условные переходы.Как показано на рис. 5-18, с состояниями могут быть ассоциированы действия.В частности, можно назначить выполнение некоторого действия на входе иливыходе из состояния, при этом используется синтаксис следующих примеров:•entry start Alarmзапуск процедуры при входе в состояниевызов операции при выходе из•exit shutDown()состояния.Как и для переходов, можно назначить любое действие послеключевых слов entry и exit(вход и выход).Деятельность можно ассоциировать с состоянием, используясинтаксис следующего примера:•do Coolingв данном состоянии заниматься этойдеятельностью.Этот синтаксис служит сокращенной записью явных указаний:"Начать деятельность при входе в состояние и окончить при выходе из него".На рис.

5-21 мы видим пример использования этих обозначений. Привходе в состояние Heating (нагревание) вызывается операцияHeater::startUp(), а при выходе - операция Heater::shutDown(), то естьпроисходит запуск и остановка нагревания. При входе и выходе из состоянияFailure (сбой), соответственно вызывается и прекращается сигнал тревоги(Alarm).Рассмотрим также переход из состояния Idle в состояние Heating.Он совершается, если температура понизилась, но только в случае, еслипрошло больше пяти минут после того, как последний раз был выключеннагреватель. Это пример условного (или защищенного) перехода; условиепредставляется логическим выражением в скобках.Вообще, каждый переход может быть ассоциирован либо с событием,либо с событием и условием.

Допускаются и "переходы без события". В этомслучае переход совершается сразу после завершения действия, связанного ссостоянием, причем выполняется и действие, связанное с выходом из этогосостояния. Если переход условный, он состоится только в случае, еслиусловие выполнено.Имеет значение порядок выполнения условного перехода. Пустьимеется состояние S, из которого при событии Е совершается переход T сусловием C и действием А. Переход T осуществляется в такойпоследовательности:•Происходит событие Е.•Проверяется условие C.•Если C удовлетворено, то выполняется переход T и действие А.Это означает, что если условие C не выполнено, то переход не можетбыть осуществлен до тех пор, пока событие Е не произойдет еще раз и условиеC не будет проверено еще раз.

Побочные эффекты при вычислении условияили выполнении действия, назначенного на выход, не могут отменитьпереход. Например, предположим, что произошло событие Е, условие Cвыполнилось, но действие А, выполняемое при выходе из состояния S,изменило ситуацию так, что условие C перестало выполняться: переход T всеравно состоялся.Мы можем использовать еще и следующий синтаксис:•in Coolingвыражение для текущего состояния.Здесь используется имя состояния (которое может бытьквалифицированным).

Выражение истинно тогда и только тогда, когдасистема находится в указанном состоянии. Такие условия особенно полезны,когда некоторому внешнему состоянию нужно запустить переход по условию,связанному с некоторым вложенным состоянием.Можно использовать в условии и выражение, налагающее ограниченияпо времени:•timeout (Heat ing, 30) выражение ограничения по времени.Это условие выполняется, если система более 30 секунд находилась всостоянии Heating и остается в нем в момент проверки. Этот тип условияупотребляется в системах реального времени для "переходов без события", таккак защищает систему от зависания на долгое время в одном состоянии. Этовыражение можно использовать для указания нижней границы временинахождения в данном состоянии.

Если приложить временное ограничение ккаждому переходу с событием, выводящим из данного состояния, это будетравнозначно требованию, что система находится в каждом состоянии какминимум время, указанное в ограничении.12Что случится, если некое событие произойдет, а перейти в другоесостояние нельзя либо потому, что не существует перехода для данногособытия, либо не выполняется условие перехода? По умолчанию это надосчитать ошибкой: игнорирование событий обычно является признакомнеполного анализа задачи.

Вообще, для каждого состояния нужнодокументировать события, которые оно намеренно игнорирует.Вложенные состояния. Возможность вложения состояний друг вдруга придает глубину диаграммам переходов; эта ключевая особенность картсостояний Харела предотвращает комбинаторный взрыв в структуресостояний и переходов, который часто случается в сложных системах.На рис. 5-21 показаны внутренние детали состояния Cooling, то естьвложенные в него состояния; для простоты мы опустили все его действия,включая действия при входе и выходе.12Харел предложил "обобщенную завитушку" для обозначения двухсторонних границпо времени, но мы не будем обсуждать здесь его обобщения, так как условияисчерпания времени достаточно выразительны.Объемлющие состояния, такие, как Cooling, называютсясуперсостояниями, а вложенные, такие, как Running, - подсостояниями.Вложенность может достигать любой глубины, то есть подсостояние можетбыть суперсостоянием для вложенных состояний более низкого уровня.Данное суперсостояние Cooling содержит три подсостояния.

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6455
Авторов
на СтудИзбе
305
Средний доход
с одного платного файла
Обучение Подробнее