《UML面向对象建模与设计》第5章——状态建模

虽然写这个博客主要目的是为了给我自己做一个思路记忆录,但是如果你恰好点了进来,那么先对你说一声欢迎。我并不是什么大触,只是一个菜菜的学生,如果您发现了什么错误或者您对于某些地方有更好的意见,非常欢迎您的斧正!

目录

5.1事件

5.2状态

5.3迁移和状态

5.4状态图

5.5状态图行为


状态模型

·检查对下你个及其关系随着时间的变化

·描述响应外部激励而发生的操作序列,而不是描述操作做了什么,对什么进行操作

·由多个状态图组成,每个类对应一个状态图

 

5.1事件

事件(event):某个时刻发生的事情。

●事件发生的时间是事件的一种隐含属性。在某段时间内发生的时间现象,由状态来建模。

●两个因果无关的事件就是并发的,不会相互影响。

●事件包括错误状态及普通事件。

●术语事件经常用的不明确。有时它指实例,有时它指类。

 

●最常见的事件是信号事件、变更事件和时间事件

5.2状态

状态(state):对象取值和链接的抽象。

●状态的UML表示法:其中包含可选状态名的圆角方框。

●每个对象在某个时刻只能处在一种状态下。对象在其生存期内可以跨越一种或多种状态。(比如某个老师9点到10点在上课的状态,但是他11点到11点半处在吃饭的状态)

●状态确定对象对输入事件的响应。

●事件和状态之间有某种对称性。事件表示事件起点;状态表示时间段。

●事件和状态两者都依赖于抽象的层次。

 

5.3迁移和状态

迁移(transition):从一个状态到另一个状态的瞬间变化。(比如电话接通,电话线就从状态响铃(Ringing)迁移到了状态连接(Connected))

●从源状态到目标状态一发生变化,就说是触发(fire)了迁移。

警戒条件(guard condition):要让迁移发生而必须为真的布尔表达式。

●例子:当你早上出门(事件),如果温度在0度以下(条件),你就要戴手套(下一状态)

5.4状态图

状态图(state diagram)的结点是状态,有向弧是状态间的迁移。

♦状态图详细说明了由事件序列引起的状态序列

状态名在状态图的作用域内必须的是唯一

♦类中所有的对象都执行该类的状态图,状态图会建模对象的公共行为

 

●状态模型(state model):包含多个状态图,每个类一个状态图,状态图建模重要的时序行为。

♦状态图必须匹配它们的接口——事件和警戒条件

♦单独的状态图可以通过传递事件,以及通过警戒条件的副作用进行交互。

♦一些事件和警戒条件会出现单个状态图中;其它的会出于协调的目的出现在多个状态图中。

 

5.4.1状态图实例

●电话线状态图

♦状态并没有完全定义对象的所有值

♦如果有一个以上的迁移离开了某个状态,那么发生的第一个事件就会触发相应的迁移。如果某个事件发生,但还没有迁移相匹配,那么事件就会被忽略掉。

 

5.4.2单触发状态图

●状态图可以表示连续或单触发生周期。单触发状态图表示有着有限生存期的对象。

5.4.3状态图的基本表示法小结

5.5状态图行为

5.5.1活动效应

●效应:为响应事件而执行的行为的引用

●活动:由效应触发的实际行为,效应数量不限。

        表示法:“/”+活动的名称(或描述),跟在引起活动的事件后面

5.5.2 do活动

●do活动:持续了一段时间的一项活动。

♦只会在某个状态内出现,不能附到迁移上。

♦对象处在某状态下的全部或部分时间内执行的do活动

♦会被在执行过程中收到的某事件中断;此事可能会、也可能不会引起迁移,离开包含do活动的状态。

5.5.3进入和退出状态

●进入活动在状态图内显示为关键词entry和字符“/”

●退出活动在状态图内显示为关键词exit和字符“/”

●如果某个活动有多个状态,它们按照下面的顺序执行:到达迁移上的活动→进入活动→do活动→退出活动→输出迁移上的活动

●状态内部事件和自迁移的区别:(我的理解:状态内部事件:比如打电话等待过程中这个状态,这个状态内部事件就是一个“响铃:滴滴滴”,响铃的时候不用我一直拨号什么的。而自迁移,就像下图这个例子,我的鼠标在进入浏览页面这个状态后,我的鼠标在移动的过程中碰到一些文字导致高亮这个行为,需要我的鼠标不停移动才能触发)

5.5.5发送信号

●竞态条件:一个对象从多个对象收到信号,并发信号接收的顺讯会影响到最终状态。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
面向对象UML 第一部分 软件开发活动 7 第一 结构化的分析与设计 8 第一节 模型图 8 业务流程图 8 数据流图 11 功能结构图 12 功能树 13 网络结构图 14 程序流程图 15 第二节 需求分析 15 需求分析的任务 15 需求分析的步骤 15 需求分析的原则 16 需求分析的方法 16 第三节 概要设计 16 概要设计任务 17 概要设计过程 17 一些概念 17 概要设计原则 17 概要设计方法 17 第四节 详细设计 18 详细设计的任务 18 详细设计的原则 18 详细设计的表示方法 18 第二 面向对象的分析与设计 18 第一节 面向对象方法概述 18 对象与面向对象 18 面向对象技术产生的原因 19 面向对象方法的基本思想 19 概念 19 面向对象技术的特点 19 面向对象语言及系统 19 第二节 面向对象的分析 20 OOA分析的任务 20 OOA分析的原则 20 OOA分析过程 20 第三节 面向对象设计 20 设计的模型 20 设计的三条重要原则 21 面向对象设计的概念 21 面向对象设计方法 21 第三 UML概述 22 UML对软件工程的重大影响 22 UML的概念模型 22 UML建模思想 23 第四UML建模 24 第一节 建模概念 24 系统、模型和视图 24 概念和现象 25 数据类型、抽象数据类型和实例 25 类、抽象类和对象 26 事件类、事件和消息 27 面向对象建模 27 证伪和原型化 28 第二节 UML的主要图形符号 28 用例图 28 类图 35 顺序图 40 状态图 42 活动图 44 图表组织 45 图表扩展 47 第五 需求提出 47 第一节 需求提出概述 48 第二节 需求提出的概念 50 功能性需求--系统功能 50 功能的分类 50 非功能性需求和伪需求 51 系统属性 51 描述的层次 52 用例的分类 52 用例的层次:高层用例与扩展用例 53 主要、次要和可任选的用例 53 基本用例和真实用例 53 正确性、完整性、一致性、清晰性和现实性 54 可验证性和可追溯性 55 可跟踪性 55 greenfield工程、再工程、界面工程 56 第三节 需求提出活动 56 确定执行者 56 确定场景 57 确定用例 58 改进用例 60 确定执行者和用例之间的关系 60 确定最初的分析对象 62 确定非功能性需求 63 从用户得到信息的方法 64 第六 需求分析概述 64 需求分析的概念 65 概念模型 65 实体对象,边界对象,控制对象 67 回顾关系重数 68 受限关系 69 归纳 69 第七 需求分析活动:从用例到对象 70 第一节 识别概念 70 识别概念的策略一 70 识别概念的策略二 71 建立概念模型的指导原则 71 几个注意点 71 自然语言分析: Abbott的试探法 72 第二节 标识实体对象 72 标识实体对象的试探法 72 例子:报告紧急情况用例 73 例子:报告紧急情况用例的实体对象 73 第三节 标识边界对象 73 标识边界对象的试探法 73 例子:报告紧急情况用例的边界对象 74 第四节 标识控制对象 74 标识控制对象的试探法 74 例子:报告紧急情况用例的控制对象 74 第五节 标识关系 75 关系的属性: 75 标识关系的试探法 75 试探关系 75 冗余关系 75 惟一标识 76 找出关联——通用关联列表 76 关联原则 76 关联的命名 77 两个类型间的多重关联 77 关联和它的实现 77 例子:销售点问题中的关联 77 第六节 标识属性 78 属性的属性 78 有效的属性类型 78 非简单属性类型 78 识别属性 79 例子:销售点系统中的属性 79 术语表 80 第八 需求分析活动:用动态模型表示系统行为 80 系统行为 80 交互图 80 交互图:协作图与顺序图 81 交互图的依赖关系 82 顺序图--两种观点 82 系统顺序图 82 系统事件和系统操作 83 如何建立一个系统顺序图 84 系统事件和系统边界 84 系统事件和操作的命名 84 对象顺序图 85 画顺序图的试探法 86 协作图的基本表示法 87 契约 90 活动及其之间的依赖关系 90 系统行为与契约 90 契约段 91 如何建立一个契约 91 后置条件 92 后置条件应该详细到什么程度 92 描述设计细节和算法——注释 93 前置条件 93 对书写契约的一些建议 93 用例enterItem的契约 93 概念模型的修改 93 标识状态 94 事件、状态和转移 94 状态图 94 用例状态图 95 系统状态图 95 状态无关和状态相关类型 95 何处需要状态图 95 外部和内部事件 96 其他的状态图表示法 96 对单个对象的重要行为进行建模状态图 96 第九 GRASP: 职责分配模式 97 导言 97 职责和方法 98 UML类图表示方法 98 职责和交互图 98 模式 99 GRASP: 职责分配中通用原则的模式 99 专家 99 问题: 99 解决方案: 99 举例: 99 专家模式的优点是: 100 创建者 100 问题: 100 解决方案: 100 举例: 100 优点: 101 低耦合度 101 问题: 101 解决方案: 101 举例: 101 优点: 102 高聚合度 102 问题: 102 解决方案: 102 高聚合度例 102 具有不同功能聚合度的一些场景如: 102 优点: 103 控制者 103 问题: 103 解决方案: 103 控制者例 103 优点: 104 问题要点和讨论 104 消息处理系统和命令模式 105 相关模式 106 职责、角色扮演和CRC卡 106 GRASP: 职责分配中通用原则总结 106 多态 106 问题: 106 解决方案: 107 举例: 107 讨论 107 优点 107 纯虚构 107 问题: 107 解决方案: 107 讨论 107 优点: 108 相关模式 108 中介者 108 问题: 108 解决方案 108 举例: 108 讨论: 108 优点: 低耦合 109 相关模式 109 “不要和陌生人讲话” 109 问题: 109 解决方案: 109 举例 109 讨论 109 优点: 低耦合 110 相关模式 110 第十 需求分析活动:精化模型 110 建立交互图的步骤 110 例:运用对象和模式设计一个解决方案 110 交互图和其他制品 110 销售点系统的协作图 111 对对象间的归纳关系建模——泛化 113 泛化 114 UML表示法: 114 定义超类型和子类型 114 何时定义一个子类型 115 销售点终端系统的类型层次 115 组织模型 116 销售点终端系统的概念模型中的包 116 检查分析模型 116 检查提问 116 分析总结 117 第十一 系统设计 118 第一节 系统设计概况 118 分析产生的需求模型由以下结果描述: 118 系统设计得到如下结果: 118 他们特别需要解决以下问题: 119 第二节 系统设计的概念 120 子系统和类 120 服务和子系统接口 121 耦合度与相关性 121 分层和分区 124 软件体系结构 126 UML配置图 131 两个包之间的可见性 131 服务包接口——虚包模式 131 模型-视图分离模式 132 一个系统中的间接通信 132 应用协调者 133 存储和持久化 133 第三节 系统设计活动:从对象到子系统 133 起点:路线设计系统的分析模型 134 确定设计目标 135 确定子系统 137 将子系统映射到处理器和组件 138 定义连续数据的存储 140 定义访问控制 142 设计全局控制流 146 确定边界条件 147 预期变化 149 系统设计综述 150 第四节 系统设计的管理 151 记录系统设计 151 分配任务 152 与系统设计相关的交流 153 系统设计的不断反复 153 第十二 对象设计 154 第一节 对象设计概况 155 对象设计包括4组活动 155 对象设计是非线性的。 156 第二节 对象设计概念 157 应用域对象和解决域对象回顾 157 类型、声明和可见性回顾 157 合约:不变量、前提条件和后续条件 159 UML对象约束语言(OCL) 160 第三节 对象设计活动 161 规格说明活动 161 确定遗漏的属性和操作 163 指定类型、声明和可见性 166 指定约束条件 166 指定异常情况 167 组件选择活动 168 确定并调整类库 168 确定并调整应用程序框架 169 重组活动 169 实现关系 170 提高可复用性 172 消除实现的依赖性 173 优化活动 175 回顾访问路径 175 退化对象:将对象转变成属性 176 存储高开销计算的结果 176 推迟高开销计算 176 第四节 对象设计的管理 177 用文档记录对象设计 177 分配职责 180 设计类图 180 活动及其相互之间的依赖关系 181 何时创建设计类图 181 设计类图示例 181 如何建立设计类图 181 概念模型和设计类图的对比 182 建立销售点系统的设计类图 182 识别出类并画出它们。 182 添加关联和导航 183 添加依赖关系 183 细节的表示法 184

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值