Главная страница
Навигация по странице:

  • Диаграмма-состояние "Банковский счет"

  • Деятельность

  • Входное действие

  • Рассмотрим каждое из них в контексте примера банковской системы: Событие

  • Ограждающее условие

  • Посылаемое событие

  • Диаграммы состояний


    Скачать 42 Kb.
    НазваниеДиаграммы состояний
    Дата08.04.2023
    Размер42 Kb.
    Формат файлаdoc
    Имя файла3ac4bfa.doc
    ТипДокументы
    #1046182

    Диаграммы состояний

    Определяют все возможные состояния, в которых может находиться конкретный объект, а также процесс смены состояний объекта в результате наступления некоторых событий. Существует много форм диаграмм состояний не значительно отличающихся друг от друга семантикой.

    Диаграмма-состояние "Банковский счет"




    (1) - Снятие денег [отрицательный баланс]
    (2) - Вклад денег [положительный баланс]
    (3) - Клиент требует закрыть/сохранить дату закрытия
    (3) и (4) - Проверка баланса [отрицательный баланс в течение более 30 дней]

    В примере можно наблюдать процесс перехода счета из одного состояния в другое. Требование клиента называется "событием". Именно такие события и вызывают переход из одного состояния в другое. Если клиент снимает деньги со счета, он может перейти в состояние превышение кредита. Это происходит только в том случае, если банк по счету меньше нуля, что отражено условием "отрицательный баланс". Заключенное в квадратные скобки условие определяет, когда может произойти переход из одного состояния в другое.

    На диаграмме имеется 2 состояния: начальное и конечное. Начальное состояние выделено черной точкой, оно соответствует состоянию объекта, когда он только что был создан. Конечное состояние обозначается черной точкой в белом круге, оно соответствует состоянию объекта непосредственно перед его уничтожением. На диаграмме состояний может быть одно и только одно начальное состояние. В тоже время может быть столько конечных состояний, сколько необходимо, или их может не быть вообще.

    Когда объект находится в каком-то конкретном состоянии, могут выполняться различные процессы. В нашем примере при превышении кредита клиенту посылается соответствующее сообщение.

    Процессы, происходящие в этот момент, когда объект находится в определенном состоянии, называется "действием" (action). С состоянием можно связывать следующие данные: деятельность, входное действие, выходное действие и событие.

    Рассмотрим каждый из них в контексте диаграммы состояние для класса банковский счет:

    1. Деятельность - это поведение реализуемое объектом, пока он находится в данном состоянии. Например, когда счет находится в состоянии "закрыт" происходит возврат кредитной карточки пользователю.
      Деятельность - это прерываемое поведение, оно может выполняться до своего завершения, пока объект находится в данном состоянии или может быть прервано переходом объекта в другое состояние. Деятельность изображают внутри самого состояния. Ее обозначению должно предшествовать "do: "

    2. Входное действие - это поведение, которое выполняться, когда объект переходит в данное состояние.
      Как только счет в банке переходит в состояние превышения кредита, выполняется действие "временно заморозить счет" независимо от того, откуда объект перешел в это состояние. Т.е. данное действие осуществляется не после того как объект перешел в это состояние, а скорее как часть этого перехода. В отличии от деятельности входное действие рассматривается как непрерываемое. Входное действие также показывают внутри состояния. Его обозначению предшествует слово "entry: ".

    3. Выходное действие подобно входному, однако оно осуществляется как составная часть процессов выхода из данного состояния. В нашем примере при выходе объекта из состояния "превышение кредита" выполняется действие "разморозить счет", оно является частью процесса такого перехода. Как и входное, выходное действие является непрерываемым. Выходные действия изображаются внутри состояния. Его описанию предшествует слово "exit: ".

    Поведение объекта во время деятельности при входных и выходных действиях может включать отправку события другому объекту, например объект "банковский счет" может послать события объекту "устройство чтение карты". В этом случае описанию деятельности входного или выходного действия предшествует знак "^". Соответствующая строка на диаграмме выглядит так:

    Do: ^ цель.событие(аргументы)
    Здесь:
    Цель - это объект, получающий события
    Событие - это посылаемое сообщение
    Аргументы - это параметры посылаемого сообщения.

    Деятельность может также выполняться в результате получения объектом некоторого события. Например: объект "банковский счет" может быть в состоянии "открыт". При получении некоторого сообщения выполняется определенная деятельность.

    Переход - это перемещение объекта из одного состояния в другое. На диаграмме все переходы изображают в виде стрелки, начинаются на первоначальном состоянии и заканчиваются в последующем. Эти переходы могут быть рефлексивными - объект может перейти в тоже состояние, в котором он находится в настоящий момент. Рефлексивные переходы изображают в виде стрелки начинающейся и заканчивающейся на одном и том же состоянии. У перехода существует несколько спецификаций: они включат события, аргументы, ограничивающие условия, действия и посылаемые события.

    Рассмотрим каждое из них в контексте примера банковской системы:

    1. Событие - это то, что вызывает переход из одного состояния в другое. Например, событие "клиент требует закрыть" вызывает переход счета из открытого в закрытое состояние. Событие размещают на диаграмме вдоль линии перехода.
      На диаграмме для отображения события можно использовать как имя операции, так и обычную фразу. В нашем примере события описаны обычными фразами. Если нужно использовать операцию, то данное событие можно назвать RequestClosure().
      У события могут быть аргументы такие как событие "сделать вклад", вызывающее переход счета из состояния превышения кредита в состояние "открыто", а может иметь аргумент, называемый Amount, описывающий сумму депозита.
      Большинство переходов должны иметь события, т.к. именно они, прежде всего, заставляют переход осуществиться. Тем не менее, бывают и автоматические переходы, не имеющие событий, при этом объект сам перемещается из одного состояния в другое со скоростью позволяющей осуществиться входным действиям деятельности и выходным действиям.

    2. Ограждающее условие - определяет, когда переход может или не может осуществиться. В нашем примере событие сделать вклад переведет счет из состояния "открыт", но только при условии, если баланс больше нуля. В противном случае переход не осуществиться.
      Ограждающее условие изображают на диаграмме вдоль линий перехода, после имени события заключают их в квадратные скобки. Ограждающее условие задавать не обязательно, однако если существуют несколько автоматических переходов из состояний необходимо определять для них взаимоисключающие ограждающие условия. Это поможет читателю диаграммы понять, какой путь перехода будет автоматически выбран.

    3. Действие являются непрерывным поведением, которое осуществляется как часть перехода. Входные и выходные действия показывают внутри состояния, поскольку они определяют, что происходит, когда объект входит или выходит из состояния. Тем не менее, большую часть действий изображают вдоль линии перехода, так как они не должны осуществляться при входе или выходе из состояния. Например, при переходе счета из открытого в закрытое состояние выполняется действие "сохранить дату закрытия счета". Это непрерываемое поведение осуществляется только во время перехода из состояния "открыт" в состояние "закрыт".
      Действие рисуют вдоль линии перехода после имени события, его изображению предшествует косая черта.

    4. Посылаемое событие. Событие или действие может быть поведением внутри объекта, а может представлять собой сообщение, посылаемое другому объекту. Если событие или действие посылается другому объекту, перед ним на диаграмме помещают знак "^".

    Диаграмму состояний не надо создавать для каждого класса. Они применяются только в сложных случаях, когда объект класса может существовать в нескольких состояниях, и в каждом из них ведет себя по-разному.


    написать администратору сайта