Моделирования uml
Download 1.84 Mb. Pdf ko'rish
|
ivanov novikov unificirovannii jazik modelirovanija uml 2011
- Bu sahifa navigatsiya:
- Событие вызова
разделе, позволяют задавать структуру автомата. Но основная семантическая нагрузка при описании поведения падает на переходы различных типов. Помимо структурных составляющих — исходного и целевого состояний — переход может быть нагружен событием перехода, сторожевым условием и действиями на переходе. В UML используются четыре типа событий: - событие вызова, - событие сигнала, - событие таймера, - событие изменения. Событие вызова (call event) — это событие, возникающее при вызове метода класса. Если событие вызова используется как событие перехода в машине состояний, описывающей поведение класса, то класс должен иметь соответствующую операцию. Событие вызова — наиболее часто используемый тип событий перехода. В большей части рассмотренных примеров в качестве событий перехода использовались именно события вызова. Поскольку событие вызова — это вызов метода, то оно может иметь аргументы, как всякий вызов метода. Значения аргументов могут использоваться в действиях перехода. Если метод возвращает значение, то этот факт отмечается с помощью действия возврата в последовательности действий данного перехода. Проиллюстрируем вышесказанное на примере информационной системы отдела кадров. Определим в классах Person и Position операции, приведенные на рис. 4.13. Операция hasPosition() класса Person проверяет, занимает ли сотрудник какую-нибудь должность, а операция assign() переводит сотрудника на новую должность newPos и возвращает значение true , если перевод успешно произведен. 157 Рис. 4.13. Операции, определенные в классах Person и Position Операция isFree() класса Position проверяет, свободна ли должность, и операция occupy() позволяет назначить сотрудника на должность и в случае успешного завершения возвращает значение true . Тогда типичное поведение операции assign() можно описать диаграммой состояний, приведенной на рис. 4.14. Employed Unemployed fire() hire() assign(newPos)[newPos.isFree()]/ newPos.occupy(self),return(true) Applicant hire() 1 Рис. 4.14. Событие вызова На этом рисунке наибольшее внимание заслуживает переход из состояния Employed в себя. Давайте разбираться. По событию 158 assign() данный переход возбуждается, но для того, чтобы этот переход завершился должно быть выполнено условие newPos.isFree() . Если должность свободна ( newPos.isFree() вернул true ), то тогда осуществляется вызов метода newPos.occupy(self), а вызов метода assign(newPos) возвращает true (1 на рис. 4.14). Download 1.84 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling