UML分析类、状态图基础和画法
第10章:UML系统分析与设计-状态图
状态图的概念
状态
状态用于对实体在其生命周期中的各种状况进行建模,一 个实体总是在有限的一段时间内保持一个状态。状态由一 个带圆角的矩形表示,状态的描述应该包括:名称、入口 和出口动作、内部转换和嵌套状态。
状态图的概念
转换
• 在UML的状态建模机制中,转换用带箭头的直线表示, 一端连接源状态,箭头指向目标状态。转换还可以标 注与此转换相关的选项,如事件、监护条件和动作等, 如果转换上没有标注触发转换的事件,则表示此转换 自动进行。
要创建状态图,首先要标识出哪些实体需要使用状态图进一步建 模。虽然我们可以为每一个类、操作、包或用例创建状态图,但 是这样做势必浪费很多的精力。一般来说,不需要给所有的类都 创建状态图,只有具有重要动态行为的类才需要。 从另一个角度看,状态图应该用于复杂的实体,而不必用于具有 复杂行为的实体。使用活动图可能会更加适合那些有复杂行为的 实体。具有清晰、有序的状态实体最适合使用状态图进一步建模。 对于聊天系统来说,需要建模的实体就是用户的状态。
从一个状态引出的多个转换可以有同样的触发器事件。若此事 件发生,所有监护条件都被测试,测试的结果如果有超过一个 的值为真,也只有一个转换会激发。如果没有给定优先权,则 选择哪个转换来激发是不确定的。
构成状态图的元素
触发器事件
触发器事件就是能够引起状态转换的事件。如果此事 件有参数,这些参数可以被转换所用,也可以被监护 条件和动作的表达式所用。触发器事件可以是信号、 调用和时间段等。 对应与触发器事件,没有明确的触发器事件的转换称 作结束转换(或无触发器转换),是在结束时被状态 中的任一内部活动隐式触发的。
创建状态图
1. 创建状态图
• 在Rational Rose中,可 以为每个类创建一个或 者多个状态图,类的转 换和状态都可以在状态 图中体现。首先,展开 “Logic View”菜单项, 然后在“Logic View”图 标上单击鼠标右键,在 弹出的菜单中选择 “New”下的 “Statechart Diagram” 选项建立新的状态图。
UML各种图例齐全—用例图、类图、状态图、包图、协作图、顺序图详细说明画法和功能
UML各种图例面向对象的问题的处理的关键是建模问题.建模可以把在复杂世界的许多重要的细节给抽象出.许多建模工具封装了UML(也就是Unified Modeling Language™),这篇课程的目的是展示出UML的精彩之处.UML中有九种建模的图标,即:∙用例图∙类图∙对象图∙顺序图∙协作图∙状态图∙活动图∙组件图∙配置图本课程中的某些部分包含了这些图的细节信息的页面链接.而且每个部分都有一个小问题,测试一下你对这个部分的理解.为什么UML很重要?为了回答这个问题,我们看看建筑行业.设计师设计出房子.施工人员使用这个设计来建造房子.建筑越复杂,设计师和施工人员之间的交流就越重要.蓝图就成为了这个行业中的设计师和施工人员的必修课.写软件就好像建造建筑物一样.系统越复杂,参与编写与配置软件的人员之间的交流也就越重要.在过去十年里UML就成为分析师,设计师和程序员之间的“建筑蓝图”.现在它已经成为了软件行业的一部分了.UML提供了分析师,设计师和程序员之间在软件设计时的通用语言.UML被应用到面向对象的问题的解决上.想要学习UML必须熟悉面向对象解决问题的根本原则――都是从模型的建造开始的.一个模型model就是根本问题的抽象.域domain就是问题所处的真实世界.模型是由对象objects组成的,它们之间通过相互发送消息messages来相互作用的.记住把一个对象想象成“活着的”.对象有他们知道的事(属性attributes)和他们可以做的事(行为或操作behaviors or operations).对象的属性的值决定了它的状态state.类Classes是对象的“蓝图”.一个类在一个单独的实体中封装了属性(数据)和行为(方法或函数).对象是类的实例instances.用例图用例图Use case diagrams描述了作为一个外部的观察者的视角对系统的印象.强调这个系统是什么而不是这个系统怎么工作.用例图与情节紧紧相关的.情节scenario是指当某个人与系统进行互动时发生的情况.下面是一个医院门诊部的情节.“一个病人打电话给门诊部预约一年一次的身体检查.接待员找出在预约记录本上找出最近的没有预约过的时间,并记上那个时间的预约记录.”用例Use case是为了完成一个工作或者达到一个目的的一系列情节的总和.角色actor是发动与这个工作有关的事件的人或者事情.角色简单的扮演着人或者对象的作用.下面的图是一个门诊部Make Appointment用例.角色是病人.角色与用例的联系是通讯联系communication association(或简称通讯communication)角色是人状的图标,用例是一个椭圆,通讯是连接角色和用例的线.一个用例图是角色,用例,和它们之间的联系的集合.我们已经把Make Appointment作为一个含有四个角色和四个用例的图的一部分.注意一个单独的用例可以有多个角色.用例图在三个领域很有作用.决定特征(需求).当系统已经分析好并且设计成型时,新的用例产生新的需求∙客户通讯.使用用例图很容易表示开发者与客户之间的联系.∙产生测试用例.一个用例的情节可能产生这些情节的一批测试用例.类图类图Class diagram通过显示出系统的类以及这些类之间的关系来表示系统.类图是静态的-它们显示出什么可以产生影响但不会告诉你什么时候产生影响.下面是一个顾客从零售商处预定商品的模型的类图.中心的类是Order.连接它的是购买货物的Customer和Payment.Payment有三种形式:Cash,Check,或者Credit.订单包括OrderDetails(line item),每个这种类都连着Item.UML类的符号是一个被划分成三块的方框:类名,属性,和操作.抽象类的名字,像Payment是斜体的.类之间的关系是连接线.类图有三种关系.关联association-表示两种类的实例间的关系.如果一个类的实例必须要用另一个类的实例才能完成工作时就要用关联.在图中,关联用两个类之间的连线表示.dependencies关系.如果另一个的包B改变可能会导致一个包A改变,则包A依赖包B.包是用一个在上方带有小标签的矩形表示的.包名写在标签上或者在矩形里面.点化线箭头表示依赖对象图Object diagrams用来表示类的实例.他们在解释复杂关系的细小问题时(特别是递归关系时)很有用.这个类图示一个大学的Department可以包括其他很多的Departments.这个对象图示上面类图的实例.用了很多具体的例子.UML中实例名带有下划线.只要意思清楚,类或实例名可以在对象图中被省略.每个类图的矩形对应了一个单独的实例.实例名称中所强调的UML图表.类或实例的名称可能是省略对象图表只要图的意义仍然是明确的.顺序图类图和对象图是静态模型的视图.交互图是动态的.他们描述了对象间的交互作用.顺序图将交互关系表示为一个二维图.纵向是时间轴,时间沿竖线向下延伸.横向轴代表了在协作中各独立对象的类元角色.类元角色用生命线表示.当对象存在时,角色用一条虚线表示,当对象的过程处于激活状态时,生命线是一个双道线.消息用从一个对象的生命线到另一个对象生命线的箭头表示.箭头以时间顺序在图中从上到下排列.协作图协作图也是互动的图表.他们像序列图一样也传递相同的信息,但他们不关心什么时候消息被传递,只关心对象的角色.在序列图中,对象的角色放在上面而消息则是连接线.对象角色矩形上标有类或对象名(或者都有).类名前面有个冒号(:).协作图的每个消息都有一个序列号.顶层消息的数字是1.同一个等级的消息(也就是同一个调用中的消息)有同样的数字前缀,再根据他们出现的顺序增加一个后缀1,2等等.状态图对象拥有行为和状态.对象的状态是由对象当前的行动和条件决定的.状态图statechart diagram显示出了对象可能的状态以及由状态改变而导致的转移.我们的模型例图建立了一个银行的在线登录系统.登录过程包括输入合法的密码和个人账号,再提交给系统验证信息.登录系统可以被划分为四种不重叠的状态:Getting SSN, Getting PIN, Validating, 以及Rejecting.每个状态都有一套完整的转移transitions来决定状态的顺序.状态是用圆角矩形来表示的.转移则是使用带箭头的连线表示.触发转移的事件或者条件写在箭头的旁边.我们的图上有两个自转移.一个是在Getting SSN,另一个则在上Getting PIN.初始状态(黑色圆圈)是开始动作的虚拟开始.结束状态也是动作的虚拟结束.事件或条件触发动作时用(/动作)表示.当进入Validating状态时,对象并不等外部事件触发转移.取而代之,它产生一个动作.动作的结果决定了下一步的状态.活动图活动图activity diagram是一个很特别的流程图.活动图和状态图之间是有关系的.状态图把焦点集中在过程中的对象身上,而活动图则集中在一个单独过程动作流程.活动图告诉了我们活动之间的依赖关系.对我们的例子来说,我们使用如下的过程.“通过ATM来取钱.”这个活动有三个类Customer, ATM和Bank.整个过程从黑色圆圈开始到黑白的同心圆结束.活动用圆角矩形表示.。
UML状态图的画法
转移类型:简单转移、自转移、自动转移、复合转移等。
14
事件
事件(event是指某个时刻发生的事情 事件中最常见的是:
信号事件(signal event):从一个对象到另一个对象 的明确的单向信息流动。
购入项目 在店内
entry/ 令store = theStore本店)
弃置项目
租出项目 归还项目
已租出
租出项目
正常 entry/ 令store = null空值) 已出租do/ 每天检查到期时间
超过到期日子
过期 entry/ 通知会员
25
3.4.2 顺序子状态
顺序子状态:子状态是一个一个顺序转移的不是并发存在 的
源状态
目标状态1
源状态1
目标状态2
源状态2
目标状态
30
3.4.4 并发子状态—同步
在并发状态图中一个子状态图中 的子状态常常需要与另一个子 状态图中的子状态的行为同步 在UML中使示(伪状态,放 在分隔子状态的虚线上。
例:建筑住宅的并发状态图。 其中有二个子状态图,分别 代表主体工程施工和水电工程 施工,它们是并行进行的。
历史状态是一个伪状态的图形标记,只能作为组合状态中 的子状态,不能在顶层状态图中使用。
32
3.4.5 历史状态2
活动 停止
恢复
H
暂停
播发
中断
选择
影碟机对象工作的部分状态图
33
3.5 状态图的应用
状态图为一个对象的生命周期建立模型状态图可以表示一 个对象的历史引起一个状态向另一个状态转移的事件,以 及由于状态的转移而引发的动作。
UML-4-状态图
7.3.2 迁移
1. 引发迁移的事件 2. 迁移的文字标签
2. 迁移的文字标签
为了使迁移线有明确的意义,UML提供了由 三部分组成的文字标签来解释该迁移的发生 事件
触发 警戒条件 行为
2. 迁移的文字标签
文字标签的语法可以表示为:
触发[警戒条件]/行为 trigger[guard] / behavior
UML及建模工具
——状态图
State Diagram
7.1 7.2 7.3 7.4 7.5
基于状态的对象行为建模 状态图 状态图的表示方法 案例分析 总结
第7章 状态图(State Diagram)
7.1
基于状态的对象行为建模
对象既有行为又有状态,对象的行为由其状 态决定,对象根据其状态的不同而产生不同 的行为 为了描述对象在状态之间的转变过程中将产 生什么行为,需要捕获对象所有可能发生的 状态
2. 状态内部的活动
Enter Password entry/set echo to star; do/handle and check password exit/set echo normal
图7-7带有活动的状态图
7.3.2 迁移
迁移指从一个状态到另一个状态的瞬间变化 过程 从源状态到目标状态一发生变化,就称发生 了迁移 UML用从源状态到目标状态的带开放式箭头 的实线表示迁移,箭头指向目标状态
7.2
状态图
状态图由状态(State)和迁移(Transitions) 组 成 它的表达方式为:
状态图 = 状态 + 迁移 State Diagram = State + Transitions
7.3
状态图的表示方法
UML中各种图的画法(全)
UML中各种图的画法(全)一、UML中基本的图范畴:在 UML 2 中有二种基本的图范畴:结构图和行为图。
每个 UML 图都属于这二个图范畴。
结构图的目的是显示建模系统的静态结构。
它们包括类,组件和(或)对象图。
另一方面,行为图显示系统中的对象的动态行为,包括如对象的方法,协作和活动之类的内容。
行为图的实例是活动图,用例图和序列图。
二、UML中的类图:1.类图的表示:类的 UML 表示是一个长方形,垂直地分为三个区,如图 1 所示。
顶部区域显示类的名字。
中间的区域列出类的属性。
底部的区域列出类的操作。
在一个类图上画一个类元素时,你必须要有顶端的区域,下面的二个区域是可选择的(当图描述仅仅用于显示分类器间关系的高层细节时,下面的两个区域是不必要的)。
描述:顶部区域显示类的名字。
中间的区域列出类的属性。
底部的区域列出类的操作。
当在一个类图上画一个类元素时,你必须要有顶端的区域,下面的二个区域是可选择的(当图描述仅仅用于显示分类器间关系的高层细节时,下面的两个区域是不必要的)。
·类名:如果是抽象类,则采用斜体·类属性列表:name : attribute type 如 flightNumber : Integer,这是最常见的表达形式n ame : attribute type = default value 如balance : Dollars = 0,这是带有默认值的表达形式·类方法列表:name(parameter list) : type of value returned注意:在业务类图中,属性类型通常与单位相符,这对于图的可能读者是有意义的(例如,分钟,美元,等等)。
然而,用于生成代码的类图,要求类的属性类型必须限制在由程序语言提供的类型之中,或包含于在系统中实现的、模型的类型之中。
2.继承的表示:为了在一个类图上建模继承,从子类(要继承行为的类)拉出一条闭合的,单键头(或三角形)的实线指向超类。
UML类图的绘制步骤与技巧
UML类图的绘制步骤与技巧UML(Unified Modeling Language)是一种用于软件系统建模的标准化语言,其中最常用的一种图形表示方式就是类图。
类图能够清晰地展示系统中的类、属性、方法以及它们之间的关系,是软件开发过程中必不可少的工具。
本文将介绍UML类图的绘制步骤与技巧,帮助读者更好地理解和运用类图。
一、确定系统的需求和范围在绘制类图之前,我们首先需要明确系统的需求和范围。
这包括确定系统中的主要功能、模块和类的关系等。
只有明确了需求和范围,我们才能有针对性地绘制类图,避免过度设计或者遗漏重要的类和关系。
二、识别类和类之间的关系在确定了系统需求和范围之后,我们需要识别系统中的类以及它们之间的关系。
类是指具有相似属性和方法的对象的抽象表示。
在识别类时,我们可以根据系统的功能和需求,将类进行分类,并确定它们之间的关系,如继承、关联、依赖等。
三、绘制类图的基本结构类图的基本结构包括类名、属性和方法。
类名应该清晰地反映类的职责和功能,属性则表示类的特征或状态,方法表示类的行为或操作。
在绘制类图时,我们可以使用矩形框表示类,类名位于框的顶部,属性位于框的中间,方法位于框的底部。
属性和方法可以使用可见性符号表示其访问权限,如"+"表示public,"-"表示private,"#"表示protected。
四、绘制类之间的关系类图中的关系包括继承、关联、依赖、聚合和组合等。
继承关系表示一个类继承另一个类的属性和方法,可以使用带有箭头的实线表示。
关联关系表示两个类之间的关联,可以使用带有箭头的实线表示,箭头指向被关联的类。
依赖关系表示一个类依赖于另一个类,可以使用带有箭头的虚线表示,箭头指向被依赖的类。
聚合关系表示一个类包含另一个类,可以使用带有空心菱形的实线表示,菱形指向被包含的类。
组合关系表示一个类包含另一个类,并且包含的类的生命周期与包含类的生命周期相同,可以使用带有实心菱形的实线表示,菱形指向被包含的类。
UML第13章-状态图-16-17-18
聊天
entry/ 验证密码 exit/ 清空聊天记录 do/ 更改个人信息(密码除外)
UML状态图-转换
转换用带箭头的直线表示,一端连接源状态,箭头指向目 标状态。转换还可以标注与此转换相关的选项,如事件、 监护条件和动作等,如果转换上没有标注触发转换的事件, 则表示此转换自动进行。
• 例如,当一个班人数少于10人的时候需要和其他班合为一班上课,大 于10人则单独上课。
16/48
第13章 状态图
重点内容:
Review 状态图的基本概念 构成状态图的元素 使用Rose创建状态图 创建项目中的状态图
17
构成状态图的元素
状态图由状态、转换、判定、事件等元素组成
事件1
在活动图中,判定可以覆盖所有的可能,保证一些转换被激发。 否则,活动图就会因为输出转换不再重新激发而被冻结。
UML元素-同步
同步条是为了说明并发工作流的分叉与结合。 状态图和活动图中都可能用到同步。在UML中,同步用一条线
段来表示。
状态图的作用
状态图清晰的描述了一个对象的状态之间的转换顺序 清晰的事件顺序有利于开发程序时避免出现事件错序的情况
状态机由状态、转换、事件、活动和动作五部分组 成。
• 在状态机的语境中,一个事件就是一次激发的产生,每个 激发都可以触发一个状态转换。
4
状态机五部分
状态:对象在其生命周期中的一种状况。 转换:两个不同状态之间的一种关系。 事件:促使状态机从一种状态切换到另一种状态。如信号、对象
额度创建和销毁。
去指定楼层
向上升
向一楼移动
到达指定楼层
向下降
到达指定楼层
UML学习——状态图(四)
UML学习——状态图(四)1.什么是UML状态图 UML状态图是描述类对象可能经历的所有状态的模型图,描述了对象基于事件反应的动态⾏为。
显⽰实体根据当时的状态做出具体的动作。
2.UML类图的作⽤。
UML类图的作⽤是研究类对象,⾓⾊,⼦系统或者其他组件之间的实时⾏为。
3.UML状态图的绘制 3.1 状态图的模型组成元素 状态,转换,时间 3.2状态的表⽰法 状态由两部分组成:名称和内部动作 名称:表⽰状态的名字 内部动作:表⽰进⼊或者⾛出此状态的应该执⾏的动作。
内部动作可以分为以下四种类型。
entry:表⽰进⼊该状态时该进⾏的动作。
exit:表⽰退出该状态时该进⾏的动作。
do:表⽰该状态下进⾏的动作。
on:表⽰该状态下,发⽣某件事件时发⽣的动作。
⼀个状态可以包含多个内部动作。
如图: 3.3转换的表⽰法 转换:原状态在满⾜⼀定的条件,或者触发某个事件时,执⾏完内部动作后,转到⽬标状态的过程。
转换包含的元素:原状态,⽬标状态,触发事件,监护条件,执⾏动作。
触发事件:引起状态转换的事件,如:信号,调⽤,时间等。
监护条件:状态转化必须满⾜的条件,是⼀个Boolean值,不同转化的监护条件不同,但是触发事件可以相同。
执⾏动作:⼀组可执⾏语句或者计算处理的过程。
3.4 转换的分类 转换通常分为内部转换,外部转换,完成转换,复合转换四种。
内部转换:不离开状态本⾝,执⾏完动作后依旧在此状态。
外部转换:最常见的转换,状态从原状态转换到⽬标状态、 完成转换:或者叫⾃转换,⽆触发事件。
复合转换:由简单转换组成,通过分⽀判断将简单转换组合起来。
3.5状态的绘制 初始状态:⽤⼀个实⼼圆表⽰,⼀个状态图中只有⼀个 终⽌状态:⽤⼀个包含实⼼圆的空⼼圆表⽰。
⼦状态:有⼦状态的状态称为复合状态。
3.6状态图模型 3.7⼦状态图表⽰。
UML状态图
Agenda
• • • • •
状态和状态机 如何阅读状态机图
如何绘制状态机图
状态机图应用说明 本章小结
本章小结
•
• • •
首先介绍了“状态”的概念和UML表示法,然后引入 了状态机的概念
通过三个例子逐一说明简单状态机图、包含复杂转换的 状态机图以及包含复合状态的状态机图的阅读方法
,紧接着通过一个航班机票预订系统来阐述了状态图的 绘制过程:确定状态,分析状态间的转换,细化活动与 内部转化,通过复合状态来组织 简明地点出状态图的两大功能:对对 象的生命周期建模以及对反应型对象 的行为建模
进入和退出转换来表示
内部转换:用来处理一些不离开该状态的事件 ,不会激 发进入和退出转换。 自身转换:是外部转换的一种,其执行过程是:先离开 该状态,再回到该状态,因此会激发进入和退出转换。
各种转换的区别
活动与延迟事件
•
•
活动:在处于一个状态的同时,对象做着某些工作,并 一直继续到被某个事件中断。格式:do/动作名
状态图
《UML面向对象建模基础》
知识图谱
Agenda
• • • • •
状态和状态机 如何阅读状态机图
如何绘制状态机图
状态机图应用说明 本章小结
Agenda
• • • • •
状态和状态机 如何阅读状态机图
如何绘制状态机图
状态机图应用说明 本章小结
状态、状态表示法及状态机
•
•
状态是指在对象生命周期中满足某些条件、执行某些活 动或等待某些事件的一个条件和状况
而与状态on相关的转换也有两个,如果“水开了”就执 行turnOff,关掉开关;如果烧坏了,就进入了终态了
复杂转换
UML状态图活动图画法和基础PPT教案
教学进程
实例2:一个电子钟的状态图
第24页/共42页
教学进程
2 活动图
2.1 什么是活动图 2.2 活动图的要素 2.3 活动图的用途
2.4 状 态 图 与 活动 图的比 较
第25页/共42页
2.1 什么是活动图
1. 活动图的概念 活动图(activity diagram)是UML的动态视图之一,用 来描述事物或对象的活动变化流程。
第26页/共42页
2.2 活动图的要素
活动
活动流 分劈
泳道Biblioteka 汇合第27页/共42页1 活动
活动(Action): 是活动图主要结点,用两边为弧的条 形框表示,中间填活动名 。
活动分为简单活动和复合活动。 简单活动:不能再分解的活动; 复合活动:可以再分解的复杂活动。
简单活动
复合活动
第28页/共42页
分劈
汇合
第31页/共42页
5 泳道
泳道(swimlane): 是活动图中的区域划分,每一个 泳道代表一个责任区域。一个泳道中包括一组相关活 动。
泳道
第32页/共42页
6 对象流
对象流: 反映活动与对象之间的依赖关系,表示 对象对活动的作用或活动对对象的影响,用依赖关系 表示。
对象流
第33页/共42页
转移用箭头表示,如果没有标注事件,则本转移为 自动转移。
转移
第15页/共42页
2. 转移的类型
2 转移
① 自转移: 源状态和目标状态为同一状态的转移。
自转移
第16页/共42页
② 自动转移: 一个 状态根据本状态的有关情况,自 动触发进入目标状态,在转移上没有事件。
自动转移
③ 条件转移: 通过分支判断所确定的转移。
UML状态图的画法
12
火龙果 整理
3.2.3 初始与终结状态
初始状态:是模型元素的初始状况,代表一个状
态图的起始点,是一个伪状态。初始状态是转移 的初始源,而不能是转移的目标。实心圆表示。
[条件2]/动作2
[条件5]/动作6 [条件6]/动作6
目标状态4
多条件非链式分支
源状态 事件1[条件1 and 条件3]/动作1,动作3 事件1[条件1 and 条件4]/动作1,动作4 事件1[条件2 and 条件5]/动作2,动作5 事件1[条件2 and 条件6]/动作2,动作6 目标状态1 目标状态2 目标状态3 目标状态4
14
火龙果 整理
事件
事件(event)是指某个时刻发生的事情。 事件中最常见的是:
信号事件(signal event):从一个对象到另一个对象 的明确的单向信息流动。 变更事件(change event):是指由满足布尔表达式 而引起的事件。 时间事件(time event):是指在绝对时间上或在某 个时间间隔上发生的事情所引起的事件。
租借店软件系统中的租借项目(录像带、游戏等)状态图
已租出
租出项目 购入项目 租出项目 正常 entry/ 令store = null(空值) 已出租 do/ 每天检查到期时间 [ 超过到期日子 ]
在店内 entry/ 令store = theStore(本店)
归还项目 弃置项目
过期 entry/ 通知会员
火龙果 整理
动态模型vs 静态模型
动态模型描述系统与操作时间和顺序有关的系统 方面、影响更改的事件、事件的序列、事件的环 境以及事件的组织
uml建模第十章-状态机图
例:CD播放器
5
一、状态(state)
2、状态的表示 状态名称 入口动作 出口动作 内部转换 内部活动 可推迟事件
状态示例
6
动作(Action)
可执行的原子计算。 不可中断,其执行时间可忽略不计。
两种特殊动作:
进入动作(entry action):进入某状态时执 行的动作,用“entry/要执行的动作”表示。
47
34
10.3 建立状态机图
1.寻找主要的状态 飞机票有以下4种状态:无预订、部分预订、
预订完、预订关闭。 (1)在刚确定飞行计划时,显然没有任何预订,
且在顾客预订机票之前都将处于“无预订”状态。 (2)对于订座而言,有“部分预订”和“预订完”
两种状态。 (3)当航班快要起飞时,要“预订关闭”。
35
第10章 状态机图
10.1 状态机图概述 10.2 状态机图基本元素 10.3 建立状态机图 10.4 状态机图应用范围
小结
1
10.1 状态机图概述
状态机图用来对系统的动态行为建模; 描述单一对象在其生命期内受各种事件的
影响而发生的状态变化; 状态机图是展示状态与状态转换的图,可
以描述对象的行为,也可以描述用例、协 作和方法甚至整个系统的动态行为。
无预订 部分预订
预订完 预订关闭
退订()事件发生 后,使预订人=0 不直接转换
无转换
预订()
退订() 无转换
不直接转换 关闭()
预订(), 无空座
关闭()
关闭()
无转换
37
10.3 建立状态机图
确定了状态之间的有效转换,绘制出相应的状态机 图,如图10-18所示。
38
UML的状态图图解及应用
状态图可以帮助理解系统的行 为和状态转换过程
状态图可以用于描述系统的动 态行为和状态转换关系
状态图的组成
状态:表示系统在某个时间点的状态
动作:状态转换过程中执行的操作
转换:表示系统从一个状态到另一个状 态的变化
事件:触发状态转换的条件
监护条件:状态转换的附加条件
状态图:表示系统状态和状态转换的图 形表示
UML的状态图图解及应用
汇报人:XX
UML状态图的概述 UML状态图的图解 UML状态图的应用场景 UML状态图的实践案例 UML状态图的优缺点
UML状态图的发展趋势和未来展望
UML状态图的概述
状态图的定义
UML状态图是一种描述系统状 态和状态转换的图形工具
状态图描述了系统在不同状态 下的行为和转换关系
添加标题
添加标题
添加标题
添加标题
技术融合:与其他建模技术相结合, 如BPMN、SysML等
标准更新:UML标准不断更新,以 适应新的技术和应用需求
未来展望
应用领域:UML状态图将在软件开发、系统设计等领域得到更广泛的应用
技术发展:随着人工智能、大数据等技术的发展,UML状态图将更加智能化、高效化
标准制定:UML状态图将逐渐成为国际标准,为软件开发提供更统一的规范
转换的表示
转换:从一个状态到另一个状态的变化 转换条件:触发转换的事件或条件 转换动作:在转换过程中执行的操作 转换目标:转换后的目标状态
动作的表示
动作名称:在箭头上方或下 方标注动作名称
动作表示:使用箭头表示动 作,箭头指向目标状态
动作条件:在箭头上方或下 方标注动作条件
动作结果:在箭头上方或下 方标注动作结果
业务过程建模
UML状态图的画法讲解
终结状态:是模型元素的最后状态,代表一个状 态图的终止点,是一个伪状态。终结状态是转移 的最后目标,而不能是转移的初始源。牛眼表示。
13
火龙果 整理
3.3 转移(迁移)[1]
转移:用实箭线表示,箭尾连接出发状态,即源状态,箭头连接到 达状态,即目标状态。在箭线上可以标示与该转移有关的选项:事 件、保护(警戒)条件和动作。
6
火龙果 整理
3.1 状态机[2]
状态机用于对一个模型元素建立行为模型,该模型元素通 常是一个对象类,也可以是一个子系统,甚至整个系统。 在UML中状态机用状态图可视化表示。
状态图:状态的节点、转移的弧、事件等组成。
源状态
事件
目标状态
7
火龙果 整理
在UML中,对一个对象(模型元素)的行为建模时,所选择的该对 象的生存期中的状态数量是有限的,对象处于每个状态的持续时间 也是有限的。当发生某个事件,或完成某个动作,都会触发状态的 转移。
8
火龙果 整理
状态举例
状态指的是对象的状态。例如: 发票(对象)被支付(状态) 小车(对象)正在停着(状态) 发动机(对象)正在工作(状态) 电灯(对象)开着(状态)
事件[警戒条件]/动作 源状态 目标状态
当处于源状态的对象接收到一个事件,并且保护条件得到满足时 (如果有的话),则执行相应的动作,并从源状态转移到目标状态。 当发生一个转移时,该转移进入的状态为活动状态,它将执行相应 的动作。当发生一个转移离开一个状态时,该状态变为非活动状态。
主要内容
1. 状态机
2. 状态
3. 转移
4. 组合状态 5. 状态图的应用
UML-07-状态图
时间事件
An event that denotes the satisfaction of a time expression, such as the occurrence of an absolute time or the passage of a given amount of time after an object enters a state. 时间事件用关键字after或when表示。
专题一:UML概述 专题二:面向对象基础与UML的组成
专题三:类图、对象图、包图 专题四:用例图 ★讨论课 专题五:交互图(顺序图、协作图) 专题六:活动图
二、UML模型图
ቤተ መጻሕፍቲ ባይዱ
专题七:状态图
专题八:部署图与配置图 ★讨论课 专题九:统一过程和迭代开发 专题十:正向工程与逆向工程
一个事件是对一个在时间和空间上占有一定 位置的有意义的事情的详细说明。 事件产生的原因包括:调用、满足条件的状 态的出现、到达时间点或经历某一时间段、 发送信号等。 An event is the specification of a noteworthy occurrence that has a location in time and space.
例:
信号事件
An event that is the receipt by an object of a signal sent to it, which may trigger a transition in its state machine. 信号事件的语法格式和调用事件一样。 是一个异步事件,调用事件一般是一个同步事件。 例:可以将信号(或异常)建模为构造型化的类。下图用一个 构造型为send的依赖来表示一个操作发送了一个特定的信号。
如何使用UML状态图进行系统建模与分析
如何使用UML状态图进行系统建模与分析UML(Unified Modeling Language)状态图是一种用于系统建模与分析的工具。
它能够帮助软件工程师和系统分析师更好地理解和描述系统的行为和状态转换。
本文将介绍如何使用UML状态图进行系统建模与分析,以及它的重要性和应用场景。
一、UML状态图的基本概念UML状态图是一种描述对象在其生命周期中各种状态和状态转换的图形化表示方法。
它由状态、转换、事件和动作等元素组成。
1. 状态(State):表示对象在某一时刻的特定情况或属性。
状态可以是离散的,如“打开”、“关闭”等,也可以是连续的,如“运行中”、“停止”等。
2. 转换(Transition):表示对象从一个状态转变到另一个状态的过程。
转换可以由事件触发,也可以由条件控制。
3. 事件(Event):触发状态转换的外部或内部事件。
事件可以是用户的操作、系统的响应或者时间的变化等。
4. 动作(Action):在状态转换过程中执行的操作。
动作可以是改变对象属性、调用方法或发送消息等。
二、使用UML状态图进行系统建模与分析的步骤使用UML状态图进行系统建模与分析可以帮助我们更好地理解系统的行为和状态转换,从而更好地设计和实现系统。
下面是一些使用UML状态图进行系统建模与分析的步骤:1. 确定系统的关键对象和其状态:首先要确定系统中的关键对象,然后确定每个对象可能的状态。
例如,一个电梯系统中的关键对象可以是电梯,它的状态可以是“开门”、“关门”、“上行”、“下行”等。
2. 绘制状态图:在状态图中,使用矩形表示状态,使用箭头表示状态之间的转换。
在状态之间的转换上标注事件和条件。
在状态图中可以添加动作,表示状态转换过程中执行的操作。
3. 分析状态转换:分析每个状态之间的转换条件和事件,确定状态转换的触发条件和动作。
例如,在电梯系统中,当电梯处于“开门”状态时,如果检测到有人进入电梯,则触发状态转换到“关门”状态。
UML分析类、状态图基础和画法
•举例:MiniLibrary系统中的用例“登录”
–如果不同用例包含的任务之间存在着比较密切的联系,则 这些用例可以使用一个控制类,其目的是复用相似部分以便 降低复杂性。
•通常情况下,应该按照一个用例对应一个控制类的方法识别出多个控 制类,再分析这些控制类找出它们之间的共同之处。
分析类的类型
–实体类:表示系统存储和管理的永久信息 –边界类:表示参与者与系统之间的交互 –控制类:表示系统在运行过程中的业务控制逻辑
实体类
实体类
–描述必须存贮的信息及其相关行为 –通常对应现实世界中的“事物”
实体类与数据库中的表对应,类的实例对应于表中的一条 记录;类中的属性和记录中的字段对应。
–在自然语言描述中,名词可以对应类、属性或同义词等多 种类型,开发人员需要花费大量的时间进行筛选。
思考:如何识别MiniLibrary的实体类?
MiniLibrary:识别实体类
定义交互行为
交互图可以将用例和分析对象联系在一起,实现将 用例的行为分配到所识别的分析类中,并且帮助开 发人员发现和补充前面遗漏的分析类。
检查分析模型
检查“完整性”
–每一个分析类都是用例需要的吗?它在什么用例中被创建、 修改和删除?是否存在边界类可以访问它?
–每一个属性是在什么时候设置的?其类型是什么?它是限定 词吗?
–每一个关系是在什么时候被遍历?为什么选定指定的重数? 一对多和多对多的关系能被限定吗?
–每一个控制类对象是否有必要访问参与用例的对象?
2、基于用例的分析建模
• 识别分析类 • 定义交互行为 • 建立分析类图 • 检查分析模型
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
识别分析类
识别实体类
–实体类通常是用例中的参与对象,对应着现实世界中的 “事物”
识别分析类
识别实体类应当注意的问题
–实体类的识别质量在很大程度上取决于分析人员书写文档 的风格和质量; –自然语言是不精确的,因此在分析自然语言描述时应该规 范化描述文档中的一些措辞,尽量弥补这种不足; –在自然语言描述中,名词可以对应类、属性或同义词等多 种类型,开发人员需要花费大量的时间进行筛选。
MiniLibrary:识别边界类
识别分析类
识别控制类
–控制类负责协调边界类和实体类,通常在现实世界中没有 对应的事物。 –一般来说,一个用例对应一个控制类。
识别分析类
识别控制类应当注意的问题
–当用例比较复杂时,特别是产生分支事件流的情况下,一 个用例可以有多个控制类。 –在有些情况下,用例事件流的逻辑结构十分简单,这时没 有必要使用控制类,边界类可以实现用例的行为。
–描述一个用例所具有的事件流控制行为 –实现对用例行为的封装,将用例的执行逻辑与边界和实 体进行隔离 控制类是控制系统中对象之间的交互,通常每个用例都是一 个控制类。
控制类的UML表示
课堂作业
图中的实体类为: 图中的控制类为: 图中的边界类为:
内容提纲
1、面向对象分析概念
•
•
分析类:边界类、控制类、实体类 用例实现 识别分析类 定义交互行为 建立分析类图 检查分析模型
补充用例描述
补充用例描述
–为了发现分析类,有必要补充说明系统的内部行为,即系 统内部必须做什么才能响应外部的要求。 –可能的情况
•用例描述的内容足够充分,不用补充直接可用; •现有事件流中没有明确定义系统内部应该执行的行为,直接在现有用 例描述中作出补充行为; •独立于原始用例描述系统的内部行为。
•举例:MiniLibrary系统中的用例“登录”
–如果不同用例包含的任务之间存在着比较密切的联系,则 这些用例可以使用一个控制类,其目的是复用相似部分以便 降低复杂性。
•通常情况下,应该按照一个用例对应一个控制类的方法识别出多个控 制类,再分析这些控制类找出它们之间的共同之处。
MiniLibrary:识别控制类
分析类的类型
–实体类:表示系统存储和管理的永久信息 –边界类:表示参与者与系统之间的交互 –控制类:表示系统在运行过程中的业务控制逻辑
实体类
实体类
–描述必须存贮的信息及其相关行为 –通常对应现实世界中的“事物” 实体类与数据库中的表对应,类的实例对应于表中的一条 记录;类中的属性和记录中的字段对应。
思考:如何识别MiniLibrary的实体类?
MiniLibrary:识别实体类
定义交互行为
交互图可以将用例和分析对象联系在一起,实现将 用例的行为分配到所识别的分析类中,并且帮助开 发人员发现和补充前面遗漏的分析类。
MiniLibrary:“登记借书”基本 流
MiniLibrary:“登记借书”基本 流
实体类的UML表示
边界类
边界类
–描述外部的参与者与系统之间的交互 –类型:用户界面、系统接口、设备接口 边界类是系统的用户界面,直接跟系统外部参与者交互,与 系统进行信息交流。如网上购物系统中登陆子功能里的登录 页面(login.html或index.jsp)
边界类的UML表示
控制类
控制类
–找出分析类之间的关关系,并通过泛化实现复用。
MiniLibrary:分析类图
检查分析模型
检查“正确性”
–用户是否可以理解实体对象的术语表? –抽象类与用户层次上的概念对应吗? –所有的描述都与用户定义一致吗? –所有的实体类和边界类都使用具有实际含义的名词短语吗? –所有的用例和控制类都使用具有实际含义的动词短语吗? –所有的异常情况都被描述和处理了吗? –是否描述了系统的启动和关闭? –是否描述了系统功能的管理?
检查分析模型
检查“完整性”
–每一个分析类都是用例需要的吗?它在什么用例中被创建、 修改和删除?是否存在边界类可以访问它? –每一个属性是在什么时候设置的?其类型是什么?它是限定 词吗? –每一个关系是在什么时候被遍历?为什么选定指定的重数? 一对多和多对多的关系能被限定吗? –每一个控制类对象是否有必要访问参与用例的对象?
2、基于用例的分析建模
• • • •
分析建模过程
理解用例模型
–理解用例模型和词汇表,适当补充系统内部情况的描述
识别分析类
–找出可能的能够执行用例行为的分析类
定义交互行为
–将用例行为分配到分析类中
建立分析类图
–确定分析类的关键属性和责任,定义分析类之间的关系
检查分析模型
示例:MiniLibrary
注意:没有必要规定系统的哪些部分完成哪些特定 任务。
MiniLibrary:补充用例描述
举例:“登记还书”用例
识别分析类
识别边界类
–通常,一个参与者与一个用例之间的交互或通信关联对应 一个边界类。
识别分析类
识别边界类应当注意的问题
–边界类应关注于参与者与用例之间交互的信息或 者响应的 事件,不要描述窗口组件等界面的组成元素; –在分析阶段,力求使用用户的术语描述界面; –边界类实例的生命周期并不仅限于用例的事件流, 如果两 个用例同时与一个参与者交互,那么它们有可能 会共用一个边界类,以便增加边界类的复用性。
分析类、分析模型
1、面向对象分析概念
•
分析类:边界类、控制类、实体类
2、基于用例的分析建模
•
•
• •
识别分析类 定义交互行为 建立分析类图 检查分析模型
分析类
分析类的概念
–在分析模型中,分析类是概念层次上的内容,用于描述系 统中较高层次的对象。 –分析类直接与应用逻辑相关,而不关注于技术实现的问题。
检查分析模型
检查“一致性”
–类或用例有重名吗? –具有相同名字的实体表示相同的现象吗? –所有的实体都以同样的细节进行描述吗? –是否存在具有相同属性和关系却不在同一继承层次的对象?
检查“可行性”
–系统中有什么创新之处?建立了什么计划或原型来确保这 些创新的可行性? –性能是否符合可靠性需求?这些需求是否已被运行在指定 硬件上进行原型验证?
MiniLibrary:分析类
将“登记还书”用例行为分配到相应的分析类之后, 系统的一些分析类具有相应的职责
建立分析类图
定义关系
定义属性
–按照一般常识,找出对象的某些属性; –认真研究问题域,找出对象的某些属性; –根据系统责任的要求,找出对象的某些属性; –考虑对象需要系统保存的信息,找出对象的相应属性; –对象为了在服务中实现其功能,需要增设一些属性; –识别对象需要区别的状态,考虑是否需要增加一个属性来 区别这些状态; –确定属性表示整体与部分结构和实例连接。