Similar presentations:
uml_state_diagram_presentation
1. Диаграмма состояний UML
2. Цели данного типа диаграмм
• Диаграмма состояний – это диаграмма,отображающая всё множество состояний, в
которых может находиться объект за время
его жизненного цикла, а так же все
возможные переходы между этими
состояниями, предусмотренные
концепцией, разработанной
проектировщиком.
3.
• В большинстве случаев диаграммасостояний строиться для одного класса,
чтобы показать динамику поведения
объектов этого класса. Диаграммы
состояний обычно используют для
описания поведения некоторого объекта в
различных вариантах использования.
4. Автомат
Автомат – это последовательность состояний,которые охватывают все этапы жизненного
цикла объекта. Основным формализмами,
используемыми при описании автомата,
являются состояние и переход.
5. Из чего состоит автомат
У любого конечного автомата есть:1.Множество состояний
например: Ожидание Работа Ошибка
2.Начальное состояние
откуда всё начинается
3.События (входные сигналы)
кнопка нажата, пришли данные, истёк таймер
4.Переходы
правила вида:
,
,
если произошло событие → перейти в другое состояние
5.(Иногда) действия
что выполняется при входе/выходе из состояния
6. Торговый автомат с кофе
Состояния:Ожидание
Принятие денег
Приготовление
Выдача
Ошибка
Переходы:
Вставили деньги
Выбрали кофе
Готов
Нет воды
7. Связь с UML
Конечный автомат — теорияДиаграмма состояний UML — визуальное представление этого автомата
8. Имя состояния
Текст, используемый в качестве именисостояния должен выражать содержательный
смысл действий, выполняемых системой в
этом конкретном состоянии (в конкретный
момент её функционирования).
9. Список внутренних действий
Список внутренних действий содержитперечисление действий, которые система
выполняет в соответствующем
Действия следует указывать в порядке их
выполнения системой.
имя_дейстивя/содержание_действия
10.
Снизу на рисунке показано как будетвыглядеть в графическом представлении
событие с указанным списком внутренних
действий для состояния передачи данных.
11. Начальное состояние
Начальное состояние – это частный случайсостояния, в котором объект находиться в
начальный момент времени. У начального
состояния отсутствуют внутренние действия,
потому что оно предшествует первым
выполняемым объектам действиям, а значит
и первому внутреннему состоянию объекта
```начальное и конечное состояние называют
псевдо-состояниями.```
12.
Начальное состояние изображается в видезакрашенного круга.
Пример изображения начального состояния
приведён на изображении ниже.
13. Конечное состояние
Конечное значение, как и начальное,является псевдосостоянием и отражает
момент завершения жизненного цикла
автомата. Графически конечное состояние
представляется в виде закрашенного круга
14. Понятие перехода
• Переход (transition) – это отношение междудвумя последовательными состояниями,
которое указывает на смену одного
состояния другим . Выполнение перехода
между состояниями принято называть
срабатыванием перехода.
15.
16.
• Если возле стрелки не указано никакойподписи, то такой переход считается
нетриггерным (триггерные переходы – это
переходы, которые происходят как реакция
на некоторое событие.) Если переход
указан как нетриггерный, то из контекста
диаграммы должно быть однозначно
понятно, после какого действия он
осуществляется.
17. Событие
• Событие (event) представляет собойдекларацию некоторого факта, могущего
иметь место в пространстве и времени.
• События строго упорядочены во времени, а
значит, после того, как некоторое событие
произошло, то вернуться к предыдущему
уже невозможно (за исключением тех
случаев, когда в модели явно указана
цикличная последовательность событий).
18. Пример
19. Основные элементы
• - Состояние• - Переход
• - Событие
• - Начальное и конечное состояние
20. Когда использовать
• - Логика аккаунтов• - Статусы заказов
• - Жизненный цикл документов
21. ШАГ 0. Выбрать объект
class Character22. ШАГ 1.
Найти ПЕРЕМЕННЫЕ, которые описываютсостояние
int hp;
23. ШАГ 2. Выделить логические состояния (!не методы)
• Ошибка: делать состояния• Состояния — это условия, в которых объект
находится
•Alive — hp > 0
•Dead — hp == 0
24. ШАГ 3. Найти события (методы), которые МОГУТ менять состояние
• void takeDamage(int damage);• void heal(int value);
25. ШАГ 4. Определить переходы между состояниями
• Что переводит Alive → Dead?26. ШАГ 5. Добавить начальное и конечное состояния
• начальное состояние• Dead можно считать конечным
27.
28.
• class BankAccount {• private:
bool active;
bool blocked;
• public:
void open();
void deposit();
void withdraw();
void block();
void close();
• };
29.
30. Итог
• Диаграмма состояний показывает какобъект изменяется со временем