UML讲义10-状态机图
- 格式:ppt
- 大小:1.48 MB
- 文档页数:65


面对目前大学生日益懒惰的现象,某企业计划开发一套针对大学食堂的网上自动订餐、派送、支付等功能的电子商务系统。具体包括(但不限于):
1、任何人均可实名注册并登录系统;
2、当日菜品浏览和订餐;
3、可实时浏览订单状态。如果尚未配送,可撤销菜单;
4、授权人员进行配送并更新状态;
5、支付方式可以是货到付款,可以是从订餐者个人校园卡中扣除(如果余额不足则支付和订餐失败),也可以是其他方式;
6、正常结束和异常结束;
7、系统可实现整体的查询和统计分析功能。
状态机图
说明:用户首先要注册账号,第一个状态为注册状态,在此状态中系统要检测用户名与密码是否符合规范,不符合则不合格(注册失败),否则合格(注册成功)。注册成功后用户要登陆(登陆状态),同时系统要检测用户名是否存在并且与密码匹配,若匹配则登陆成功,否则登陆失败。登陆成功之后进入菜品界面(菜品浏览状态),这时系统检测用户是否订餐,若为订餐,停留在此状态,若订餐,进入订餐状态,此时系统提示用户选择支付方式,提供货到付款与校园卡支付两种支付手段。若用户选择校园卡支付,系统要检测校园卡余额,若余额不足,订餐失败,否则订餐成功(订餐成功状态)。在此状态下用户可查询订单状态,若订单未配送,系统检测用户是否取消订单,若取消,希尔进入订单取消状态,否则返回上一状态。
UML 2.0共有10种图,分别为表示系统静态结构的静态模型(包括类图、组合结构图、部署图),以及表示系统动态结构的动态模型(包括用例图、序列图、对象图、协作图、状态图、活动图、组件图),它们各用以表现不同的视图,如表1-1所示。
名 称 视 图 主 要 符 号
组合结构图(composite-structurediagram) 表现结构(架构)性需求,主要包括Part、Port、接口和链接(Link) 展示了实现构件的内部部件、连接件和端口。当实例化构件时,也实例化了其内部部件的副本。 Part、Port、接口、链接
关系
用例图
(use case diagram) 表现功能需求,主要包括用例和参与者 用例、参与者、关联关系
类图
(class diagram) 表现静态结构,主要包括一群类及其间的静态关系
展示了一组类、接口、协作以及它们之间的关系。在面向对象系统建模中类图是最常用的图。用类图说明系统的静态设计视图。包含主动类的类图用于表达系统的静态交互视图。 类、关联关系、泛化关系
依赖关系
泛化关系
聚合关系
序列图(sequence
diagram) 表现一群对象依序传送消息的交互状况 对象、消息、活动期
对象图
(object diagram) 表现某时刻下的数据结构,主要包括一群对象及其间拥有的数据数值。展示了一组对象以及它们之间的关系。用对象图说明在类图中所发现的事物的实例的数据结构和静态快照。对象图也像类图那样表达系统的静态设计视图或静态交互视图,但它是从现实或原型方面来观察的。 对象、链接、消息
协作图
(collaboration
diagram) 表现一群有链接的对象传送消息的交互状况 对象、链接
状态图
(statechart
diagram) 表现某种对象的行为,主要呈现一堆状态因事件而转换的状况 状态、事件、转换、动作
第8章 面向对象分析
195 体建模。 ② 考虑是否为重要的业务的履行者建立一个泳道。 ③ 建立初始状态和终止状态,并识别该业务过程的前置条件和后置条件。 ④ 从初始状态开始,说明随着时间发生的动作,并在活动图中表示它们。 ⑤ 如果涉及重要的对象,则把它们也加入到活动图中。如果有必要,可展示对象的属性值和状态。 ⑥ 连接这些动作的控制流和对象流。 如果需要,使用分支和合并来描述条件路径和迭代,使用分岔和汇合来描述并发的动作流。 ⑦ 若动作较为复杂,则它可调用一个活动,在该活动中描述其细节。 由于业务过程所描述的功能有些是要由软件系统来完成的,若针对这样的功能建立了活动模型,也可以说是对软件系统的(局部)功能建立了活动模型。 (2)对操作建模 用活动图对操作建模是指把活动图作为流程图来对操作的算法细节建模。与传统的流程图不同的是,活动图能够展示并发。 在OOA阶段,仅用活动图对关键的复杂操作进行建模。除非想直接从模型自动生成代码,即使在OOD阶段也并不要求用活动图对每个操作的算法都建立模型。 对一个操作建模时,应遵循如下策略。 ① 收集该操作所涉及的事物,包括操作的参数、可能的返回类型、它所属于的类以及与之相关的类的特征。 ② 识别操作的前置条件和后置条件以及操作所属的类在操作执行期间必须保持的不变式。 ③ 从该操作的初始状态开始,按照时间顺序设立动作。 ④ 如果需要,使用分支和合并来描述条件路径和迭代。 ⑤ 仅当这个操作属于主动类时,才在必要时用分岔和汇合来描述并发的控制流。 8.3.3 状态机图 在现实世界中的事物通常都有自己的生命周期。通过对它们的观察,可以得出如下结论。 ① 大多数事物在其生命周期中经历了不同的状态,且这些状态是通过对现实的理解(建模)而定义的。 ② 一个事物在各时期内所处的状态是明确的。 ③ 在一个状态内,事物要完成一定的任务。 ④ 在现实世界存在着引起事物的状态发生变化的事件。 ⑤ 事物在其状态间按次序转化。 ⑥ 事物从一个状态到另一个状态的转化通常是即时的。 ⑦ 当事件发生时,事物可能需要采取一些动作。 在对现实世界建模时,并不是要对所有的事物都要进行状态考察,只是要对这样的事物进行状态考察:它满足上述条件,且需要通过状态分析对其复杂性进行深刻地认识。 1.概念与表示法 状态机图描述了一个对象在其生命期内因响应事件所经历的状态序列以及对这些事件所做出的反应。状态机图主要是由状态和状态间的转移构成的,在讲述这两个概念之前,首先讲述与二者密切相关的一个概念:事件。 软件工程
状态机图
1. 概述
状态机图(State Machine Diagram)是用来显示状态机的图,包括简单状态、转换和嵌
套的复合状态等,一个典型的状态机图如图1所示:
图1. 状态机图
2. 基本表示符号
状态机图的基本元素包括:状态、转移、事件、伪状态和复合状态。
2.1状态(State)
状态是对象生命周期中的一个条件或形态。状态由对象的属性值、与其他对象的关系以
及正在执行的活动来确定。在UML中,状态用圆角矩形和状态名表示,初始状态用实心圆
表示,终止状态用牛眼表示,如图2所示:
图2. 状态 状态可以有一个或多个分栏,这些分栏是可选的,包括名称分栏、嵌套区域、内部转换
分栏等,如图3所示:
图3. 带分栏的状态 状态也可用圆角矩形上带有状态名称标签的方框表示,如图4所示:
Enter Password+ entry / reset+ exit / test+ digit / handleCharacter+ clear / reset+ help / displayHelp+ print / defer+ do / suppress echo
图4. 带有名称标签符号的状态
2.2 转移(Transaction)
转移表示状态之间可能的路径,可以表示外部转换(用箭头表示),也可以表示内部转
换(嵌套在状态内部)。如图5所示:
图5. 转移
2.3 事件(Event)
事件是对,在特定时间和空间上,所发生的有意义的事情。在状态机中,事件触发转移,
事件或者显示在转换之上,或显示在状态以内。共有四种类型的事件:信号事件、调用事件、
时间事件、改变事件。
信号用于对象间异步传递的信息包,它没有任何操作,只有自身携带的信息。信号事件
是通过信号来触发的事件,在UML中,信号如图6所示:
图6. 信号 调用事件是请求在类语境的实例上调用特定的操作,在UML中,调用事件如图7所示:
图7. 调用事件
时间事件用关键字after表示,说明事件被触发的临界时间。改变事件用关键字when