UML图
类型 | 图名 | 说明 |
---|---|---|
静态结构图 | 类图 | 表示分析设计领域的静态结构(表关系) |
对象图 | 表示系统中的多个对象在某一时刻的状态 | |
包图 | 对UML的模型元素进行分组整理,还可表示多个包之间的关系 | |
构件图 | 表示构成软件的各个可重复再利用的部件的内部结构以及部件之间的相互关系 | |
组合结构图 | 表示具有复杂内部结构的类或者构件的内部结构 | |
部署图 | 表示系统执行时的硬件构成以及硬件节点之间的关系 | |
用例图 | 表示从系统外部看到的系统所提供给用户可以使用的功能 | |
动态行为图 | 活动图 | 表示某个业务的具体处理流程,或者程序的某个算法 |
(交互图) | 顺序图 | 按照时间顺序从上到下来表示生命线之间的消息交互,可结合用例图表示某个用例的场景 |
(交互图) | 通信图 | 以参与交互的生命线之间的连接为着眼点表示生命线之间的消息交互 |
(交互图) | 交互概览图 | 用活动图的形式表示多个交互之间的控制关系 |
(交互图) | 时序图 | 表示多个生命线的状态变化和时间之间的关系 |
状态图 | 表示某个对象在其生命周期内,各个状态之间的迁移变化及引起状态迁移的触发事件之间的关系 |
类图
- 类图用来描述系统的静态结构和系统中类之间的静态关系
- 一个系统中,可以从不同侧面做出多个不同的类图。
- 类图的组成元素:
- 类(类名、属性、操作)
- 关系
类的操作:
- 表示方法:操作名(输入输出类别 参数名: 类型=默认值): 返回值类型
- 输入输出类型:in、out、inout
- 返回值类型:一般为 bool、int、void
属性和操作的可见性:
+
:public 公有-
:private 私有#
:protected 受保护的,只有自己和子类可访问~
:package 包,只有自己和同一包内的类可以访问
类作用域:
- 类的所有对象能共享的属性或者操作,称为类作用域属性或者类作用域操作
- 在属性名或者操作名下面画下划线,或者在前面加上 {static} 作为标识
类关系:
- 泛化
- 父类是子类的泛化
- 使用 空心三角+实线 表示
- 依赖
- 类B作为参数被类A在某个属性或方法中使用
- 在Java语言中体现为成员变量、局域变量、方法的形参、方法返回值,或者对静态方法的调用
- 使用 虚线箭头 表示
- 关联
- 一个类知道另一个类的属性和方法(实例变量体现)
- 两个类之前是一个层次的,不存在部分跟整体之间的关系
- 使用 实线箭头 表示,可以是单向或双向
- 聚合
has-a
,两个类处在不平等层次上,一个代表整体,另一个代表部分- 整体和个体可以相互独立存在
- 使用 空心菱形+实线箭头 表示
- 组合(强聚合)
contains-a
- 个体不能独立存在,一定是在一个模块中同时管理整体和个体,生命周期必须相同。
- 使用 空心菱形+实线箭头 表示
- 实现
- 一个类实现接口(可以是多个接口)的功能
- 实现是类与接口之间最常见的关系
- 使用 空心三角+虚线 表示
对象图
- 对象图表示系统某一时刻内部的对象状态,是系统快照
- 对象图可在类图设计时辅助决定类图中类之间关联的多重性关系
用例图
- 站在用户的角度描述用户对系统的需求
- 在系统开发的初期阶段把握用户需求时使用,便于用户和系统开发者之间进行意向沟通
- 在分析设计阶段,以用例图为基础,做成其他UML图形
- 组成元素
- 参与者(actor)、用例(use case)、关联、系统边界
用例关系:
- 包含:用例可以简单地包含其他用例具有的行为,并把它所包含的用例行为作为自身行为的一部分
- 扩展:在一定条件下,把新的行为加入到已有的用例中
- 泛化:一个父用例可以被特化形成多个子用例