1. 活动图
活动图描述了在一个过程中, 顺序的/并行的活动及其之间的关系
- 应用于商业过程、 工作流(业务过程) 、 复杂算法的建模
活动图是顶点和弧的集合
- 活动节点
- 动作
- 流
- 对象值
- 注解和约束等
1.1 活动图的开始、结束、对象
1.2 活动节点
- 一个活动是一个过程中进行的非原子的执行单元
- 活动的执行最终延伸为一些独立动作(Action,原子的)的执行
1.3 分支
-
一个分支可以有一个进入流和多个离去流
-
在每个离去流上必须设置一个监护条件
-
条件放在方括号里
-
条件不能重叠,以免二义性
- 可以有 [else] 分支
-
-
两个控制路径可以重新合并,无需监护条件
1.4 分岔和汇合( Forking and Joining)
- 分岔表示把一个单独的控制流分成两个或多个并发的控制流
- 汇合表示两个或多个并发控制流的同步发生, 一个汇合可以有两个或多个进入转移和一个输出转移
- 在UML中, 用同步棒来说明并行控制流的分岔和汇合
- 同步棒是一条水平或垂直的粗线条
1.5 泳道(Swimlanes)
- 将一个活动图中的活动分组, 每一组表示一个特定的类别、 人或部门, 他们负责完成组内的活动
- 每个组被称为一个泳道
- 用一条垂直的实线把它们分开
- 每个活动(不可再分割的)严格地属于一个泳道
- 转移可以跨越泳道
- 同步棒可以跨越泳道
- 泳道是包的一种
1.6 活动图小结
-
活动图与用例模型互为补充,主要用于需求分析阶段
-
活动图中的基本要素包括
活动(动作)、转移、分支、分叉和汇合、泳道、对象流等
2. 类图
2.1 类图定义
- 类class的定义
- 具有相同属性、 操作、 方法、 关系或者行为的一组对象的描述符
- 类是真实世界事物的抽象
- 问题领域的类: 在对系统建模时, 将会涉及到如何识别业务系统中的事物, 这些事物构成了整个业务系统。 在UML中, 把所有的这些事物都建模为类 (class)
- 对象object的定义
- 当这些事物存在于真实世界中时, 它们是类的实例, 并被称为对象
- 同一个类的各对象具有
- 相同的属性, 但属性的取值可以不同
- 提供相同的操作、 有相同的语义
把类相关的元素画在一起, 即为类图
2.2 类图中常用的UML元素
2.3 UML中类的表示
类的图形表示:用四部分来表示,它是分为三个分隔区(compartment)的长方形
在显示时,只有名称部分是必须的,其余部分可以隐藏 (模型里面还是存在的!)
2.4 类元素的命名
-
类的命名
类名中的每个词的第一个字母通常要大写
例如, Student、 Teacher、 Book、 Store etc.
-
操作的命名
操作名 除第一个词之外的每个词的第一个字母要大写
例如, selectCourse();
-
属性的命名
属性名 除第一个单词之外的每个单词的第一个字母要大写
例如, myAddress、 employeeID、 stdNumber
2.5 关联关系的修饰
-
名称及其方向
-
角色
-
在关联的每一端,表明相连的类在该关联关系中的作用
-
-
多重性Multiplicity
例子:
-
公司刚好有7名员工
-
一个人只能被一家公司雇佣
-
一个银行账户只能有一个所有者
-
一个银行账户可以有一个或多个操作员
比如说你的银行卡,你可以用,你的老婆也可以用
-
一个人可以有0到多个银行账户
-
一个人可以操作0到多个银行账户
-
-
聚合/组合:表示部分与整体的关联关系
- 聚合: ‘整体’有管理‘部分’的特有的职责;它用端点带有空菱形的线段表示, 空菱形与‘整体’类相连接
- 组合: ‘整体’拥有‘部分’的生命;它用端点带有实菱形的线段表示, 实菱形与‘整体’类相连接
聚合与组合的区别:
聚合:has-a关系,父类包含子类,子类可以独立于父类存在
班级和学生是一种聚合关系。一个班级,可以有学生,也可以没有学生;反过来,当我们把班级解散,学生仍然存在。
组合:part-of关系,父类拥有子类,子类不能独立于父类存在
身体与细胞是一个组合关系。但我们创建一个身体,细胞随之被创建;反过来,当我们销毁一个身体,细胞随之被销毁。
-
每个表示部分的类与表示整体的类之间有单独的关联, 但是为了方便起见, 连线结合在一起
2.6 关联类 Association Class
关联类它也是一个类,由类、关联和虚线组成。
它可能有属性、操作和关系
当任何一对对象在任何时间点之间只有一个唯一链接时,就可以使用关联类
如果一对对象在一个给定的时间点上彼此之间可能有许多链接,那么你可以通过用一个普通的类替换它来具体化这种关系
3. 顺序图
3.1 相关概念
- 交互:对象之间为实现某一功能而必须实施的协作过程、 动态行为, 称为交互
- 消息:对象间的协作与交流表现为一个对象以某种方式启动另一个对象的活动,这种交流在UML里被定义为消息
- 顺序图的建模元素
- 对象或角色(role)
- 参与者
- 消息
- 交互图
- 交互的过程表现出来,就是交互图
- 顺序图、通信图,都是交互图
3.2 交互的基本概念--消息
-
同步消息:发送消息的对象要等到接收消息的对象执行完所有操作后,发送消息的对象才能继续执行自己的操作。
-
异步消息:发送消息的对象发送消息后,不用等待接收对象是否执行,继续执行自己的操作。
3.3 基本建模元素
对象、生命期(对象生命线)、控制焦点、消息、消息序号(可选)
3.4 顺序图小结
- 顺序图可以动态验证类模型的可行性
- 顺序验证的某一功能, 属于某个用例描述的功能中的一部分
- 又被称为用例实现 “usecase realization”
- 顺序图从上到下, 反映了个对象相互协作的时间顺序!
4. 状态图
4.1 状态图的概念
- 状态(state):
- 是对象的生命期中的一个条件或状况
- 在此期间,对象可以响应事件、执行某活动等
- 例如,灯,有几个状态?2个:亮和暗
- 状态机(state machine) :
- 是一种行为,
- 说明对象在它的生命期中, 响应事件所经历的状态序列 以及它们对每个事件的响应
- 状态图(state diagram, State Chart ):
- 状态机可以用状态图来可视化。
- 状态图显示了一个状态机,它强调从状态到状态的控制流
4.2 状态组成
- 名称(name),每个单词首字母大写
- 进入/退出动作(entry/exit action)
- 内部迁移(internal transition)
- 子状态 (substate)
- 延迟事件 (deferred event)
4.3 事件 Event
-
事件是对一个在时间和空间上占有一定位置的有意义的事情的描述
- 在状态机的语境中,一个事件是一个激励的发生,它能够触发一个状态迁移
-
UML 对4种事件进行建模
-
参量变化 change event
- 布尔表达式值变化、定时器、溢出:是内部事件
-
信号 signal (异步)
-
调用 call (同步)
-
时间事件 time event
-
时间事件 是表示一段时间的推移
用关键字after 后面跟着时间表达式
用关键字at 表示某个绝对时间点上发生的时间事件
-
变化事件 表示状态的一个变化或某些条件得到满足的事件
用关键字 when后跟一个布尔表达式,当条件满足,则引发变化事件
-
-
4.4 迁移Transition
-
在状态A,发生事件并满足一定条件,转到状态B
-
一个迁移由5部分组成
-
源状态 source state
-
事件触发器 event trigger (触发事件名称)
-
触发条件 guard condition
-
效应(effect) (或称,迁移动作):可执行的动作
-
目标状态
-
-
特殊的迁移
- 自身迁移 self transition:从状态A迁移到状态A
- 内部迁移 internal transition:在状态A内部 行为
4.5 状态图的建模元素
-
状态
- 一般状态:圆角矩形
- 初始状态:实心圆
- 结束状态:“牛眼” (bull’s eye)
-
事件
- 触发事件名[触发条件]/迁移动作
- 这三个部分都是可以省略的,但至少有一部分
- 事件依附于表示迁移的箭线
- 触发事件名[触发条件]/迁移动作
-
迁移
- 叉形箭头实线
- 从初始状态指向目标状态
- 叉形箭头实线
4.6 状态图建模注意事项
- 不允许孤立的状态存在
- 不允许只进不出的状态迁移 (“黑洞” )
- 不允许只出不进的状态迁移 (“奇迹” )
- 不允许没有事件发生的迁移
4.7 小结
状态图具体实例可以参考:http://t.csdn.cn/lSyJK