状态图
建立对象状态、状态内部动作及由事件、守卫条件和动作组成的迁移。
复习要点
- 状态图关注单个对象生命周期;事件触发状态迁移。
- 迁移可写成:事件(参数) [守卫条件] / 动作。守卫条件决定迁移能否发生。
- 状态内部可配置 entry、exit、do 或特定事件动作。
- 先列举稳定状态和事件,再连接迁移并补充条件与动作。
操作主线
新建状态图 → 添加状态 → 设置内部动作 → 添加迁移 → 填事件/条件/动作
完整实验指南点击展开或收起
实验内容
请绘制状态图,如图1-1所示。
图1-1
2. 实验步骤
2.1建立状态图
步骤:
1)右击浏览器窗口中的Use Case View,弹出快捷菜单;
2) 选择New→ Statechart Diagram,系统自动在Use Case View下增加一个项目名:NewDiagram。我们把项目名改为:我的状态图
3)双击文本”我的状态图”,该状态图就在模型窗口中打开,如图1-2所示。
图1-2 创建状态图
2.2向状态图中添加状态
步骤:
1)在工具箱中,点击state按钮,然后在放置状态节点的位置点击一下,就创建了一个状态节点,将状态节点的名字改为:Credit。如图1-3所示
图1-3 创建状态
2)右击Credit图标→选择Open Specification→点击Actions标签,如图1-4所示。
图1-4 打开规Actions标签页面
3)在Actions标签页面的空白处右击,打开快捷菜单,选择insert项后,系统在列表框中增加一个项目:Entry/,如图1-5所示。
图1-5 添加一项目
4)在”Entry/”上双击,打开Actions规范窗口,如图1-6所示。
图1-6 Actions规范窗口
5)在when后的下拉列表框中,选择:On Event ;在Event(事件)后填写:Deposit;
在Arguments(事件参数) 后填写:m;在name后填写动作:balane=balane+m,如图1-7所示。
图1-7 Credit状态的内部事件引起的动作
6)点击”OK”按钮,完成Credit状态的内部动作设置。如图1-8所示。
图1-8 Credit状态的内部动作设置
同理,重复上面1~6步,完成其它状态节点的创建,如图1-9所示。
图1-9 添加状态
2.3 在状态之间添加迁移
步骤:
1)在工具箱中,点击State Transition按钮,然后,在Credit图标上按下鼠标左键(不要松手),拖动鼠标到RejectWithdrawal图标上,松开鼠标后,就创建了一个迁移,如图1-10所示
图1-10 添加迁移
2)双击迁移,弹出迁移的规范窗口,在General标签页上,填写事件和参数,如图1-11所示。
图1-11 填写引起迁移的事件和事件的参数
3)点击General标签,在标签页上填写动作执行的条件、动作,如图1-12所示。
图1-12 迁移时要执行的动作和动作执行的条件
4)点击”OK”按钮,完成迁移的设置。如图1-13所示。
图1-13 迁移设置
同理,重复上面1~4步,添加和设置其它迁移。如图1-14所示。
图1-14 状态图
作业
请绘制账目对象的状态图1-15所示。
图1-15 账目对象的状态图
理解:银行账目可能有几种不同的状态,可以打开、关闭或透支。账目在不同状态下的功能是不同的,账目可以从一种状态变到另一种状态。例如,账目打开而客户请求关闭账目时,账目转入关闭状态。客户请求是事件,事件导致账目从一个状态过渡到另一个状态。
如果账目打开而客户要取钱,则账目可能转入透支状态。这发生在账目结余小于0时,框图中显示为[结余<0]。方括号中的条件称为保证条件,控制状态的过渡能不能发生。
对象处在特定状态时可能发生某种事件。例如,账目透支时,要通知客户。