展开章节目录
实验 08

状态图

建立对象状态、状态内部动作及由事件、守卫条件和动作组成的迁移。

复习要点

  • 状态图关注单个对象生命周期;事件触发状态迁移。
  • 迁移可写成:事件(参数) [守卫条件] / 动作。守卫条件决定迁移能否发生。
  • 状态内部可配置 entry、exit、do 或特定事件动作。
  • 先列举稳定状态和事件,再连接迁移并补充条件与动作。

操作主线

新建状态图 → 添加状态 → 设置内部动作 → 添加迁移 → 填事件/条件/动作

完整实验指南点击展开或收起
  1. 实验内容

请绘制状态图,如图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. 作业

请绘制账目对象的状态图1-15所示。

状态图操作截图

图1-15 账目对象的状态图

理解:银行账目可能有几种不同的状态,可以打开、关闭或透支。账目在不同状态下的功能是不同的,账目可以从一种状态变到另一种状态。例如,账目打开而客户请求关闭账目时,账目转入关闭状态。客户请求是事件,事件导致账目从一个状态过渡到另一个状态。

如果账目打开而客户要取钱,则账目可能转入透支状态。这发生在账目结余小于0时,框图中显示为[结余<0]。方括号中的条件称为保证条件,控制状态的过渡能不能发生。

对象处在特定状态时可能发生某种事件。例如,账目透支时,要通知客户。

返回顶部 ↑