行为状态机概念


以下内容摘自UML2,今天的内容是说明状态机具有上下文类目的情况。


行为状态机可以用于定义下面的场景(不限于)

  • 主动类的类目行为
  • 一个行为化类目的除了类目行为以外的拥有行为。

如果状态机有某种行为类目上下文,那么这个类目定义了哪些信号和调用事件可以适用于那个状态机,也定义了哪些特征对状态机拥有的行为可用。状态机的信号触发条件和调用事件触发条件根据这个类目的接受和操作被分别定义。这些特征可以被用于定义状态机的消息事件触发条件。

--UML2.5 14.2.3.1 StateMachine(状态机)


用一个不是很严密,但是简单的说就是:状态机可以用于定义类目的类目的行为。这时,状态机可以调用上下文类目的行为,也可以将上下文类目中定义的事件用于定义状态机的触发条件。


示例

我们继续使用按钮式信号系统的例子。

定义上下文类目



在本例中就是一个类:TrafficLight.





EA&UML日拱一卒-状态图::状态机_UML

TrafficLight类是一个主动类,主动类的行为就是状态机。

TrafficLight类有两个方法,SetCurrentLight和SetShuttingDownFlag。它们会在状态机中调用。

为类目添加状态机

打开【Project Browser】中TrafficLight的上下文菜单,选择【Add】-【State Machine】菜单项。


EA&UML日拱一卒-状态图::状态机_状态机_02

就可以得到一个状态机对象和一个状态图。


EA&UML日拱一卒-状态图::状态机_EA_03

绘制状态图

接下来的内容就是我们前面讲过的了。以下是按钮式型号系统的状态图。


EA&UML日拱一卒-状态图::状态机_状态图_04

从图中可以看出以下不同:

状态图的外面包围着一个方框,表示这是一个状态机。

状态机的进入/退出行为,迁移的效应行为调用的是TrafficLight类的方法。

进入/退出行为的设定和表示方法

  1. 打开进入/退出行为对话框

  2. EA&UML日拱一卒-状态图::状态机_类目_05


  3. 选择【Behavior】属性页
  4. 在【Behavior】文本框中输入行为的详细内容
  5. 如果需要类类图中显示详细内容,则选择蓝色圆圈中的【Show Behavior in Diagram】项目。

参考资料:

14.2 Behavior StateMachines(1)--状态机概要

14.2 Behavior StateMachines (10) --记法

打开方法如下:

  1. 进入【面向对象思考】 公众号
  2. 打开【UML】-【UML2.5中文译文】菜单
  3. 选择【状态图】分类
  4. 选择相关文章



以上就是今天的文章,欢迎点赞,关注并推荐给您的朋友!



阅读更多更新文章,请扫描下面二维码,关注微信公众号【面向对象思考】




EA&UML日拱一卒-状态图::状态机_EA_06