状态图(状态机图):表示一个模型元素在其生命期间的情况:从该模型元素的开始状态起,响应事件,执行某些动作,引起转移到新状态,又在新状态下响应事件,执行动作,引起转移到另一个状态,如此继续,直到终结状态。
状态图(状态机)包含以下内容:状态,事件,组合状态
1、状态。
状态名字,进入动作,退出动作,状态中发生的活动(状态内活动,状态向外发送的活动)。
2、事件
使状态发生变化的某时刻发生的动作,或者活动。状态发生转化的条件。
3、组合状态
一个状态内部包含其他状态,成为组合状态,内部被包含的状态被成为子状态。
如果被包含的是一个子状态图,那么该子状态图必须有自己的起始状态和终止状态。
状态图的图符
1、状态:圆角矩形。
2、转换:实线箭头
3、事件:转换说明文字。
4、起始状态:
5、终止状态:
状态图的唠叨
它是对模型元素在系统生命周期内各种状态的描述,其中模型元素就包含对象,类,或者是子系统等。这个范围可大可小。从大方面上看,我们可以把一个系统分成几个子系统,来对系统进行状态的划分,这种情况,我们只是为了了解这个系统有那几个模块,这几个模块之间的相互装换,如果是软件工程开始做项目,那么这份宏观的状态图可能就是给用户或者非开发人员看的;从细处来说,我们可以对系统中某个对象进行状态分析,这就是给开发人员看的,我们必须要从细出分析,考虑全面 ,系统做出来才可靠。总之就是不同需求画不同的状态图,并不是一成不变的,我们要根据具体情况掌握好对状态图或者其他图的粒度。
这是简单的对机房收费系统的两个角度画的状态图。
从宏观上看机房收费系统的状态:空闲,等待操作状态,显示结果状态。
以机房收费系统的某一个查询窗体为对象进行状态分析:主界面 ,通过选择余额查询到余额查询界面,通过输入卡号,开始查询,然后会出现四个状态:卡没有注册,输入不合理,没有该卡记录,显示该卡记录。
初次画图,对状态图理解不到位,请指正,欢迎交流学习。
活动图是一种流程图,用来描述活动的序列,从一个活动到另一个活动的控制流。
活动图的作用:描述用例,描述类的操作。
活动图的构成
必要组成元素:
1、活动:命令的执行,活动的进行。
图符表示:
2、状态:开始状态,结束状态。
图符表示:
3、转移:活动之间,活动与状态之间的转换。
4、判断:对一个动作或者状态进行判断,然后选择要执行的下一步操作。
空形菱形表示
5、同步条:用于并行执行的活动图中。成对出现,并行活动开始和结束都有一跟同步条来表示分歧和汇合。
粗线条表示同步条。
其他组成元素
6、泳道:对活动进行分组。怎么分组——每一个区域都代表特定的类,或者是人,或者是部门责任区。
在含有泳道的活动图中,清晰的表明了每个活动的执行对象。在活动图中每个活动只可以属于一个泳道。
7、对象流
活动图中可以将活动涉及到得对象通过依赖将其连接在状态或者活动上。对象用矩形框表示。
活动图和状态图
活动图和状态图都是状态机的一种表现形式。都是对系统中动态活动进行建模。
两种图的不同:
活动图 | 状态图 |
对一个对象类执行的某一系列活动进行组合描述 | 某一类对象经过不同活动后的状态进行组合描述 |
系统内部的处理流程驱动 | 外部事件的参与 |
活动图和流程图
相似:都是一种流程图。
不同
流程图 | 活动图 |
描述处理过程 | 描述对象的活动顺序 |
控制结构:顺序,分支,循环 | 控制结构:对象的动作行为决定。 |
面向过程 | 面向对象 |
不可以描述并发过程 | 可以描述并发过程 |
机房收费系统示例:
管理员添加和删除管理员的活动图:
查询充值金额活动图:
结账活动图:
一、什么是时序图
序列图表示了系统在参与者互动执行某一个用例期间,系统内部的一群对象的协作情况。一个用例就对应一个时序图。序列图是对系统动态行为进行描述。用于用例分析和设计阶段。
二、对比
1、序列图和协作图
序列图跟协作图相似,两种图传递的意思是一样的。不同的是序列图强调的是消息的传递顺序,它将交互关系表示为一个二维图。纵向是时间轴,横轴是对象,对象的生命周期沿竖线向下延伸。而协作图强调的是系统间的组织结构,重在表现对象的角色,消息的传递顺序不明显。
看示例:
时序图
协作图
2、时序图和类图、用例图
用例图是系统外部对象(参与者)与系统这两大对象之间的互动,而类图是对系统中涉及到得所有对象,进行抽象描述。时序图是参与者和系统进行交互,系统内部对象之间的具体互动实现。SO,时序图关联了类图与用例图,可以通过用例图和类图进行整合。
三、时序图的构成
1、角色:参与者。
角色是类中的用户类,可以直接拖过来用,但是这里的角色应该是脱离系统之外的一个单纯的角色。类中定义的属性和操作可以不考虑。
2、对象:系统内部参与用例的一群对象。
对象的来源
1、类图。
开篇已经说过时序图其实可以是用例图和类图的整合。所以时序图中的对象大部分是已经存在的。
存在哪?在类图中。也就是说时序图中的对象是我们在类中已经创建好的,我们只需要拿来用。还有一点要注意:时序图中用到得是具体的对象,而非类,所以时序图中的对象是类图中类的实例化。
画法:
2、创建
还有一小部分对象是在交互过程中通过消息创建的。
画法:
当然有创建就有撤销:在生命线的末尾打岔。
3、消息:角色,跟对象,对象和对象之间信息的传递。
简单消息:
同步消息:发出消息后等待对方回应后,再去做别的事情。
异步消息::发出消息后无需等待对方回应,可以先去做别的事情。
返回消息:
4、生命线:对象在某一用例中的生命周期。
激活期:生命线上不是虚线的部分,代表对象在某一用例过程中执行某一操作的时间。
PS: 一个用例,可以对应生成一个用例。
参与者对象只能跟边界对象互动。
实体对象不能发送消息给边界对象和控制对象。
如只是对数据增,删,该,查,可以不设置控制对象。
关系:序列图的一群对象来自类图,对象之间的交互来自用例描述。
四、时序图怎么画?
采用BCE(boundary-control-entity patterns)模式绘制时序图。
BCE 模型中将对象分为三类:边界类,控制类,实体类。
边界类:用来隔离系统内外,通常负责接收并响应系统内外消息,参与者与系统对象进行消息传递要通过边界类来实现。
控制类:一个用例会生成一个控制类。用来控制用例执行期间的复杂运算或者业务逻辑。
实体类:系统内部的对象。
他们的排列如下图所示。
步骤:1、找出参与者和添加用例控制类。
2、然后根据用例流程不断对边界类和实体类进行填充。
PS:控制类只有一个,边界类和实体类可以使多个。
分析下来,其实我们的具体实现是在做一道填空题。我们需要向B,C,E三个框中添加对象。
以下是对机房收费系统登陆用例的时序图:
按F5键同时生成的协作图:
修改密码示例:图一个为一次修改成功:
图二为二次修改成功
图二的画法不确定,请指正。
一、什么是协作图?
顾名思义协作图就是合作图,有合作就涉及到多个对象。
协作图(Collaboration Diagram /Communication Diagram,也叫合作图)是一种交互图(interaction diagram),显示某组对象如何为了由一个用例描述的一个系统事件而与另一组对象进行协作的,使用协作图可以显示对象角色之间的组织关系。
二、对比
1、协作图和时序图。
两者表的消息时一样的,只是强调的重点不同。协作图表达的是在实现某个用例期间,对象之间的合作关系,而时序图表达的是对象之间产生合作发生消息的时间顺序。前一篇博客中有不在赘述。
两者可以相互转化。(rational rose 快捷键F5。)
2、协作图和活动图
(1)活动图本质上是一种流程图,每个“活动”可以是某个具体的“事务”,比如审核单据等。用不太严谨的表述来说,活动图是一种粒度比较粗的事件流程图,多在需求阶段使用。
协作图就不一样了,协作图里的基本单元是对象(或者概念类),表达这些对象之间的协作关系,多在设计阶段使用。
(2)活动图是一个具体活动的表示图,有活动起点和活动终点;协作图是对象之间关系的表示图,没有起点和终点 。
三、协作图的构成
时序图跟协作图可以相互转化,不难理解,协作图的构成有角色,对象,连接,消息。具体含义同时序图。
协作图表现的是对象在空间上的联系,所以不存在时序图中的生命线和激活器。
看一下简单的例子。
图一是管理员结账的协作图。
图二是图一转换的时序图