建立动态模型-状态图

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

本节课内容

Leabharlann Baidu
第九章
面向对象方法学引论
9.5、动态模型

第十章 面向对象分析
10.1、面向对象分析的基本过程 10.2、需求陈述
10.3、建立对象模型
10.4、建立动态模型 10.5、建立功能模型
10.6、定义服务
动态模型

动态模型表示瞬时的、行为化的系统的“控制”性 质,它规定了对象模型中的对象的合法变化序列。
状态图

练习3:当有新同学入学时,将会给新同学创建一 个新的账号,新同学可以用这个账号去选课。一 般来说,每个人的选课数目是有限的,如选择6门 课程后将不能再选课。如果已经选了6门课程还要 再选课,就必须删除已选的课程。直到这位同学 毕业,将其账号删除。请创建学生账号类的状态 图。
状态图

练习4:请创建一个状态图来描述航班如何从提出 申请、指定航班计划、售票、起飞、飞行到着陆 的状态过程。

与数据流图中处理框对应的操作 利用继承减少冗余操作
抽取出相似类的公共属性和操 应的服务。 常规行为 与一个对象(也可能是若干 作,以建立这些类的新父类, 并在类等级的不同层次中正确 从事件导出的操作 个对象)上的操作相对应。 地定义各个服务。
OMT与UML区别
功能模型 数据模型 动态模型 OMT 数据流图 类图 —— 对象模型 状态图 ,有交互行 为的先画事件跟踪图 UML 用例图 类图 行为模型:状态图 交互模型:时序图

建立对象模型练习

根据描述建立软件公司的对象模型,即画出类图。 问题陈述如下:一个软件公司有许多部门,分为 开发部门和管理部门两种。每个部门由部门名字 唯一确定。每个开发部门开发多个软件产品,每 个软件产品都由程序、数据和文档组成。该公司 有许多员工,分为经理、工作人员和开发人员。 开发部门有经理和多个开发人员,管理部门有经 理和多个工作人员。每个开发人员可参加多个开 发项目,每个开发项目需要多个开发人员。每位 经理可主持多个开发项目。
软件工程导论
孙旭光
灾害信息工程系
复 习

对象模型表示静态的、结构化的系统的“数据”性 质。
通常,使用UML提供的类图建立对象模型。

类图的绘制:类的表示和类与类之间的关系。
创建对象模型的步骤:
确定类与对象 确定类间的关系 划分主题 确定属性和方法 优化迭代(识别继承关系),反复修改
状态图
转换:用带箭头的直线表示,一端连接源状态即转
出的状态,箭头一端连接目标状态即转入的状态。

转换可以标注与此转换相关的选项如事件、动作和 监护条件。
状态图
初始状态:代表状态图的起始位置,只能作为转
换的源,而不能作为转换的目标。

初始状态在一个状态图中只允许有一个,它用一个 实心的圆表示。
对于一个对象来说,在其生命周期的每个特定阶段
中,都有适合该对象的一组运行规律和行为规则, 这就是对象的状态。 用以规范该对象的行为。
状态:是对对象属性值的一种抽象。

各对象之间相互触发(即作用)就形成了一系列的状 态变化。
一个触发行为称作一个事件。
一个事件分开两个状态,一个状态隔开两个事件。 事件表示时刻,状态代表时间间隔。
建立动态模型

在开发交互式系统时,动态模型起着重要作用。
建立动态模型的步骤:

编写典型交互行为脚本。
必须保证脚本中不遗漏常见的交互行为

从脚本中提取出事物,确定触发每个事件的动作对 象以及接受事件的目标对象。 排列事件发生的次序,确定每个对象可能有的状态 以及状态间的转换关系,并用状态图描绘出来。 比较各个对象的状态图,检查它们之间的一致性, 确保事件之间的匹配。
创建动态模型的步骤:

编写典型交互行为脚本。 从脚本中提取出事物,确定触发每个事件的动作对象 以及接受事件的目标对象。 排列事件发生的次序,确定每个对象可能有的状态以 及状态间的转换关系,并用状态图描绘出来。 比较各个对象的状态图,检查它们之间的一致性,确 保事件之间的匹配。


作业

教材P73页第6题。
状态图

练习1:图书馆中图书的状态描述如下:当图书被 购置进来后,就放在图书馆中;如果读者将图书 借走时,处于已借出状态;如果图书被归还,图 书对象又变为在图书馆状态。图书馆如果将图书 废弃,则图书对象就不再存在。试画出图书对象 的状态图。
状态图

练习2:在温室管理系统中,有一个环境控制器类, 当没有种植作物时处于空闲状态。一旦种上了作 物,就要进行温度控制,定义气候,即在什么时 期应达到什么温度。当处于夜晚时,由于温度下 降,要调用调节温度过程,以便保持温度;太阳 出来时,进入白天状态,由于温度升高,要调用 调节温度过程,保持要求的温度。当日落时,进 入夜晚状态。当作物收获,终止气候的控制,则 进入空闲状态。建立环境控制器类的状态图。
态和判定等组成。
状态图
状态是状态图的重要组成部分。包括:

状态名:在状态图中状态名必须是唯一的。 入口和出口动作:进入和退出一个状态时所执行的 边界动作。
一个状态可以有或者没有入口和出口动作。

内部转换:是不导致状态改变的转换。
内部转换只有源状态而没有目标状态。

组合状态:内部嵌套有子状态的状态。

动态模型
通常,使用UML提供的状态图来描绘对象的状态、
触发状态转换的事件以及对象的行为(对事件的响 应)。
状态图通过建立类对 象的生命周期模型来 描述对象随时间变化 的动态行为。
每个类的动态行为用一张状态图来描绘,各个类的
状态图通过共享事件合并起来,从而构成系统的动 态模型。 动态模型是基于事件共享而互相关联的一组状态图 的集合。
状态图

状态图适用于描述状态和动作的顺序,不仅可以
展现一个对象拥有的状态,还可以说明事件如何
随着时间的推移来影响这些状态。
状态图表现从一个状态到另一个状态的控制流。

一般情况下,状态图可以由表示状态的节点和表示
状态之间转换的带箭头的直线刻画出来。
状态图主要由元素状态、转换、初始状态、终止状
分行类状态图
定义服务


对象是由描述属性的数据,以及可以对这些数据施 加的操作(即服务),封装在一起构成的独立单元。 为了建立完整的对象模型,既要确定类中应该定义 的属性,又要确定类中应该定义的服务。
通常需要等到建立了动态模型和功能模型之后,才
能最终确定类中应有的服务,因为这两个模型更明 状态图中发往对象的事件也就是该对 类中定义的每个属性都是可以 象接收到的消息,因此该对象必须有 确地描述了每个类应该提供哪些服务。 利用继承机制以减少所需定义 访问的,则可在每个类中定义 由消息选择符指定的操作,这个操作 的服务数目。 读、写该类每个属性的操作。 定义服务的方法: 修改对象状态(即属性值)并启动相 数据流图中的每个处理框都
建立动态模型
建立动态模型
处理事务 do: 请求处理 分行事务 分 行 事 务 失 败 分 行 事 务 成 功 验证账户 do: 验证分行代码 [无效代码]
[有效代码] [无效账户] do: 请求分行验卡 账号有效 密码错
总行类状态图
建立动态模型
请求处理 分行事务 do: 更新账户 请求分行验卡 do: 验证卡号 [有效] [失败] [成功] do: 验证密码 [正确] [错] [无效]
建立动态模型

第四步:画状态图
通常,用一张状态图描绘一类对象的行为,它确定了
由事件序列引出的状态序列。
建立动态模型
根据一张事件跟踪图画出状态图之后,再把其他脚本
的事件跟踪图合并到已画出的状态图中。

考虑完正常事件之后再考虑边界情况和特殊情况, 其中包括在不适当时候发生的事件(例如,系统正在 处理某个事务时,用户要求取消该事务)。


建立动态模型
以自动取款机(ATM)系统为例进行为例介绍动态模
型的建立过程:

第一步:编写脚本 第二步:设想用户界面
用户界面的好坏直接影响用户是否接受这个系统,在
分析阶段也不能完全忽略用户界面,要注重这种界面 下的信息信息交换方式。

第三步:画事件跟踪图
确定事件 画出事件跟踪图
总 结

动态模型表示瞬时的、行为化的系统的“控制”性
质,它规定了对象模型中的对象的合法变化序列。
通常,使用UML提供的状态图来描绘对象的状态、
触发状态转换的事件以及对象的行为(对事件的响 应)。
创建状态图的步骤:

识别出建模实体 识别出实体的各种状态 创建相关事件并创建状态图
总 结
终止状态:是模型元素的最后状态,是一个状态
图的终止点。终止状态只能作为转换的目标,而 不能作为转换的源。

终止状态在一个状态图中可以有0个或多个,它用 一个套有一个实心圆的空心圆表示。
状态图
判定:
用来表示一个事件依据不同的监护条件产生不同的 影响,即工作流在此处按监护条件的取值而发生分 支。 判定用空心小菱形表示。 因为监护条件为布尔表达式,所以通常条件下的判 定只有一个入转换和两个出转换。 根据监护条件的真假可以触发不同的分支转换。

状态图
使用状态图进行建模的目标是描述跨越多个用例的
对象在其生命周期中的各种状态及其状态之间的转 换。

一个完整的系统往往包含很多的类和对象,这就需 要创建几个状态图进行描述。 识别出建模实体
不需要给所有的类都创建状态图,只有具有重要动态
创建状态图的步骤:

行为的类才需要。

识别出实体的各种状态 创建相关事件并创建状态图
相关文档
最新文档