UML软件建模教程实验六状态图实例

该文介绍了如何使用RationalRose或Visio软件创建状态图,强调了状态图在描述对象不同状态和转换中的作用。实验步骤包括创建状态图、添加状态、定义转换和事件、设置保证条件以及在状态中添加活动。状态图有助于清晰展示事件顺序和避免非法事件的处理。
摘要由CSDN通过智能技术生成

实验六 状态图实例

一、实验目的

1.掌握活动图基本要素

2.了解何时使用状态图

二、实验条件

   计算机一台,windows操作系统,rational rose或visio软件(2003-2023版)

三、实验原理及内容

状态图表示某个类所处的不同状态和该类的状态转换信息。有人可能会争论说每个类都有状态,但不是每个类都应该有一个状态图。只对"感兴趣的"状态的类(也就是说,在系统活动期间具有三个或更多潜在状态的类)才进行状态图描述。 状态图的符号集包括5个基本元素:初始起点,它使用实心圆来绘制;状态之间的转换,它使用具有开箭头的线段来绘制;状态,它使用圆角矩形来绘制;判断点,它使用空心圆来绘制;以及一个或者多个终止点,它们使用内部包含实心圆的圆来绘制。要绘制状态图,首先绘制起点和一条指向该类的初始状态的转换线段。状态本身可以在图上的任意位置绘制,然后只需使用状态转换线条将它们连接起来。

例1:银行透支状态图

1.创建状态图(图6.1)

(1)在浏览器中右击类。

(2)选择new→statechart diagram,对该类创建一个状态图,并命名该图。

图6.1:创建状态图

2.在图中增加状态,初始和终止状态(图6.2)

(1)选择工具栏的state按钮,单击框图增加一个状态,双击状态命名。

(2)选择工具栏的start state 和end state ,单击框图增加初始状态和终止状态。初始状态是对象首次实例化时的状态,状态图中只有一个初始状态。终止状态表示对象在内存中被删除之前的状态,状态图中有0个、1个或多个终止状态。

图6.2 增加状态

3.状态之间增加交接

(1)选择state transition工具栏按钮。

(2)从一种状态拖到另一种状态。

(3)双击交接弹出对话框,可以在“General”中增加事件(Event) ,如6.3图,在“Detail”中增加保证条件(Guard Condition) (图6.4)等交接的细节。事件用来在交接中从一个对象发送给另一个对象,保证条件放在中括号里,控制是否发生交接。

图 6.3增加事件

图6.4 增加保证条件

4.在状态中增加活动(图6.5)

(1)右击状态并选择open specification。

(2)选择Action标签,右击空白处并选择Insert。

(3)双击新活动(清单中有“Entry/”)打开活动规范,在“name”中输入活动细节。

图6.5在状态中增加活动

例2:账目类的状态图

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

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

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

图6.6账目状态图

例3:

例4:

实验思考题

1 请简述状态图的作用。

  • 状态图清晰地描述了状态之间的转换顺序,通过状态的转换顺序也就可以清晰地看出事件的执行顺序。如果没有状态图我们就不可避免地要使用大量文字来描述外部事件的合法顺序。
  • 清晰的事件顺序有利于程序员在开发程序时避免出现事件顺序错误的情况。
  • 状态图清晰地描述了状态转换时所必需的触发事件、监护条件和动作等影响转换的因素,有利于程序员避免程序中非法事件的进入。
  • 状态图通过判定可以更好地描述工作流因为不同的条件发生的分支。

2请简述建立状态图的过程。

  • 创建状态图:在浏览器中右击类->选择new→statechart diagram,对该类创建一个状态图
  • 在图中增加状态,初始和终止状态:
  • 选择工具栏的state按钮,单击框图增加一个状态,双击状态命名->选择工具栏的start state 和end state ,单击框图增加初始状态和终止状态。初始状态是对象首次实例化时的状态,状态图中只有一个初始状态。终止状态表示对象在内存中被删除之前的状态,状态图中有0个、1个或多个终止状态
  • 状态之间增加交接
  • 选择state transition工具栏按钮->从一种状态拖到另一种状态->双击交接弹出对话框,可以在“General”中增加事件(Event),在“Detail”中增加保证条件(Guard Condition)等交接的细节。事件用来在交接中从一个对象发送给另一个对象,保证条件放在中括号里,控制是否发生交接。
  • 在状态中增加活动
  • 右击状态并选择open specification->选择Action标签,右击空白处并选择Insert->双击新活动(清单中有“Entry/”)打开活动规范,在“name”中输入活动细节。

3 实验例题完成后,将截图粘贴到实验报告中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小孙同学1024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值