[UML]UML系列——状态机图statechart diagram

系列文章

[UML]UML系列——用例图Use Case

[UML]UML系列——用例图中的各种关系(include、extend)

[UML]UML系列——类图Class

[UML]UML系列——类图class的关联关系(聚合、组合)

[UML]UML系列——类图class的依赖关系

[UML]UML系列——类图class的泛化关系

[UML]UML系列——类图class的实现关系Realization

[UML]UML系列——包图Package

[UML]UML系列——活动图activity  diagram

[UML]UML系列——时序图(顺序图)sequence diagram

[UML]UML系列——协作图(通信图)collaboration diagram

引言

状态机图和顺序图、通信图有哪些区别?

顺序图、通信图:描述多个对象间的交互

状态机图:描述单个对象的状态及引起状态变化的原因

实例分析:大学生学籍管理系统

按国家招生规定录取的新生,持录取通知书,按学校有关要求和规定的期限到校办理入学手续。因故不能按期入学者,应当向学校请假,假期一般不得超过2周。未请假、请假未准或者请假逾期者,除因不可抗力等正当事由意外,视为放弃入学资格。

新生入学后,学校在三个月内按照国家招生规定对其进行复查。复查合格者予以注册,取得学籍。复查不合格者,学校区别情况予以处理,直至取消入学资格。

......

学生有如下情况之一者,应予休学:

(一)因伤病经学校指定医院诊断,须停课治疗、休养一学期1/3时间;
      (二)一学期请假缺课超过该学期总学时的1/3;
      (三)传染性肝炎、肺结核等传染性疾病;
      (四)因某种特殊原因,学校认为必须休学。

.....

学生休学至少一学期,一般以一年为限。学生复学后,休学之前已记入成绩档案的考核成绩继续有效,并作为学籍处理依据.

学生复学按下列规定办理:
     (一)学生因伤病休学申请复学时,须持有二级甲等以上医院诊断书,证明身体健康,并经学校指定医院复查合格,方可复学;
     (二)学生休学期满后应于学期的注册期内持有关证明,经教务处核准后编入原专业相应班级选课学习;

........

学生有下列情况之一者,应予退学:
(一)学生在读期间,3次出现在一学期中取得的课程学分不足10学分(不含重修和补考学分;毕业学期除外;第一次提出警告,第二次提出退学警告,由教务处公布名单,院系负责通知学生家长);
(二)休学、保留学籍期满,在规定期限内不办理复学手续;
(三)休学累计满二年,经复查不合格;
(四)因伤病需要休学,经学校动员后仍不办理休学手续;
(五)经学校指定医院确诊患有疾病,或意外伤残无法继续在校学习;
(六)未请假离校连续2周末参加学校规定的教学活动;
 (七) 超过学校规定期限未注册而又无正当事由;
(八)本人要求退学。

学生在规定的学习年限(4年制3~6年,5年制4~7年)内修完本专业培养计划规定的全部教学环节,取得注册专业规定的毕业学分,准予毕业,发给毕业证书。

用状态机图描述如下:

结论

部分对象的行为与其所处的状态相关。通过分析对象的状态及引起状态转变的原因,有利于寻找对象所处类的操作。

状态机图的作用:寻找类的操作。

状态机图的概念

一、状态机图的定义

状态机图描述了一个对象在生命周期内所经历的各种状态,以及引起状态变化的事件。

二、状态、事件、动作

1、状态

状态指对象的生命周期中满足某些条件、执行某些活动或等待某些事件时的状况或情况。

人:青年、中年、老年

电话机:通话、闲置

注意:状态本质上就是对象属性的值,状态的变化就是属性值的变化。

在由对象的全部属性值集合所构成的笛卡尔积中,尽管每一个元素均可广义地称为对象的一个状态,但软件开发者需要认识的是这个笛卡尔积上的每一个等价集合,即使对象的操作呈现相同行为规则的属性值的集合。把每一个等价集称为对象的一红状态。

2、事件

引起状态变化的事情。状态的转移是由事件触发的。

3、动作的概念

动作说明了当事件发生时发生了什么行为。动作可由对象的操作和属性构成。

状态机图的符号

一、状态

状态还可以添加活动。活动是在该状态时要执行的动作。

活动的格式如下:[Entry|exit|do]/动作

活动有三个标准事件:

entry事件:进入该状态时的特定动作(入口动作)。

exit事件:退出该状态时的特定动作(出口动作)。

二、转移

转移描述对象在两种状态间的转变。当某个特定事件发生并且满足特定的条件,对象操作特定的动作,进入另一个状态。

  • 源状态
  • 目标状态
  • 触发事件
  • 监护条件
  • 动作

事件与动作

事件要求对象做某件事情,这个事情被称为动作。动作改变了对象属性的值,导致对象的状态发生变化。

事件与动作既可用于转移中,也可用于单独的状态中。

事件与动作出现的两个位置:

一、事件

1、调用事件

调用事件代表对一个对象的操作的调用。

2、变化事件

变化事件是状态中一个变化或某些条件满足时的事件。使用when标识,其格式为:

when(逻辑表达式)/动作

3、时间事件

时间事件是经过一定的时间或者到达某个时间后发生的事件。时间事件使用after标识,其格式为:

after(时间表达式)/动作

at(时间表达式)/动作

事件实例:时间事件

状态机图:

二、动作

1、动作的概念

动作说明了当事件发生时发生了什么行为。动作由对象的操作和属性组成。

2、基本动作类型

(1)entry(入口动作)

进入状态时最先执行的特定动作,不带条件与参数。格式为:entry/动作

(2)exit(出口动作)

退出该状态时最后执行的特定动作,不带条件与参数。格式为:exit/动作

公用电话的状态机图:

(3)do(内部活动)

用来指定处于某种状态时发生的动作。在入口事件之后,出口事件之前执行的特定动作。

格式为:do/动作

如果内部活动正在进行,有一个转移被触发,此时内部活动会被终止,然后执行活动的出口动作。入口动作和户口动作是不可终止的。

组成状态

简单状态:A
组成状态:B
子状态:    C    D

为什么会出现子状态?

对象a的全部状态由属性x、y的取值的排列组合形成。

但有时当x取一个值xk时,y的任何取值都没有意义。

一、顺序子状态

如果一个组成状态的子状态对应的对象在其生命周期内的任何时刻都只能处于一个子状态,也就是说子状态机图中多个状态是互斥的,不能同时存在,这种子状态被称为顺序子状态或叫互斥子状态。在顺序子状态中最多只能有一个初态和一个终态。

二、并发子状态

有时组成状态有两个或多个并发的子状态,此时称组成状态的子状态为并发子状态。并发子状态能说明很多事发生在同一个时刻,为了分离不同的活动,组成状态被分解成区域,每个区域都包含一个不同的状态机图,各个状态机图在同一时刻分别运行。

前进和低速    前进和高速

后退和低速     后退和高速

实例分析:主体工程施工和水电工程施工

三、历史状态

有时,当离开一个嵌套状态后,又需要重新进入该嵌套状态,但希望直接进入到上次离开嵌套状态时的最后一个子状态,而不想从该子状态机图的初始状态进入。

历史状态,是一种历史指示器,它允许组成状态记住从该组成状态发出的转移触发之前的最后一个子状态。

实例分析:播放器中“继续播放上次未完成的列表”功能

状态机图的Rose建模

一、新建状态机图

二、重命名状态机图并双击

三、添加状态

四、设置状态的名称

方法:双击状态

五、添加转移

在两个状态之间拖动

六、设置事件、守卫条件、动作

七、设置状态内部的动作

八、增加历史状态

总结

UML中最常见的图就介绍到这里。通过本系列的学习,希望能帮到你。总之,分享是快乐的......

状态机图statechart diagram的更多相关文章

  1. [UML]UML系列——状态机图statechart diagram

    系列文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) [UML]UML系列——类图Class [UML]UML系列——类 ...

  2. 【UML】-NO.43.EBook.5.UML.1.003-【UML 大战需求分析】- 状态机图(State Machine Diagram)

    1.0.0 Summary Tittle:[UML]-NO.43.EBook.1.UML.1.003-[UML 大战需求分析]- 状态机图(State Machine Diagram) Style:D ...

  3. 【翻译】What is State Machine Diagram(什么是状态机图)?

    [翻译]What is State Machine Diagram(什么是状态机图)? 写在前面 在上一篇学习类图的时候将这个网站上的类图的一篇文章翻译了出来,感觉受益良多,今天来学习UML状态机图, ...

  4. UML建模之状态图(Statechart Diagram)

     状态图目录: 一.状态图简介(Brief introduction) 二.状态图元素(State Diagram Elements) 1.状态(States) 2.转移(Transitions) 3 ...

  5. uml精粹——10.状态机图

    10.状态机图state machine diagram   状态机图是常见的描写叙述一个系统行为的技术. 在面向对象的方法中,为单个类绘制一个状态机图来展示单个对象的生命周期行为. 见图10.1 图 ...

  6. 状态图 Statechart Diagram

    一.状态图(Statechart Diagram):用来描述一个特定的对象所有可能的状态,以及由于各种事件的发生而引起的状态之间的转移和变化. 一个机器的状态图: TIP:在需求分析和系统设计时都可以 ...

  7. UML: 状态机图

    摘自http://www.umlonline.org/school/viewthread.php?tid=39 活动图将流程分解为一个一个的活动,通过活动的先后顺序来展示流程:而状态机图从某个物品的状 ...

  8. Yarn中如何生成状态机图

    原文 http://xiguada.org/yarn_state_picture/ 在Hadoop2.0系列的版本里,采用了状态机的方式处理ResourceManager,NodeManager,Ma ...

  9. [视频监控]用状态机图展示Layout切换关系

    监控系统通常会提供多种Layout给用户,用于满足不同需求,如:高清显示单路视频或者同时观察多路监控情况. 文中系统只提供了单路.2x2(2行2列共4路).8路(4行4列布局,从左上角算起,有个核心显 ...

随机推荐

  1. EF调用sp,EF自动生成返回类型

    在sp中添加下面的红色部分,就是执行sp时的返回类型,后面在EF中添加该sp后,EF会在DBContext文件中,自动生成调用该sp的代码,包括返回类型等,如下: public virtual Obj ...

  2. cocos2d-x 3.1.1 学习笔记[4]GridActions 网格动画

    文章写的  http://blog.csdn.net/zhouyunxuan 老样子.见代码. //GridActions can only used on NodeGrid auto nodeGri ...

  3. hdu Oulipo(kmp)

    Problem Description The French author Georges Perec (1936–1982) once wrote a book, La disparition, w ...

  4. Yii Framework2.0开发教程(5)数据库mysql性能

    继续<Yii Framework2.0开发教程(3)数据库mysql入门> 首先给予一定的尊重yii2数据库支持引进 Yii 基于 PHP's PDO一个成熟的数据库访问层的建立.它提供了 ...

  5. Redis实现高并发分布式序列号

    使用Redis实现高并发分布式序列号生成服务 序列号的构成 为建立良好的数据治理方案,作数据掌握.分析.统计.商业智能等用途,业务数据的编码制定通常都会遵循一定的规则,一般来讲,都会有自己的编码规则和 ...

  6. 虚拟机安装麒麟3.2时报unkown filesystem,you need to load the linux kernel first

    工作的需要,安装在虚拟机上的麒麟3.2的64位版本号. 使用虚拟机VMware Workstation 9.0,依照常识目标DVD光盘文件的类型选择Other Linux 2.6.x Kernel 6 ...

  7. UML九种图汇总

    UML视频读,该文件开始起草.我不知道如何下手啊!我想先UML九图和总结的关系,然后开始用它的文件. 首先在地图上. UML的九种图各自是:用例图.类图.对象图.状态图.活动图.协作图.序列图.组件图 ...

  8. Swift中文教程(六)--枚举和结构

    原文:Swift中文教程(六)--枚举和结构 Enumerations 枚举 使用 enum 来创建一个枚举.跟Classes(类)和其他类型的命名方式一样,枚举也可以有Method(方法). enu ...

  9. c语言下多线程

    原文:c语言下多线程 [问题]创建了10个线程,10个线程公用一个线程体,创建如下: int t1=0,t2=1,t3=2,t4=3,t5=4,t6=5,t7=6,t8=7,t9=8,t10=9; i ...

  10. C#验证IP地址

    using System.Net; try { IPAddress a = IPAddress.Parse(输入的IP字符串); } catch (System.Exception ex) { Mes ...