Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » Дж. Арлоу, А. Нейштадт - UML 2 и Унифицированный процесс - Практический объектно-ориентированный анализ и проектирование

Дж. Арлоу, А. Нейштадт - UML 2 и Унифицированный процесс - Практический объектно-ориентированный анализ и проектирование, страница 88

PDF-файл Дж. Арлоу, А. Нейштадт - UML 2 и Унифицированный процесс - Практический объектно-ориентированный анализ и проектирование, страница 88 Объектно-ориентированный анализ и проектирование (53090): Книга - 7 семестрДж. Арлоу, А. Нейштадт - UML 2 и Унифицированный процесс - Практический объектно-ориентированный анализ и проектирование: Объектно-ориентированный ан2019-09-18СтудИзба

Описание файла

PDF-файл из архива "Дж. Арлоу, А. Нейштадт - UML 2 и Унифицированный процесс - Практический объектно-ориентированный анализ и проектирование", который расположен в категории "". Всё это находится в предмете "объектно-ориентированный анализ и проектирование" из 7 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст 88 страницы из PDF

Событиямер, на рис. 21.9 показан поведенческий автомат простого класса BankLoan (банковская ссуда). При получении события acceptPayment (принятплатеж) объект BankLoan переходит из состояния Unpaid (не оплачен)в одно из трех состояний – FullyPaid (полностью оплачен), OverPaid (переплачен) или PartiallyPaid (частично оплачен) – в зависимости от соотношения объема платежа (payment) и неоплаченного баланса BankLoan.Условия, налагаемые на исходящие переходы псевдосостояния выбора, должны быть взаимоисключающими, чтобы гарантировать в любой момент времени срабатывание только одного из них.21.7. СобытияСобытия инициируют переходы.UML определяет событие как «описание заслуживающего вниманияпроисшествия, занимающего определенное положение во времении пространстве».

События инициируют переходы в автоматах. Событиямогут быть указаны вне состояний на переходах, как на рис. 21.10, иливнутри состояний, как на рис. 21.11.OffturnOffturnOnсобытиеOnРис. 21.10. События указаны вне состояний на переходахСуществует четыре семантически различных типа событий:• событие вызова;• сигнал;• событие изменения;• событие времени.21.7.1. События вызоваСобытие вызова (call event) – это запрос на вызов конкретной операцииэкземпляра контекстного класса.Событие вызова – это запрос на вызов конкретной операции.Сигнатура события вызова должна быть аналогичной сигнатуре операции контекстного класса автомата.

Получение события вызова – это484Глава 21. Конечные автоматыSimpleBankAccountвнутреннее событие вызовадействиеclose()InCreditвнешнее событие вызоваdeposit(m)/ balance = balance + mусловиеwithdraw(m)[balance < m]withdraw(m)[balance >= m]RejectingWithdrawalAcceptingWithdrawalentry/ logRejectedWithdrawal()entry/ balance = balance ! mвходное действиеРис. 21.11. Внутренние и внешние события вызоватриггер на выполнение операции. Таким образом, событие вызова –вероятно, самый простой тип событий.В примере на рис.

21.11 показан фрагмент конечного автомата классаSimpleBankAccount (простой банковский счет). На данный класс наложены следующие ограничения:•баланс счетов всегда должен оставаться большим или равным нулю;•запрос на снятие денег будет отклонен, если запрашиваемая суммапревышает баланс.На рисунке показаны внутренние и внешние события вызова. Они соответствуют операциям класса SimpleBankAccount.Для события вызова может быть задана последовательность действий,в которой действия перечисляются через точку с запятой. Они определяют семантику операции и могут использовать атрибуты и операцииконтекстного класса.

Если у операции есть возвращаемый тип, событие вызова имеет возвращаемое значение этого типа.21.7.2. СигналыСигнал – это однонаправленная асинхронная связь между объектами.Сигнал – это пакет информации, асинхронно передаваемый междуобъектами. Сигнал моделируется как отмеченный стереотипом класс,содержащий в своих атрибутах информацию, которая должна быть передана (рис. 21.12). У сигнала обычно нет операций, потому что онпредназначен только для передачи информации.48521.7.

События«signal»RejectedWithdrawaldate : DateaccountNumber : StringrequestedAmount : doubleavailableBalance : doubleРис. 21.12. Сигнал – это класс, отмеченный стереотипом «signal»SimpleBankAccountclose()InCreditdeposit(m)/ balance = balance + mwithdraw(m)[balance < m]withdraw(m)[balance >= m]RejectingWithdrawalAcceptingWithdrawalentry/ logRejectedWithdrawal()entry/ balance = balance ! mпосылка сигналаRejectedWithdrawalРис.

21.13. Посылка сигналаНа рис. 21.13 представлен скорректированный конечный автомат дляSimpleBankAccount. Теперь при отклонении запроса на снятие денег сосчета посылается сигнал. Передача сигнала обозначается выпуклымпятиугольником, внутри которого указывается имя сигнала. Такой жесинтаксис используется на диаграммах деятельностей (см. раздел 15.6,где сигналы обсуждаются более подробно).Прием сигнала обозначается вогнутым пятиугольником, как показаново фрагменте конечного автомата на рис.

21.14. В нем указана операция контекстного класса, которая принимает сигнал как параметр.прием сигналаprocessRejectedWithdrawal( a : RejectedWithdrawal )контекст: класс BankРис. 21.14. Прием сигналаПозвонить клиенту486Глава 21. Конечные автоматыПрием сигнала также можно показать на внешних или внутренних переходах с помощью стандартной нотации имяСобытия/действие, котораяобсуждалась в разделах 21.5.1 и 21.6.21.7.3. События измененияСобытия изменения имеют место, когда значение логического выражения меняется с false на true.Событие изменения задается в виде логического выражения, как показано на рис.

21.15. Ассоциированное с событием действие выполняется, когда логическое выражение меняет значение с false на true. Всезначения логического выражения должны быть константами, глобальными переменными или атрибутами и операциями контекстногокласса. С точки зрения реализации событие изменения означает постоянную проверку логического условия при нахождении в определенном состоянии.На рис. 21.15 конечный автомат SimpleBankAccount был изменен такимобразом, что менеджер получает уведомление, если баланс счета становится равным или большим 5000. Это уведомление необходимо длятого, чтобы менеджер мог предупредить клиента о других вариантахвклада.События изменения являются срабатывающими по положительномуфронту (positive edge triggered).

Это означает, что они инициируютсяпри каждом изменении значения логического выражения с false на true.SimpleBankAccountclose()InCreditdeposit(m)/ balance = balance + mbalance >= 5000 / notifyManager()логическоевыражениеwithdraw(m)[balance < m]withdraw(m)[balance >= m]RejectingWithdrawalAcceptingWithdrawalentry/ logRejectedWithdrawal()entry/ balance = balance ! mRejectedWithdrawalРис.

21.15. Событие изменения в виде логического выражения21.8. Что мы узнали487Чтобы событие изменения было инициировано, логическое выражениедолжно вернуться к значению false, а затем снова перейти к true.Срабатывание по положительному фронту – это именно то поведение,которое требуется для класса SimpleBankAccount.

Действие notifyManager()(уведомить менеджера) будет инициироваться, только когда баланссчета достигнет 5000 или превысит эту сумму. Понятно, что если баланс будет колебаться вокруг 5000, менеджер получит множество уведомлений. Мы предполагаем, что у менеджера есть некоторый бизнеспроцесс для обработки такой ситуации.21.7.4. События времениСобытия времени происходят в ответ на время.События времени обычно обозначаются ключевыми словами when (когда) и after (после). Ключевое слово when определяет конкретное время,когда событие инициируется; after определяет порог времени, после которого событие инициируется.

Например: when(date = 07/10/2005) и after(3 months).На диаграмме для каждого события времени обязательно должныбыть указаны единицы измерения времени (часы, дни, месяцы и т. д.).Все символы выражения должны быть константами, глобальными переменными или атрибутами и операциями контекстного класса.Пример на рис. 21.16 – это фрагмент автомата класса CreditAccount,имеющего ограниченные (несколько суровые) условия получения кредита. Как видите, если объект CreditAccount находится в состоянии Overdrawn (кредит превышен) в течение трех месяцев, он переходит в состояние Frozen (заморожен).Overdrawnafter( 3 months )Frozenконтекст: класс CreditAccountРис. 21.16. Фрагмент автомата класса CreditAccount с ограничением по времени21.8.

Что мы узналиВ этой главе обсуждалось построение простых конечных автоматов с помощью состояний, действий, деятельностей, событий и переходов. Мыузнали следующее:488Глава 21. Конечные автоматы••••••Конечные автоматы основаны на работе Харела.• Конечные автоматы моделируют динамическое поведение реактивного объекта.• Диаграммы состояний содержат единственный конечный автомат одного реактивного объекта.Реактивный объект обеспечивает контекст конечного автомата.• Реактивные объекты:• отвечают на внешние события;• могут генерировать внутренние события;• имеют четкий жизненный цикл, который может быть смоделирован как последовательность состояний, переходов и событий;• имеют текущее поведение, которое может зависеть от предыдущего.• Примеры реактивных объектов:• классы (самые распространенные);• прецеденты;• подсистемы;• целые системы.Существует два типа конечных автоматов:• поведенческие автоматы:• моделируют поведение контекстного классификатора;• состояния в поведенческих автоматах могут содержать нульили более действий и деятельностей;• протокольные автоматы:• моделируют протокол контекстного классификатора;• состояния в протокольных автоматах не имеют действийи деятельностей.Действия – мгновенные и непрерываемые части работы:• могут иметь место в состоянии и быть ассоциированными с внутренним переходом;• могут иметь место вне состояния и быть ассоциированнымис внешним переходом.Деятельности – части работы, которые занимают конечный промежуток времени и могут быть прерваны:• могут иметь место только в состоянии.Состояние – семантически значимое состояние объекта.• Состояние объекта определяется:• значениями атрибутов объекта;• отношениями с другими объектами;21.8.

Что мы узнали• деятельностями, осуществляемыми объектом.Синтаксис состояния:• входное действие – осуществляется немедленно при входев состояние;• выходное действие – осуществляется немедленно при выходеиз состояния;• внутренние переходы – обусловливаются событиями, недостаточно существенными для инициации перехода в новое состояние:• событие обрабатывается внутренним переходом в рамкахсостояния;• внутренняя деятельность – часть работы, которая занимаетконечный промежуток времени и может быть прервана.Переход – перемещение между двумя состояниями.• Синтаксис перехода:• событие – событие, инициирующее переход;• сторожевое условие – логическое выражение, которое должно выполниться, чтобы переход произошел;• действие – действие, которое происходит вместе с переходом;• переходное псевдосостояние – объединяет или разветвляетпереходы;• псевдосостояние выбора – направляет поток конечного автомата согласно наложенным условиям.Событие – чтото существенное, происходящее с реактивным объектом.

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