Моделирования uml
Download 1.84 Mb. Pdf ko'rish
|
ivanov novikov unificirovannii jazik modelirovanija uml 2011
- Bu sahifa navigatsiya:
- Область прерывания
1
2 do/Bla-bla-bla Рис. 4.27. Специальные обозначения для отправки и приема сигналов 185 4.3.6. Прерывания и исключения Прерывания и исключения — это примеры давно и хорошо известных, можно сказать базовых, механизмов, применяемых в программировании. Начнем с прерываний. В UML 2 введена явным образом конструкция, которая называется область прерывания. Область прерывания (interruptible activity region) — это структурированный узел (рамка) на диаграмме деятельности, внутри которого возможно прерывание обычного порядка выполнения действий при возникновении определенного события. Синтаксически область прерывания изображается в виде пунктирной рамки, ограничивающей некоторый фрагмент графа деятельности. Прерывающие события изображаются в виде "флажка" приема сигнала, от которого проводится стрелка-"молния" (interruptible activity edge) к некоторой внешней деятельности — обработчику прерывания (interrupt handler). Флажок должен находиться обязательно внутри области прерывания, чтобы прерывание не спутать с исключением, которое имеет похожую нотацию. 27 Семантически область прерывания означает следующее. Если при выполнении фрагмента графа деятельности в области прерывания произойдет указанное прерывающее событие, то управление передается обработчику прерывания. Возобновить прерванный фрагмент невозможно. 28 На рис. 4.28 мы привели фактически тот же пример, что и на рис. 2.10 и рис. 2.11. Прерывающим событием является событие 27 Флажок исключения располагается за границей области, которая генерирует исключение 28 Стандарт хранит молчание по поводу того, позволяет ли обработчик прерывания сохранить контекст и освободить ресурсы прерываемому процессу. Реальные системы обработки прерываний в операционных системах, как правило, это делают. 186 Cancel (1), которое может произойти в любой момент, а обработчиком прерываний — соответствующее действие Cancel hiring (2). Рис. 4.28. Область прерывания Обратимся теперь к исключениям. В UML 1 исключения трактуются как частный случай сигналов, что хотя и допустимо, но не очень удобно. В UML 2 для моделирования исключений введена специальная конструкция. Распространение исключения. Для действия или иного узла графа деятельности может быть указано, какие исключения этот узел может генерировать. Кроме того, для узла указываются обработчики исключений, которые с ним связаны. Работает это следующим образом. Допустим, произошло исключение. Если с узлом, в котором произошло исключение, ассоциирован обработчик этого исключения, то обработчик выполняется и на этом обработка заканчивается. Если же нет ассоциированного обработчика, то исключение передается в 187 следующий объемлющий по иерархии вложенности узел и обработчик ищется там, и так далее. Только если исключение передано на самый верхний уровень деятельности, так и не будучи обработанным, то выполнение деятельности прекращается. Иерархия исключений. Исключения не являются классификаторами и не могут образовывать иерархии обобщения. Однако моделировать исключения можно с помощью объектов определенного типа и именно эти типы могут образовывать иерархии. Обработчик исключения связан с определенным типом исключения и может обрабатывать также все его специализации. Таким образом, типы исключений можно дифференцировать очень детально, и это не потребует очень большого числа обработчиков. Параметры исключения. В описание типов исключений могут быть введены атрибуты, которые при генерировании исключения заполняются требуемыми значениями и позволяют передавать в обработчик столько информации, сколько нужно для детальной и корректной обработки. Сохранение выходных контактов. Когда возникает исключение, выполнение текущего действия прерывается без генерации выходных значений. Выходные контакты обработчика исключения должны в точности совпадать по числу и типам с выходными контактами защищаемого узла, и когда обработка исключения заканчивается, то выходные значения обработчика исключения подставляются вместо выходных значений деятельности, сгенерировавшей исключения и выполнение программы может продолжиться обычным образом, "как будто ничего и не было". Нотация для исключений следующая. Чтобы показать, что некоторый узел может генерировать исключения, у этого узла определяется выходной контакт с типом исключения, возле которого рисуется маленький треугольник. Чтобы показать, что некоторый узел имеет обработчик исключения, от защищаемого узла рисуется стрелка-"молния" к 188 входному контакту узла-обработчика, причем типом этого контакта должен быть тип исключения. Обратимся еще раз к примеру про удаление подразделения, и в качестве примера (рис. 4.29) рассмотрим диаграмму для деятельности deletePos() . Рис. 4.29. Диаграмма деятельности deletePos Все что требуется теперь сделать — связать исключение с его обработчиком, что мы и сделали на рис. 4.30 с использование двух разных нотаций. |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling