状态机图(状态活动)_第1页
状态机图(状态活动)_第2页
状态机图(状态活动)_第3页
状态机图(状态活动)_第4页
状态机图(状态活动)_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、状态机图(State machine Diagram),状态(state): 定义对象在其生命周期中的一种条件或状况 比如:满足某些条件、执行某些活动或等待某些事件 例子:灯的开闭、人的梦醒、学生的课上与课下 理解 状态的存在:对象在任何时刻都会处于某种状态之中 状态的转移:事件使对象从一个状态转向另一个状态 当面对所检测到的事件或所接收到的消息时,对象所处的状态不同,做出的反应也不同,状态机图(State machine Diagram),状态机(state machine): 一种逻辑上的流程机 用于描述一个对象在其生命周期中的动态行为 表现对象响应事件所经历的状态序列以及伴随的动作 状态

2、图和活动图用于描述一个状态机(状态机图) 活动图强调了从活动到活动的控制流 状态图强调了从状态到状态的转换,状态图,状态图的作用 描述一个特定对象的所有可能状态 以及由于各种事件的发生,而引起的状态间的转移,状态图,状态图的组成 节点是状态:包括初始状态和终止状态,用圆角矩形表示 关系是转换(或转移):用状态之间包含一些文字描述的有向箭头线表示,状态,状态的几种类型 1.初态和终态 2.中间状态 3.组合状态 4.历史状态,1.初态和终态,初态(Start state) 显示状态图中状态机的执行的开始 一个状态机只能有一个初态,因为每一个执行都是从相同的地方开始的。如果一个状态机用多张图描述,

3、则多张图用同一个初态 嵌套状态中可以使用新的初态 终态(End State) 表示一个最后的或者终端状态 终态的数目可以不确定,2.中间状态,中间状态的组成 1)状态名(Name) 2)进入/退出动作(entry/exit action),2.中间状态,3)内部转换(Internal Transition) 不导致状态改变的转换,不会执行entry和exit动作 语法格式:event 事件名/动作表达式,2.中间状态,4)子状态(Substate) 嵌套在另外一个状态中的状态,2.中间状态,4)子状态(Substate) 嵌套在另外一个状态中的状态,3.组合状态(composite state

4、),含有子状态的状态被称为组合状态 1.顺序组合状态图 2.并发组合状态图,顺序组合状态图,并发组合状态图,在UML2.0中已经废弃了同步状态,4.历史状态(History state),历史状态是一种伪状态 可以存储退出组合状态时所处的子状态,则返回组合状态时可以直接回到相应的子状态,转换的五要素,源状态(Source State):转换激发之前对象所处的状态 目标状态(Target State) :转换完成后对象所处的状态 触发事件(Trigger Event) :引起转换发生的事件 监护条件(Guard Condition) :方括号括起来的布尔表达式,用于决定是否激活转换 动作(Act

5、ion) :转换激活时对象执行的操作,智能水壶的状态图,打开有水/烧水: 打开:触发事件 有水:监护条件 烧水:动作,信用卡状态图,无触发转移,定义: 状态转移不是因为某个事件触发引起的 而是由于对象完成了某些活动,而引起的状态的转变,触发事件的四种类型,信号事件 对象之间通过发送信号和接收信号实现通信 信号是两个对象之间通信的媒介,它是一种异步机制 在计算机中,鼠标和键盘的操作均属于此类事件 对于一个信号而言,对象一般都有相应的事件处理器,如onMouseClick()等 调用事件 调用某个对象的成员方法就是调用事件,它是一种同步的机制。 例如:在烧水器的状态图中,turnOn就是一种调用事

6、件,用来将开关置于“On”状态。,触发事件的四种类型,改变事件 某个指定属性值为真时,事件得到触发。 在对象生命周期内,一直在计算改变事件中的属性值。当属性值为真时,事件触发,计算停止 例如:when(temperature100)/alerm() 时间事件 当时间流逝到某个时刻,触发事件对对象起作用 它可以指定为绝对形式,也可以指定为相对形式。,其他事件,延迟事件(Deferred event) 延迟到下一状态中处理的事件 是一种特殊的事件,它是指该事件不会触发状态的转换,当对象处于该状态时事件不会丢失,但会被延迟执行 例如,当E-mail程序中正在发送第一封邮件时,用户下达发送第二封邮件执

7、令就会被延迟,但第一封邮件发送完成后,这封邮件就会被发送。这种事件就属于延迟事件,转换类型,状态图应用,为对象生命周期建模: 主要描述对象能够响应的事件、对这些事件的响应以及过去对当前行为的影响 为反应型对象建模: 这个对象可能处于的稳定状态、从一个状态到另一个状态之间的转换所需的触发事件,以及每个状态改变时发生的动作 状态机图既可以用来表示一个业务领域的知识,也可以用来描述设计阶段对象的状态变迁,绘制状态机图的步骤,寻找主要的状态 确定状态之间的转换 细化状态内的活动与转换 用复合状态来展开细节,状态图(购物网站),当从状态“结账”和“显示购物车”返回子状态“显示索引信息”时,将进入的是离开

8、时的历史状态。 也就是说,转到购物或结账区之后,再回到“浏览目录”的页面时,其中的内容是不变的,仍保留原来的信息。,状态图(CD播放机),状态图(智能卡系统),阅读状态图,状态图(订单处理1),订单处理 办理发货之前需要检查商品,查看是否齐全。如果缺部分商品,则进入等待状态(直至商品齐全) 货品发出之前,任何时候都可以取消订单,状态图(订单处理2),状态图(订单处理3),状态图(航班预订1),状态图(航班预订2),细化状态内的活动与转换,状态图(航班预订3),使用复合状态,课堂练习,绘制电脑工作时的状态转换图,课堂练习,绘制手机工作时的状态转换图,课堂练习(电梯系统的状态图),电梯开始处于空闲

9、状态(idle),当有人按下按钮要求使用电梯时(事件is required发生),电梯进入运行状态(run)。如果电梯的当前楼层比想要的楼层高时(监护条件currentFloordesiredFloor成立),电梯进入下降状态(moving down);反之,如果电梯的当前楼层比想要的楼层低时(监护条件currentFloordesiredFloor成立),电梯进入上升状态(moving up);如果电梯的当前楼层与想要的楼层相同时(监护条件currentFloor=desiredFloor成立),电梯门打开(door open)。在电梯上升或下降期间,每经过一个楼层就判断监护条件curren

10、tFloor=desiredFloor是否成立,若不成立,继续移动,若成立,就进入停止状态(stop),15秒后,电梯门自动打开(door open),2分钟后,电梯门自动关上(door close),如果有更多的电梯使用要求,进入运行状态(run),反之,则进入空闲状态(idle)。,课堂练习(电梯系统的状态图),带有复杂转换的状态图,补充说明(状态图),适用情况: 适用于描述跨越多个用例的单个对象行为 不适合描述多个对象之间的行为协作 故需与其他技术(类图、对象图)结合使用 注意事项: 不要花费大量时间和精力为系统中的每个类都画对应的状态图 开发人员只关心关键类的行为,只需为这些类建立状态

11、图,帮助理解所研究的问题,活动图(Activity Diagram),概念: 由活动节点和转换流程构成的状态机图 作用: 描述系统或业务的活动序列构成的控制流 用来描述事物或对象的活动变化流程 为系统或业务工作流程和用例实现建模,活动图(Activity Diagram),活动图与流程图: 流程图:表示算法的执行序列、过程、判定点、分支和循环 活动图:支持并行活动,支持多线程编程 活动图的应用: 描述类的操作 描述用例的执行过程 活动图的缺点: 难以清楚地表示对象和动作之间的关系,活动图(Activity Diagram),与状态图的区别 状态图 由某个对象的状态序列组成,以状态为中心 活动图

12、 由某个过程中若干对象的活动序列组成,以活动为中心,活动图(Activity Diagram),组成元素 活动节点 起点和终点(即初态和终态) 中间活动节点 转换流程 转换 分支与合并 分叉与汇合,活动节点,活动节点是活动图中最主要的元素之一,用来表示工作过程中的一个(或多个)工作步骤 表示方法:用一个圆角矩形表示,活动的名称写在圆角矩形内部,活动节点的表示,活动节点,动作状态:原子性的动作或操作的执行状态,不能被外部事件的转换中断 活动状态:非原子性的,可以分解成其他子活动或动作状态,可以从外部中断。可以在图标中给出入口动作和出口动作等信息 组合活动:一种内嵌活动图的状态,用于表示复杂的活动

13、,转换(State Transition),作用:当一个活动结束时,活动控制流马上转向下一个活动节点 表示方法:一条带箭头的直线,转换的表示,分支与合并(决策),程序控制流的三种基本结构:顺序、分支、循环 分支: 用于将一条转换路径分成多个部分,每一部分都有单独的监护条件和不同的结果 当动作流遇到分支时,会根据监护条件的真假来判定动作的流向 注意:分支的每个路径的监护条件应该是互斥的,因此只有一条路径的转换会被激发,分支的表示,条件互斥,分支与合并(决策),合并:两个或者多个控制路径在此汇合的情况,表示从对应分支开始的条件行为的结束 合并和分支都使用菱形表示,且常常成对使用 省略表示分支与合并

14、的菱形不会丢失任何信息,分叉与汇合(同步),分叉与汇合: 都用来表示并发执行的活动 分叉线和汇合线(同步线):都使用加粗的水平线或垂直线段表示 分叉: 一个进入转换,多个离去转换 表明系统从单一的过程变为过个并发的过程,分叉与汇合(同步),汇合: 多个进入转换,一个离去转换 表示系统将结束多个并发过程,再次进入单一的过程 注意:当且仅当所有的并发分支都到达汇合点后,活动流程才能进入下一个活动节点,示例(同步),商品打包与付款两个活动是并行的 即:这两个活动的执行顺序是任意的 可以先后进行 可以同时交叉进行,泳道,泳道技术: 将活动用线条分成一些纵向的矩形,每个矩形属于一个特定的对象或部门 对象

15、的名字放在泳道的顶部 属于该对象的所有活动都被放在泳道的区域内,绘制顺序,方法一: 先确定参与活动的对象 然后分析在整个过程中每个对象的活动 方法二: 先对活动进行全局的分析 再将活动分配各具体的对象 建议: 两种方法各有利弊 根据个人习惯和具体情况而定,分类(1.简单活动图),分类(1.简单活动图),分类(2.标识泳道的活动图),泳道(SwimLane):用于有效地标识每个活动的实施者。 表示方法: 用一条垂直的线将活动分开 每个泳道都有一个唯一的名称 每个活动节点、分支必须只属于一个泳道;而转换,分叉与汇合是可以跨泳道的。,分类(2.标识泳道的活动图),分类(3.标识对象流的活动图),某些

16、活动中,对象与节点活动是紧密相关的: 活动节点创建、删除或输出一些对象 经过活动处理,修改了对象的状态 对象流描述了活动与对象之间的关系,表示了活动使用对象以及活动对对象的影响。 用户可以在活动图中把相关的对象标识出来 标识哪些对象进入活动节点 标识哪些对象从活动节点中输出,分类(3.标识对象流的活动图),注册(活动图),构建活动图,1.业务分析阶段 活动图中每一条泳道表示一个职责单位(个人或部门),每个泳道的执行者体现了职能部门的工作职责、业务范围、部门之间的交互关系 2.系统分析和设计阶段 用活动图对对象的职责进行建模,每一个对象占据一个泳道,而活动是该对象的成员方法 本阶段采用带泳道活动

17、图的情况较少,因为序列图会更好地体现对象间的交互关系。活动图更适合于对复杂用例中的事件流进行建模,课堂练习,一个咨询公司会见新客户时的业务过程: 1、公司业务员打电话给客户确定一个约定 2、如果约定地点是在公司之内,那么公司中的技术人员就要为会面准备一间会议室 3、如果约定地点是公司之外,那么咨询顾问就要用膝上电脑准备一份陈述报告 4、咨询顾问与顾客在约定的时间和地点见面 5、业务员随后给他们准备好会议用纸 6、如果会议产生了一个问题陈述,咨询顾问就根据问题陈述建立一个提案并把该提案发给客户。 请分别建立简单活动图和标识泳道的活动图,1、确定需求用例,系统管理员查看修改员工信息,系统管理员是参

18、与者,其在查看修改员工信息的活动中,共有3个用例: 1.登录:要进入系统,首先要登录。 2.查询员工信息:进入系统后可以选择查询不同员工的信息。 3.修改员工信息:需要修改某些员工的部分信息,比如员工晋升后需要修改的员工的职务和工资信息。,2、确定用例路径,3、绘制完整的活动图,教师查看、修改学生信息,建立“教师查看、修改学生信息”用例的活动图 教师在登录时,系统会验证教师输入的账号、密码、动态码等登录信息。如果验证未通过,则登录失败。 如果验证通过,教师登录成功,并选择需要查询的学生,系统会显示教师选中的学生信息。 教师查看信息后,修改学生信息,修改完成后保存学生信息,这时系统会将修改后的信息保存到数据库。 之后教师退出系统,系统注销教师账号。,教师查看、修改学生信息,远程网络教学系统,系统管理员

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论