EA&UML日拱一卒

Wesley13
• 阅读 1053

点击上方【面向对象思考】可快速关注本公众号!

行为状态机概念

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

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

  • 主动类的类目行为

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

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

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

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

示例

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

定义上下文类目

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

EA&UML日拱一卒

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

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

为类目添加状态机

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

EA&UML日拱一卒

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

EA&UML日拱一卒

绘制状态图

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

EA&UML日拱一卒

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

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

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

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

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

    EA&UML日拱一卒

  2. 选择【Behavior】属性页

  3. 在【Behavior】文本框中输入行为的详细内容

  4. 如果需要类类图中显示详细内容,则选择蓝色圆圈中的【Show Behavior in Diagram】项目。

参考资料:


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


14.2 Behavior StateMachines (10) --记法

打开方法如下:

  1. 进入【面向对象思考】 公众号  

  2. 打开【UML】-【UML2.5中文译文】菜单

  3. 选择【状态图】分类

  4. 选择相关文章

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

本文分享自微信公众号 - 面向对象思考(OOThinkingDalian)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
HelloWorld官方 HelloWorld官方
4年前
C++ 基本语法
C程序可以定义为对象的集合,这些对象通过调用彼此的方法进行交互。现在让我们简要地看一下什么是类、对象,方法、即时变量。对象对象具有状态和行为。例如:一只狗的状态颜色、名称、品种,行为摇动、叫唤、吃。对象是类的实例。类类可以定义为描述对象行为/状态的模板/蓝图。方法从基本上说,一个方法表示一种行为。一个类可以包含多个
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Squirrel状态机-从原理探究到最佳实践
Squirrel状态机是一种用来进行对象行为建模的工具,主要描述对象在它的生命周期内所经历的状态,以及如何响应来自外界的各种事件。比如订单的创建、已支付、发货、收获、取消等等状态、状态之间的控制、触发事件的监听,可以用该框架进行清晰的管理实现。使用状态机来管理对象生命流的好处更多体现在代码的可维护性、可测试性上,明确的状态条件、原子的响应动作、事件驱动迁移目标状态,对于流程复杂易变的业务场景能大大减轻维护和测试的难度。
Stella981 Stella981
3年前
ES6(Decorator(修饰器))
Decorator(修饰器)1.基本概念函数用来修改类的行为1.Decorator是一个函数2.通过Decorator(修饰器)能修改类的行为(扩展类的功能)3.Decorator(修饰器)只在类的范围有用2.基本用法见代码一、Decorator(修饰器)定义!(https://oscimg.oschina
Wesley13 Wesley13
3年前
Java 对象和类
你知道这就是一个类嘛?你知道这是一个类的实例嘛?你记住这是一个抽象类!。。。(QAQ,连概念都记不牢。。嘤嘤嘤)「复习备考」类是一个模板,它描述一类对象的行为和状态。在Java中类可以看成是创建Java对象的模板。(可以理解成是你解题时固有的套路)对象是类的实例,它有状态和行为。(类的实例,就比如你虽然有了解题的套路,但
Wesley13 Wesley13
3年前
Java学习笔记之
Java学习笔记之类和对象(一)类  类是一个模板,它描述一类对象的行为和状态 例如:动物类是一个类,动物们都有属性:颜色,动物们都有行为:吃饭publicclassDog{Stringname;Stringcolor;
Wesley13 Wesley13
3年前
FPGA 高手养成记
来源:公众号【ZYNQ】ID  :FreeZynq整理:李肖遥本文目录1.前言2.状态机简介3.状态机分类Mealy型状态机Moore型状态机4.状态机描述一段式状态机二段式状态机三段式状态机
Stella981 Stella981
3年前
Docker 部署SpringBoot项目不香吗?
  公众号改版后文章乱序推荐,希望你可以点击上方“Java进阶架构师”,点击右上角,将我们设为★“星标”!这样才不会错过每日进阶架构文章呀。  !(http://dingyue.ws.126.net/2020/0920/b00fbfc7j00qgy5xy002kd200qo00hsg00it00cj.jpg)  2
Wesley13 Wesley13
3年前
Java基础语法入门
java基础语法一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。下面简要介绍下类、对象、方法和实例变量的概念。   对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。   类:类是一个模板,它描述一类对象的行为和状