[答疑]解析美女出的一道状态机题(x、y和z值)

2019 年 3 月 3 日 UMLChina

状态机如下图所示。如果对象创建之后,事件e2、e1、e3、e4、e1和e5按给定顺序发生,请问,事件发生结束后,变量x、y和z值分别是_______________________。

                           

【答案】

x=-1,y=1,z=0。

【解析】

竞赛题的绝大多数题目是我自己出的,但本题来自Martina Seidl等所著的“UML @ Classroom”。

Martina Seidl照片


这道题目覆盖了状态机图的各个知识要点。


先补充解释可能比较陌生的概念:

(1)历史状态。

历史状态(带圆圈H)记录最近一次离开一个组合状态之前所处的子状态。浅历史状态(不带*号)只记住同一层的子状态,深历史状态(带*号)可以记住更深的子状态。

历史状态有向外的迁移,表示如果历史状态空白,那么缺省迁移到该迁移的目标状态。这个地方经常有人误解,以为迁移到历史状态就等于迁移到历史状态向外迁移所指向的目标状态。想想就知道是错的,如果是这样,中间插入一个历史状态不是多此一举吗?

(2)完成迁移。

不带触发事件的迁移,在到达状态的终态时隐式触发。


再说一下执行顺序。无警戒条件或警戒条件为真,按以下顺序执行:

(1)源状态的出口活动,先子后父;

(2)迁移上的动作和消息;

(3)改变状态;

(4)目标状态的入口活动,先父后子。


一开始,状态机缺省进入A。在进入A之前,执行迁移上的动作x=2。进入A时,执行A的入口活动z=0。

e2发生,状态机离开A迁移到C。离开A时,执行A的出口活动z++,z的值变为1。然后,执行迁移上的动作z=z*2,z的值变为2。进入组合状态C时,执行C的入口活动z++;y=2。z的值变为3,y的值变为2。C的缺省子状态是C1,状态机进入C1,执行C1的入口活动z=z*2,z的值变为6。

e1发生,状态机保持在C1,执行动作x=4,x的值变为4。

e3发生,先检查迁移的警戒[z==6]。因为z当前值为6,警戒[z==6]为真。状态机离开C1,执行C1的出口活动z=3,z的值变为3。进入C2时,执行C2的入口活动y=0,y的值变为0。

e4发生,状态机离开C2,执行C2的出口活动x=-1,x的值变为-1。然后,状态机离开C,执行C的出口活动y=1,y的值变为1。浅历史状态记住离开时所处的同一层的子状态C2。然后状态机进入E,执行E的入口活动y++,y的值变为2。

e1发生,状态机返回历史状态,即C2。先父后子执行入口活动。先执行C的入口活动z++;y=2。z的值变为4,y的值变为2。然后执行C2的入口活动y=0,y的值变为0。

e5发生,状态机离开C2,执行C2的出口活动x=-1,x的值变为-1。状态机迁移到C的终止状态,触发了完成迁移。图上有完成迁移由C指向A。离开C时,执行C的出口活动y=1,y的值变为1。状态机进入A时,执行A的入口活动z=0。因此,最终x=-1,y=1,z=0。

用表格表示如下:

事件

状态

历史

x

y

z

开始

A


2


0

e2

C1



2

6

e1

C1


4



e3

C2



0

3

e4

E

C2

-1

2


e1

C2



0

4

e5

A


-1

1

0



===广告分隔线===


主题: 软件需求设计UML全程实例剖析
开课时间: 2019年3月9-10日(周六、周日)(9:00-12:00,13:30-17:30)
上课地点: 广州
费用:

每人2400元,含午餐。交通、住宿费请自理。可以开增值税专用发票和增值税普通发票。

微信报名:

18758097122

QQ报名: 1493943028
Email报名:

umlchinacourse@163.com

咨询电话: 18758097122
报名交费:

步骤一、报名


教室座位有限,需要先报名。请通过以上任何联系方式告知我们您的姓名和单位,以便我们预留座位。


步骤二、交费


按以下方法办理交费,将交费凭证(截屏或照片)、发票单位名称(如果要开)通过以上任何方式告知我们。我们收到费用后会给您发听课证,听课证是一个pdf文件,上有详细听课地点和您的座位号。听课证上有详细地址和座位细节。


不方便现场交费,因为需按交费顺序安排座位,而且现场只有老师,无人收款。


如果您交费后因故未能参加,您的名额和上课时间将会一直保留。


交费方法:


(1)支付宝支付到talk@umlchina.com,手机扫描二维码或PC上点击付款图标即可付款



(2)微信支付到18758097122

(3)如果是公司财务汇,可以汇到负责UMLChina商务事宜的以下公司账号:

户名:杭州先思软件技术有限公司
帐号:3310 6594 0018 0100 29896
开户行:交通银行杭州滨江支行

课前准备:


请下载以下资料:
(1)最新版本的本次课程训练幻灯
http://www.umlchina.com/training/slide.htm
(2)建模软件EA30天试用版
http://www.sparxsystems.com/products/ea/trial/request.html
(3)UMLChina模型模板
http://www.umlchina.com/training/myproject.rar
(4)《软件方法(上)》第2版,自行到书店购买,勘误:http://www.umlchina.com/book/errata2ed.htm
(5)《软件方法(下)》目前公开内容,请在http://www.umlchina.com/book/softmeth0809.pdf下载
(6)课上可以专门以学员的项目作为主要讨论项目。如果您希望在课上讨论您的项目,麻烦下载http://www.umlchina.com/training/project.doc 填好后发给我们,以便老师针对您的项目相关领域事先做准备。


[训练介绍]

软件开发中,需求是解决“产品怎样好卖”的问题,设计是解决“降低生产成本”的问题。二者相辅相成,缺一不可。而且,不能相互取代。要迈向“低成本制造好卖的产品”的境界,并非喊喊口号就能达到,需要静下心来,学习和实践各种技能。


在这个强调“做减法”的时代,建模是正确帮助您“做减法”的绝佳工具。


本训练就是教授如何使用UML2.5相关的需求和设计技能来全程实例剖析一个系统的过程。


本训练对每个开发工作流,结合讲解、做练习巩固、应用到实际项目三种方式,展示使用UML2.5相关技能开发软件系统的全过程,解答实际应用中的疑难细节问题。


[学员要求]


有一年以上项目经验的需求或设计(编码)人员。不需要您有“UML基础”,只需要您有项目经验。欢迎学员携带自己的项目来听课,由专家在现场进行剖析。



[专家]


UMLChina首席专家 潘加宇。在1999年还是一名程序员时,利用业余时间创建了UMLChina,潜心研究软件需求和设计技能。2002年开始对外提供UML需求和设计的技术指导和训练服务,到现在为止,已经上门为超过280家的软件组织提供服务,覆盖了国内各个领域的领袖企业,包括通信、企业管理、电子商务、房地产、网络游戏、地理信息、物流、数码设备、医疗设备、工业控制.....等领域。


[课程大纲]


1. 概论
--需求和设计的关键区别
--核心工作流
--UML的统一
--使用UML开发过程、工具、资料介绍
2. 愿景
--愿景的要点
--如何揣摩愿景
--项目实作:愿景 
3. 业务建模
--组织的外观和内观
--选取合适的建模业务单元
--业务执行者和业务用例
--业务序列图
--改进业务序列图
--项目实作:绘制业务用例图、业务序列图 
4. 需求
--系统执行者要点剖析
--系统用例要点剖析
--从业务序列图映射到系统用例图
--项目实作:绘制系统用例图 
--书写用例规约
--项目实作:书写用例规约 
--通过关系整理用例
--需求启发技术
5. 结构分析之类图
--抽象和封装
--识别类及其属性
--识别类之间的泛化
--识别类之间的关联
--项目实作:绘制类图 
--彩色建模技术
--典型分析模式
6. 行为分析之序列图
--序列图精要
--用例、类图、序列图的互动
--专家原则和单一责任原则
--老板原则和聚合根
--可视原则
--项目实作:绘制序列图 
7. 行为分析之状态图
--状态图、类图、序列图的映射
--状态
--事件、动作和转换
--层次状态、历史状态
--转换执行序列
--分层和细化
--状态图和代码的映射
--项目实作:绘制状态机图 
8. 架构和设计
--存储层的映射
--数据源层的映射
--业务层的映射
--界面层的映射
--领域驱动设计
9. 改进指南
--根据团队情况改进
--小步前进
--正确的改进心态

以上时间分配会根据项目特点和训练进程调整。


登录查看更多
0

相关内容

统一建模语言(UML,Unified Modeling Language)是由国际软件行业组织 OMG(对象管理集团 omg.org)自 1997 年起研发的用于 IT 各领域建模的一套标准、通用、图形化的面向对象(OO)建模语言,对应的国际标准为 ISO/IEC 19505。UML 具有简单、直观、形象、表达力强等特点,因此不仅常用于复杂软件系统架构的建模和面向对象分析与设计(OOAD),也可用于复杂业务流程及系统需求的建模。UML 当前的最新版本为 v2.5(2015.3)。 UML 起源于 3 位著名的软件工程方法学家 Grady Booch、James Rumbaugh、Ivar Jacobson 融合、统一了他们各自原来的建模语言和方法。
少标签数据学习,54页ppt
专知会员服务
196+阅读 · 2020年5月22日
【ICMR2020】持续健康状态接口事件检索
专知会员服务
17+阅读 · 2020年4月18日
Python数据分析:过去、现在和未来,52页ppt
专知会员服务
99+阅读 · 2020年3月9日
自动结构变分推理,Automatic structured variational inference
专知会员服务
38+阅读 · 2020年2月10日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
为什么所有人都报了这个虐人到哭的训练营?!
人工智能头条
5+阅读 · 2019年5月15日
【泡泡读者来稿】VINS 论文推导及代码解析(三)
泡泡机器人SLAM
30+阅读 · 2019年3月16日
10道题,测一测你的AI水平到底如何
七月在线实验室
8+阅读 · 2018年7月17日
AI笔试面试题库-Python题目解析1
七月在线实验室
5+阅读 · 2018年6月27日
两套经典的用户画像
产品100干货速递
26+阅读 · 2018年6月19日
量子计算
人工智能学家
7+阅读 · 2018年4月6日
中美日全球美女机器人大PK,哪一款是你想要的味道?
机器人大讲堂
4+阅读 · 2017年9月16日
有了场景和画像才懂用户
互联网er的早读课
6+阅读 · 2017年8月26日
【智能驾驶】史上最全自动驾驶系统解析
产业智能官
23+阅读 · 2017年8月21日
Learning by Abstraction: The Neural State Machine
Arxiv
6+阅读 · 2019年7月11日
Arxiv
12+阅读 · 2019年2月28日
Learning Recommender Systems from Multi-Behavior Data
Arxiv
7+阅读 · 2018年11月29日
Arxiv
3+阅读 · 2018年10月8日
Doubly Attentive Transformer Machine Translation
Arxiv
4+阅读 · 2018年7月30日
Arxiv
3+阅读 · 2018年4月18日
Arxiv
23+阅读 · 2017年3月9日
VIP会员
相关VIP内容
少标签数据学习,54页ppt
专知会员服务
196+阅读 · 2020年5月22日
【ICMR2020】持续健康状态接口事件检索
专知会员服务
17+阅读 · 2020年4月18日
Python数据分析:过去、现在和未来,52页ppt
专知会员服务
99+阅读 · 2020年3月9日
自动结构变分推理,Automatic structured variational inference
专知会员服务
38+阅读 · 2020年2月10日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
相关资讯
为什么所有人都报了这个虐人到哭的训练营?!
人工智能头条
5+阅读 · 2019年5月15日
【泡泡读者来稿】VINS 论文推导及代码解析(三)
泡泡机器人SLAM
30+阅读 · 2019年3月16日
10道题,测一测你的AI水平到底如何
七月在线实验室
8+阅读 · 2018年7月17日
AI笔试面试题库-Python题目解析1
七月在线实验室
5+阅读 · 2018年6月27日
两套经典的用户画像
产品100干货速递
26+阅读 · 2018年6月19日
量子计算
人工智能学家
7+阅读 · 2018年4月6日
中美日全球美女机器人大PK,哪一款是你想要的味道?
机器人大讲堂
4+阅读 · 2017年9月16日
有了场景和画像才懂用户
互联网er的早读课
6+阅读 · 2017年8月26日
【智能驾驶】史上最全自动驾驶系统解析
产业智能官
23+阅读 · 2017年8月21日
相关论文
Learning by Abstraction: The Neural State Machine
Arxiv
6+阅读 · 2019年7月11日
Arxiv
12+阅读 · 2019年2月28日
Learning Recommender Systems from Multi-Behavior Data
Arxiv
7+阅读 · 2018年11月29日
Arxiv
3+阅读 · 2018年10月8日
Doubly Attentive Transformer Machine Translation
Arxiv
4+阅读 · 2018年7月30日
Arxiv
3+阅读 · 2018年4月18日
Arxiv
23+阅读 · 2017年3月9日
Top
微信扫码咨询专知VIP会员