EA&UML日拱一卒

Wesley13
• 阅读 492

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

行为状态机概念

以下内容摘自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源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
技术小男生 技术小男生
2个月前
linux环境jdk环境变量配置
1:编辑系统配置文件vi /etc/profile2:按字母键i进入编辑模式,在最底部添加内容: JAVAHOME/opt/jdk1.8.0152 CLASSPATH.:$JAVAHOME/lib/dt.jar:$JAVAHOME/lib/tools.jar PATH$JAVAHOME/bin:$PATH3:生效配置
光头强的博客 光头强的博客
2个月前
Java面向对象试题
1、 请创建一个Animal动物类,要求有方法eat()方法,方法输出一条语句“吃东西”。 创建一个接口A,接口里有一个抽象方法fly()。创建一个Bird类继承Animal类并实现 接口A里的方法输出一条有语句“鸟儿飞翔”,重写eat()方法输出一条语句“鸟儿 吃虫”。在Test类中向上转型创建b对象,调用eat方法。然后向下转型调用eat()方
HelloWorld官方 HelloWorld官方
2年前
C++ 基本语法
C 程序可以定义为对象的集合,这些对象通过调用彼此的方法进行交互。现在让我们简要地看一下什么是类、对象,方法、即时变量。 对象 对象具有状态和行为。例如:一只狗的状态 颜色、名称、品种,行为 摇动、叫唤、吃。对象是类的实例。 类 类可以定义为描述对象行为/状态的模板/蓝图。 方法 从基本上说,一个方法表示一种行为。一个类可以包含多个
blmius blmius
1年前
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:SQL Mode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。 全局s
Wesley13 Wesley13
1年前
Java 对象和类
你知道这就是一个类嘛?你知道这是一个类的实例嘛?你记住这是一个抽象类!。。。(QAQ,连概念都记不牢。。嘤嘤嘤) 「 复习备考 」 * 类是一个模板,它描述一类对象的行为和状态。在 Java 中类可以看成是创建 Java 对象的模板。(可以理解成是你解题时固有的套路) * 对象是类的实例,它有状态和行为。(类的实例,就比如你虽然有了解题的套路,但
Wesley13 Wesley13
1年前
Java学习笔记之
Java学习笔记之---类和对象 ================ ##### (一)类    类是一个模板,它描述一类对象的行为和状态  例如:动物类是一个类,动物们都有属性:颜色,动物们都有行为:吃饭 public class Dog { String name; String color;
Wesley13 Wesley13
1年前
FPGA 高手养成记
来源:公众号【ZYNQ】 ID   :FreeZynq 整理 :李肖遥 本文目录 ---- 1. 前言 2. 状态机简介 3. 状态机分类 Mealy 型状态机 Moore 型状态机 4. 状态机描述 一段式状态机 二段式状态机 三段式状态机
Wesley13 Wesley13
1年前
FPGA 开发流程
仿真的概念 完成了设计输入以及成功综合、布局布线之后,只能说明设计符合一定的语法规范。但是是否满足要求的功能,是不能保证的,还需要通过仿真流程对设计进行验证。仿真的目的就是在软件环境下,验证电路的行为和设想的行为是否一致。 仿真分为功能仿真和时序仿真。 * (1)功能仿真(行为仿真,前仿真)   功能仿真是在设计输入之后,还没有综合、布局布线
Stella981 Stella981
1年前
Docker 部署SpringBoot项目不香吗?
  公众号改版后文章乱序推荐,希望你可以点击上方“**Java进阶架构师**”,点击右上角,将我们设为**★**“**星标**”!这样才不会错过每日进阶架构文章呀。   ![](http://dingyue.ws.126.net/2020/0920/b00fbfc7j00qgy5xy002kd200qo00hsg00it00cj.jpg)   **2
Wesley13 Wesley13
1年前
Java基础语法入门
java 基 础 语 法一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。下面简要介绍下类、对象、方法和实例变量的概念。      **对象**:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。      **类**:类是一个模板,它描述一类对象的行为和状