7.2. Переходы
7.2. Переходы
Переход как элемент языка UML был рассмотрен в главе 6. При построении диаграммы деятельности используются только нетриггерные переходы, т. е. такие, которые срабатывают сразу после завершения деятельности или выполнения соответствующего действия. Этот переход переводит деятельность в последующее состояние сразу, как только закончится действие в предыдущем состоянии. На диаграмме такой переход изображается сплошной линией со стрелкой.
Если из состояния действия выходит единственный переход, то он может быть никак не помечен. Если же таких переходов несколько, то сработать может только один из них. Именно в этом случае для каждого из таких переходов должно быть явно записано сторожевое условие в прямых скобках (см. главу 6). При этом для всех выходящих из некоторого состояния переходов должно выполняться требование истинности только одного из них. Подобный случай встречается тогда, когда последовательно выполняемая деятельность должна разделиться на альтернативные ветви в зависимости от значения некоторого промежуточного результата. Такая ситуация получила название ветвления, а для ее обозначения применяется специальный символ.
Графически ветвление на диаграмме деятельности обозначается небольшим ромбом, внутри которого нет никакого текста (рис. 7.3). В этот ромб может входить только одна стрелка от того состояния действия, после выполнения которого поток управления должен быть продолжен по одной из взаимно исключающих ветвей. Принято входящую стрелку присоединять к верхней или левой вершине символа ветвления. Выходящих стрелок может быть две или более, но для каждой из них явно указывается соответствующее сторожевое условие в форме булевского выражения.
В качестве примера рассмотрим фрагмент известного алгоритма нахождения корней квадратного уравнения. В общем случае после приведения уравнения второй степени к каноническому виду: а*х*х + Ь*х + с = 0 необходимо вычислить его дискриминант. Причем, в случае отрицательного дискриминанта уравнение не имеет решения на множестве действительных чисел, и дальнейшие вычисления должны быть прекращены. При неотрицательном дискриминанте уравнение имеет решение, корни которого могут быть получены на основе конкретной расчетной формулы. .
Графически фрагмент процедуры вычисления корней квадратного уравнения может быть представлен в виде диаграммы деятельности с тремя состояниями действия и ветвлением (рис. 7.3). Каждый из переходов, выходящих из состояния «Вычислить дискриминант», имеет сторожевое условие, определяющее единственную ветвь, по которой может быть продолжен процесс вычисления корней в зависимости от знака дискриминанта. Очевидно, что в случае его отрицательности, мы сразу попадаем в конечное состояние, тем самым завершая выполнение алгоритма в целом.
Примечание 58
Рис. 7.3. Фрагмент диаграммы деятельности для алгоритма нахождения корней квадратного уравнения
В рассмотренном примере, как видно из рис. 7.3, выполняемые действия соединяются в конечном состоянии. Однако это вовсе не является обязательным. Можно изобразить еще один символ ветвления, который будет иметь несколько входящих переходов и один выходящий.
В следующем примере (рис. 7.4) рассчитывается общая стоимость товаров, покупаемых по кредитной карточке в супермаркете. Если эта стоимость превышает $50, то выполняется аутентификация личности владельца карточки. В случае положительной проверки (карточка действительная) или если стоимость товаров не превышает $50, происходит снятие суммы со счета и оплата стоимости товаров. При отрицательном результате (карточка недействительная) оплаты не происходит, и товар остается у продавца.
Примечание 59
Рис. 7.4. Различные варианты ветвлений на диаграмме деятельности
Один из наиболее значимых недостатков обычных блок-схем или структурных схем алгоритмов связан с проблемой изображения параллельных ветвей отдельных вычислений. Поскольку распараллеливание вычислений существенно повышает общее быстродействие программных систем, необходимы графические примитивы для представления параллельных процессов. В языке UML для этой цели используется специальный символ для разделения и слияния параллельных вычислений или потоков управления. Таким символом является прямая черточка, аналогично обозначению перехода в формализме сетей Петри.
Как правило, такая черточка изображается отрезком горизонтальной линии, толщина которой несколько шире основных сплошных линий диаграммы деятельности. При этом разделение (concurrent fork) имеет один входящий переход и несколько выходящих (рис. 7.5, а). Слияние (concurrent join), наоборот, имеет несколько входящих переходов и один выходящий (рис. 7.5, б).
Для иллюстрации особенностей параллельных процессов выполнения действий рассмотрим ставший уже классическим пример с приготовлением напитка. Достоинство этого примера состоит в том, что он практически не требует никаких дополнительных пояснений в силу своей очевидности (рис. 7.6).
Рис. 7.5. Графическое изображение разделения и слияния параллельных потоков управления
Рис. 7.6. Диаграмма деятельности для примера с приготовлением напитка
Примечание 60
Таким образом, диаграмма деятельности есть не что иное, как специальный случай диаграммы состояний, в которой все или большинство состояний являются действиями или состояниями под-деятельности. А все или большинство переходов являются нетригтерными переходами, которые срабатывают по завершении действий или под-деятельностей в состояниях-источниках.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Переходы назад – вперед в браузере
Переходы назад – вперед в браузере В браузере для перехода на предыдущую или следующую страницу совсем не обязательно щелкать по соответствующим кнопкам на панели инструментов программы. Можно просто зажать Shift и покрутить колесико мыши вперед или
Что такое CSS-переходы
Что такое CSS-переходы Мне нравится воспринимать CSS-переходы как масло, сглаживающее изменения значений в стилевых таблицах, вызванные действием пользователя: когда он наводит курсор на объект, нажимает на него или выделяет его. В отличие от настоящего масла переходы не
6.6. Сложные переходы
6.6. Сложные переходы Рассмотренное выше понятие перехода является вполне достаточным для большинства типичных расчетно-вычислительных задач. Однако современные программные системы могут реализовывать очень сложную логику поведения отдельных своих компонентов. Может
Переходы между параллельными состояниями
Переходы между параллельными состояниями В отдельных случаях переход может иметь несколько состояний-источников и несколько целевых состояний. Такой переход получил специальное название – параллельный переход. Введение в рассмотрение параллельного перехода
Переходы между составными состояниями
Переходы между составными состояниями Переход, стрелка которого соединена с границей некоторого составного состояния, обозначает переход в составное состояние (переход b на рис. 6.12). Он эквивалентен переходу в начальное состояние каждого из подавтоматов (возможно,
7.2. Переходы
7.2. Переходы Переход как элемент языка UML был рассмотрен в главе 6. При построении диаграммы деятельности используются только нетриггерные переходы, т. е. такие, которые срабатывают сразу после завершения деятельности или выполнения соответствующего действия. Этот
2.2.2.3 Переходы из состояния в состояние
2.2.2.3 Переходы из состояния в состояние Состояния процесса, перечисленные выше, дают статическое представление о процессе, однако процессы непрерывно переходят из состояния в состояние в соответствии с определенными правилами. Диаграмма переходов представляет собой
6.5. Действия и переходы
6.5. Действия и переходы Действия и переходы сообщают правилу, что необходимо выполнить, если пакет соотвествует заданному критерию. Чаще всего употребляются действия ACCEPT и DROP. Однако, давайте кратко рассмотрим понятие переходов.Описание переходов в правилах выглядит
Переходы по ссылкам
Переходы по ссылкам Внешние ссылки – не только существенный фактор продвижения, но и источник трафика, подчас немалого. В погоне за высокими позициями об этом почему-то забывают, а зря. В конце концов, именно ссылка, по которой есть переходы, является лучшей рекомендацией
Переходы по запросам
Переходы по запросам Таблица, показанная на рис. 7.3, даст опытному специалисту массу полезной информации.? Анализируя трафик и позиции страниц, которые этот трафик обеспечивают, мы можем обнаружить потенциал для быстрого и сравнительно недорогого продвижения. Если
Переходы в программе
Переходы в программе Ключевые слова: break, continue, gotoОбщие замечания: Эти три команды вызывают переход от одного оператора программы к другому, расположенному в ином месте (в теле программы).
Вкладка Переходы
Вкладка Переходы Вкладка Переходы предоставляет доступ к одноименным эффектам, разумное использование которых может придать даже выполненному в домашних условиях фильму черты профессионального видео. Переходы вставляются между двумя соседними сценами для их
Глава 5 Переходы
Глава 5 Переходы • Добавление и удаление• Перемещение и копирование• Настройка длительности перехода• Переходы и звуковая дорожка• Переходы и фоновый просчетВ подразд. «Вкладка Переходы» разд. «Окно Альбома» гл. 3 мы познакомились с переходами, узнали, каких видов
Переходы и звуковая дорожка
Переходы и звуковая дорожка Несмотря на то что редактирование звука мы еще не рассматривали, нужно упомянуть о том, как использование перехода отражается на звуковой дорожке. Если внимательно посмотреть на звуковые дорожки сцен на рисунках этой главы, можно заметить,
Переходы и фоновый просчет
Переходы и фоновый просчет Pinnacle Studio поддерживает фоновый просчет эффектов, что зачастую позволяет получить более качественное видео при предварительном просмотре проекта, а также ускорить вывод фильма в конце работы над проектом.Что же такое фоновый просчет? Проще