对象建模技术-状态图_第1页
对象建模技术-状态图_第2页
对象建模技术-状态图_第3页
对象建模技术-状态图_第4页
对象建模技术-状态图_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

1、1第三章第三章 架构建模架构建模 3.1 状态图 2本章目标本章目标 掌握状态图的基本概念; 了解状态图建模方法; 掌握类的基本抽象方法; 掌握关系的基本概念; 掌握交互图的基本概念; 了解交互图的建模方法。3章节安排章节安排 3.1 状态图 3.2 类 3.3 类的关系 3.4 交互图4本节目标本节目标掌握掌握事件事件的基本概念及如何描述事件的基本概念及如何描述事件掌握的掌握的状态状态基本概念及如何描述状态基本概念及如何描述状态掌握的掌握的转换转换基本概念及如何描述转换基本概念及如何描述转换掌握如何绘制掌握如何绘制状态图状态图 任务任务 1. 完成图书业务模块中借书用例的状态图;完成图书业务

2、模块中借书用例的状态图; 2. 完成图书业务模块中还书用例的状态图。完成图书业务模块中还书用例的状态图。 5项目引入项目引入 HNS软件学院开发部在对图书馆管理系统需求建模后,进入到系统分析和概要设计阶段。在该阶段中,将在需求模型的基础上,对系统进行静态建模以及动态建模,最后构建出图书馆管理系统的软件架构。这主要体现在对系统中对象进行抽象成类,进而对类间的相互关系进行建模,而系统内部行为建模则是由交互图进行描述。因此,指派您在学习完本章内容的前提下对系统进行概要设计建模。 63.1.1 事件事件 (Event) 事件事件:它表示对一个在时间和空间上占据一定位置的有意义的事情的规格说明 。 事件

3、事件:也就是指发生的且引起某些动作执行的事情。例如,当你按下电视机上的Power按钮时,电视开始播放。其中“按下Power按钮”就是事件,而事件引起的动作就是“开始播放”。73.1.1 事件事件 (Event) 事件可以是内部的事件或外部的事件 外部事件是在系统和参与者之间传送的事件。 内部事件是在系统内部的对象之间传送的事件。 事件可以分成多种类型: 信号 调用事件 变化事件 时间事件 8信号 信号(信号(Signal):):是作为两个对象之间通信媒介的命名的实体,信号的接收是信号接收对象的一个事件。 信号和简单的类有许多共同之处,同样信号也可以有实例。信号还可以包含在泛化关系中。同样信号可

4、以像类一样,有属性和操作。例如计算机设备的中断信号就是一般的信号,而键盘中断信号就是特殊的信号。 9信号 信号可以在类图中被声明为类,并用关键字signal表示,信号的参数被声明为属性。 在UML中,可以将信号建模为构造型化的类。用构造型为Send的依赖关系来表示一个操作发送了一个特定的信号。 10信号 信号间可以有泛化,信号可以是其他信号的子信号,它们继承父信号的属性,并可以触发包含信号类型的转换。 示例:11调用事件 调用事件(调用事件(Call Event)是指一个对象对操作)是指一个对象对操作调用的接收调用的接收。 接收的类可以选择将操作实现为一个方法或实现为状态机里的一个调用事件触发

5、器。 信号是一个异步事件,而调用事件一般来说是同步的。也就是说,当对象调用另一对象的操作时,控制就从发送者传送到接收者,该事件触发转换,完成操后,接收者转换到一个新的状态,控制返还给发送者。 12调用事件 示例3.1.1 如图未验证图书的状态已验证图书的状态searchBook(name)13变化事件 变化事件(change event)是指依赖于指定属性值的布尔表达式得到满足。这是一种一直等待直到特定条件被满足的声明方式。 在UML中,用关键字When,后面跟随布尔表达式来对一个变化事件建模。你可以用表达式来标记一个绝对时间(如:When time10:00),或对表达式作不间断地测试(如w

6、hen altitude 1000)。 14变化事件 示例示例3.1.2 如图暂停打印机when( 打印机缺纸 ) / printTest()打印15时间事件 时间事件(Time event)是表示一段时间推移的事件。 在UML中,用关键字after,后面跟着计算一段时间的表达式来对时间事件建模。表达式计时的基准,默认为进入当前状态的时间为基准。 16时间事件 示例示例3.1.3 如图打印就绪打印after (2 seconds)/connectionPrint()173.1.2 状态状态 状态(状态(State)是指在对象的生命周期中满足某)是指在对象的生命周期中满足某些条件、执行某些活动或

7、等待某些事件时的一些条件、执行某些活动或等待某些事件时的一个条件或状况个条件或状况。 例如,打印机printer在工作时可能有6种状态:“就绪”(Ready),“打印”(Print),“缺纸”(Lack paper),“忙”(Busy),“暂停”(Pause)和“停止”(Stop)。这里具体的打印机在UML中就表示为对象,而它工作时可能出现的状态则是状态图中的状态。 18状态的组成部分状态的组成部分1名称名称(name) 是可以把该状态和其他状态区分开的字符串;状态也可能是匿名的,即没有名称。2进入进入/退出动作退出动作(entry/exit action) 分别指进入和退出这个状态时所执行的

8、动作。3内部转换内部转换(internal transition) 不会导致状态改变的转换。4子状态子状态 (substate) 主要是在状态的嵌套结构中,包括不相交(顺序活动)或并发(并发活动)子状态。5延迟事件延迟事件 (deferred event) 是指在该状态下暂不处理,但将推迟到该对象的另一个状态下排队处理的事件列表。 19状态示例状态示例 示例示例3.1.4 如图203.1.3 转换转换 转换转换是两个状态间的一种关系,表示对象将在当前状态中执行动作,并在某个特定事件发生或某个特定的条件满足时进入后继状态。 在转换激活之前,称对象处于源状态; 激活后,就称对象处于目标状态。 例如

9、,当像“获取时间片”这样的事件发生时,程序可能从“就绪”状态转换到“运行”状态。 21转换的组成部分转换的组成部分1.源状态(source state) 即受转换影响的状态;如果对象处于源状态,当该对象接收到转换的触发事件或满足监护条件(如果有)时,就会激活一个转换。2.事件触发(Event trigger) 是一个事件,源状态中的对象接收这个事件使转换合法地激活,并使监护条件满足。例如,将Mouse(鼠标)作为触发器,那么接收到RightMouseButton也可以触发这个转换(如图3.1.2)。 22转换的组成部分转换的组成部分3. 监护条件(guard condition) 是一个布尔表

10、达式,当触发器事件被触发时才对这个布尔表达式求值; 如果表达式取值为真,则激活转换;为假,则不能激活转换,而且如果没有其他的转换被此事件所触发,则该事件丢失。 事件能够触发多个转换离开当前状态。每个转换必须具有不同的监护条件。 4.动作(Action) 动作是可执行的一个原子计算,它可以直接的作用于拥有状态机的对象,也可以间接作用于那些可见的其他对象。 当转换被引发时,它对应的动作被执行。它一般是一个简短的计算处理过程,通常是赋值操作或算术计算。 23转换的组成部分转换的组成部分 5.目标状态(target state) 转换完成后的活动状态。示例示例3.1.5 243.1.4 状态图状态图

11、状态图(Statechart Diagram)是UML中对系统的动态方面进行建模的五种图之一。状态图显示了状态机。 活动图是状态图的一个特例,状态图中的多数状态是活动状态,而且所有或多数转换是由源状态中的活动完成所触发的。 活动图显示的是从活动到活动的控制流,状态图则显示的是从状态到状态的控制流。 25状态图的用途状态图的用途状态图用于对系统的动态方面建模。动态方面是指出系统体系结构中任一对象按事件排序的行为,这些对象可以是类、接口、构件和节点。26状态图的建模技术的策略状态图的建模技术的策略 2-1(1) 选择状态机的语境(即建模对象),不管它是类、用例或是整个系统;(2) 选择这个对象的初

12、态和终态。为了指导模型的剩余部分,可能要分别地说明初态和终态的前置条件和后置条件;(3) 考虑对象可能在其中存在一段时间的条件,以决定该对象所在的稳定状态。从这个对象的高层状态开始,然后考虑它的可能的子状态;(4) 在对象的整个生命周期中,决定稳定状态的有意义的顺序;27状态图的建模技术的策略状态图的建模技术的策略 2-2(5) 决定可能触发从状态到状态的转换的事件。将这些事件建模为触发者,它触发从一个合法状态序列到另一个合法状态序列的转换;(6) 把动作附加到这些转换上,并且附加到这些状态上;(7) 考虑通过使用子状态、分支、汇合和历史状态,来简化状态图;(8) 核实所有的状态都是在事件的某

13、种组合下可达的;(9) 核实不存在死角状态,即不存在那种不能转换出来的状态;(10) 通过手工或通过使用工具跟踪状态机,核对所期望的事件序列以及它们的响应。28状态图示例状态图示例 示例示例3.1.6对电话工作的行为建模。idledialingtalkingringing拨号失败电话接通完成通话挂机摘机拒接来电暂无人接听继续响铃拨号来电29任务解决任务解决-分析分析借书业务在系统的业务建模中是一个用例,而这种用例是一个应对型对象。为便于理解该业务的控制流程和确保业务处理的正确性。从前面章节对该业务描述可知,借书业务是由借书空闲(idle)书目查询(finding)借书(Lending)预约(r

14、eservation)取消预约(remove reservation)借书成功(Success)失败(Failure)7种状态组成。 30任务解决任务解决-主要事件主要事件1.从空闲状态到书目查询状态是由书目编号录入引发的;2.同样查询失败也会引发查询状态转换到借书业务的空闲状态;3.查询成功的事件会激发从查询状态到借书状态;4.当所查到的书在库时则借阅成功转发成功显示状态;5.当所查到的书已预约时则激发取消预约事件;6.当所查到的书已借出则激发预约事件转入预约状态;7.在取消预约时如预约取消成功则转入借书状态;8.如预约成功则转入信息显示状态31任务解决任务解决-绘制状态图绘制状态图 步骤1

15、.打开前面初步构建的UML模型文件。 步骤2打开Rose中的用例视图(Use Case View),选择用例(use case)目录下的图书馆业务功能包,并选择借书用例。如图3.1.8所示。32任务解决任务解决-绘制状态图绘制状态图 步骤3用鼠标右击借书用例在弹出来的菜单中选择“Newstatechart diagram”项,创建状态图。如图所示。 33任务解决任务解决-绘制状态图绘制状态图 步骤4双击新建的状态图,并点右边控件集中选中开始状态并用鼠标在图中拖出。 34任务解决任务解决-绘制状态图绘制状态图 步骤5如上图所示操作方法分别将状态图中的所有状态创建出来。如图所示。35任务解决任务解

16、决-绘制状态图绘制状态图 步骤6将状态图中的事件加上就完成借书的状态图。如图所示。 初始IdlefindingLendingReservationRemove ReservationSuccess结束输入书目编号查询失败取书籍信息预约取消成功Failure 预约人!当前预约者 / 预约取消失败 书目状态已预约 / 取消预约预约 书目状态已借出 / 预约借书成功返回返回返回36精练精练 请您根据本节所学的知识解决项目中的任务2。 分析:由前面章节对图书馆管理系统中的还书业务的描述和分析可知,还书业务的动态行为是由:空闲(idle)、图书查找(finding)、还书(reversion)、失败(Failure)、归还成功(Success)5种状态及激活相互转换的事件。 绘制状态图:请您根据分析运用UML绘制还书用例的状态图。37小结小结 事件(Event),是指对一个

温馨提示

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

评论

0/150

提交评论