软考72-上午题-【面向对象技术2-UML】-UML中的图3

一、状态图

1-1、状态图的定义

状态图,展现了一个状态机,由:状态、转换、事件和活动组成,是系统的动态视图。

活动(动作) 可以在状态内执行也可以在状态转换(迁移) 时执行。

状态图强调:行为的事件顺序。

1-2、状态图的组成

1、状态

状态图通常包括:简单状态、组合状态。

状态是任何可以被观察到的系统行为模式,一个状态代表系统的一种行为模式。

状态规定了系统对事件的响应方式 。系统对事件的响应,既可以是做一个(或一系列)动作,也可以是仅仅改变系统本身的状态,还可以是既改变状态,又做动作。

在状态转换图中定义的状态主要有:初态(即初始状态)、终态(即最终状态)和中间状态。

初态用一个黑圆点表示,终态用黑圆点外加一个圆表示。一张状态图中只能有一个初态,而终态可以没有,也可以有多个。

状态图中的状态用一个圆角四边形表示(可以用两条水平横线把它分成上、中、下3个部分。上面部分为状态的名称 ,这部分是必须有的;中间部分为状态变量的名称和值 ,这部分是可选的;下面部分是活动表 ,这部分也是可选的 ),状态之间为状态转换,用一条带箭头的线表示。带箭头的线上的事件发生时,状态转换开始(有时也称之为转换"点火"或转换被"触发")。

转换:一条带箭头的线;(转换的别名:迁移)

一个状态到另一个状态的转变,就是转换;

带箭头的线上的的文字,就是事件。

示例:

2、活动(活动表)

活动是由若干动作组成。

状态表中的活动表的语法结构:

事件名(参数表)/动作表达式

事件名可以是任何事件的名称。

在活动表中经常使用下述 3 种标准事件:

entry、exit 和 do。entry事件:指定进入该状态的动作;

exit事件:指定退出该状态的动作;

do事件:指定在该状态下的动作。

需要时可以为事件指定参数表(×)。

活动表中的动作表达式描述应做的具体动作。

示例:

这些活动是状态的内部活动。

3、事件

转换包括两个状态:源状态、目标状态。

事件,是在某个特定时刻发生的事情,它是对引起系统做动作、从一个状态转换到另个状态的外界事件的抽象。例如,观众使用电视遥控器,用户移动鼠标、单击鼠标等都是事件。

简而言之,事件就是引起系统做动作、转换状态的控制信息。

状态变迁通常是由事件触发的,在这种情况下,应在表示状态转换的箭头线上标出触发转换的事件表达式。

如果在箭头线上未标明事件,则表示在源状态的内部活动执行完之后自动触发转换。

事件表达式的语法如下:

事件说明[监护条件]/动作表达式

其中,事件说明的语法为:事件名 (参数表 );

监护条件是一个布尔表达式;

如果同时使用事件说明和监护条件,则当且仅当事件发生且布尔表达式为真时,状态转换才发生。

如果只有监护条件,没有事件说明,则只要监护条件为真,状态转换就发生。

动作表达式是一个过程表达式,当状态转换开始时执行该表达式。

活动(动作) 可以在状态内执行也可以在状态转换(迁移) 时执行。

示例:

1-3、状态图的概念

状态图包括:简单状态、组合状态、转换(事件、动作)。

状态是指对象的生命周期中某个条件或者状态,在此期间对象将满足某些条件、执行某些活动或等待某些事件,是对象执行了一系列活动的结果。

当某个事件发生后,对象的状态将发生变化。

嵌套在另外一个状态中的状态称为子状态 ,含有子状态的状态称为组合状态

转换是两个状态之间的种关系,表示对象将在源状态中执行一定的动作,并在某个特定事件发生而且某个特定的警界(监护)条件满足时进入目标状态。

动作是一个可执行的原子操作,是不可中断的,其执行时间是可忽略不计的。

直接通过进入节点进入状态,通过退出节点可以结束状态。

示例:

状态图,是对系统的动态方面建模 。这些动态方面包括的是一种对象的按事件排序的行为。

当对系统、类、用例的动态方面建模时,通常是反应型对象建模。

1-4、真题

真题1:

并发状态:

真题2:

真题3:

真题4:

真题5:

真题6:

真题7:

二、活动图

2-1、活动图的定义

活动图,是一种特殊的状态图。

展现了在系统内,从一个活动到另一个活动的流程。

专注于系统的动态视图。

2-2、活动图的组成

监护表达式,在活动图中,是和分支在一起的。

(在状态图中是:监护条件)

活动图可以表示为:分支、合并、分岔、汇合。

2-3、区分:状态图、活动图

转换的箭头上有文字(事件),则是:状态图;

转换的箭头上没有文字,则是:状态图;

2-4、通常有两种使用活动图的方式:

1、对工作流建模;

2、对操作建模。

2-5、活动图、状态图的例子

活动图的例子:

状态图的例子:

2-6、真题

真题1:

真题2:

真题3:

真题4:

相关推荐
007php0071 小时前
某大厂跳动面试:计算机网络相关问题解析与总结
java·开发语言·学习·计算机网络·mysql·面试·职场和发展
知识分享小能手2 小时前
微信小程序入门学习教程,从入门到精通,微信小程序核心 API 详解与案例(13)
前端·javascript·学习·react.js·微信小程序·小程序·vue
递归不收敛2 小时前
吴恩达机器学习课程(PyTorch 适配)学习笔记:3.3 推荐系统全面解析
pytorch·学习·机器学习
又是忙碌的一天4 小时前
前端学习 JavaScript(2)
前端·javascript·学习
蒙奇D索大4 小时前
【数据结构】考研数据结构核心考点:二叉排序树(BST)全方位详解与代码实现
数据结构·笔记·学习·考研·算法·改行学it
玲娜贝儿--努力学习买大鸡腿版4 小时前
推荐算法学习笔记(十九)阿里SIM 模型
笔记·学习·推荐算法
光影少年4 小时前
Flutter生态及学习路线
学习·flutter
尤利乌斯.X4 小时前
复杂网络仿真从入门到精通:0 学习路线
网络·学习·matlab·仿真·复杂网络
梦幻精灵_cq5 小时前
70行代码展现我的“毕生”编程能力
学习
Yupureki5 小时前
从零开始的C++学习生活 6:string的入门使用
c语言·c++·学习·visual studio