UML概述
UML简介
UML (Unified Modeling Language)为面向对象软件设计提供统一的、标准的、可视化的建模语言。适用于描述以用例为驱动,以体系结构为中心的软件设计的全过程。
UML的定义包括UML语义和UML表示法两个部分。
- UML语义:UML对语义的描述使开发者能在语义上取得一致认识,消除了因人而异的表达方法所造成的影响。
- UML表示法:UML表示法定义UML符号的表示法,为开发者或开发工具使用这 些图形符号和文本语法为系统建模提供了标准。
UML模型图的构成
- 事物(Things):UML模型中最基本的构成元素,是具有代表性的成分的抽象
- 关系(Relationships):关系把事物紧密联系在一起
- 图(Diagrams ):图是事物和关系的可视化表示
UML关系
图例使用astah
软件绘制
1. 泛化 Generalization:
子类继承父类的关系
2. 实现 Relization:
子类实现协议或者接口
3. 依赖 Dependency:
A类中应用了B类,这种关系具有偶然性和临时性,同时B类发生的变化会影响到A类
4. 双向关联 Association:
一种特殊的依赖关系,比较强的依赖关系,一方依赖另一方
集合映射的情况:
1:单个
0..1:单个或者没有
1..:至少一个
0..:0个或者多个
*:任意个
5. 单向关联 Directed Associated:
一种特殊的依赖关系,比较强的两者互为依赖关系
6. 聚合关系 Aggregation:
一种特殊的依赖关系,整体和部分的关系,各自有各自的生命周期,互不干扰,部分强调共享
eg:电脑和电池的关系,电池是共享的,电池也有自己的生命周期
7. 组合关系 Composition:
一种特殊的依赖关系,整体和部分的关系,部分依赖于整体,不能独立于整体存在
eg.公司和部门
常用的UML
类图
- 属性的定义:
<属性访问权限> <属性名> : <属性类型> - 属性访问权限定义:
public:+
protected:#
package:~
private:- - 定义一个私有的String类型的name属性:
- name : String
- 方法的定义:
<方法访问权限> <方法名>([方法参数列表]) : <方法的返回值> - 方法访问权限定义:
public:+
protected:#
package:~
private:- - 定义一个公有的makeSound方法:
+ makeSound() : void
用例图
用例图是从用户角度描述系统功能, 是用户所能观察到的系统功能的模型图,用例是系统中的一个功能单元
- 参与者与用例之间的关系
关联: 表示参与者与用例之间的交互,通信途径。 (关联有时候也用带箭头的实线来表示,这样的表示能够显示地表明发起用例的是参与者。)
- 用例之间的关系
包含<<include>>:箭头指向的用例为被包含的用例,称为包含用例;箭头出发的用例为基用例。包含用例是必选的,如果缺少包含用例,基用例就不完整;包含用例必须被执行,不需要满足某种条件;其执行并不会改变基用例的行为。
扩展<<extend>>:箭头指向的用例为被扩展的用例,称为扩展用例;箭头出发的用例为基用例。扩展用例是可选的,如果缺少扩展用例,不会影响到基用例的完整性;扩展用例在一定条件下才会执行,并且其执行会改变基用例的行为。
- 参与者之间的关系
泛化:发出箭头的事物“is a”箭头指向的事物。泛化关系是一般和特殊关系,发出箭头的一方代表特殊的一方,箭头指向的一方代表一般一方。特殊一方继承了一般方的特性并增加了新的特性。
时序图
- 顺序图用来表示用例中的行为顺序。当执行一个用例行为时,顺序图中的每条消息对应了一个类操作或状态机中引起转换的事件。
- 顺序图展示对象之间的交互,这些交互是指在场景或用例的事件流中发生的。 顺序图属于动态建模。
- 顺序图的重点在消息序列上,也就是说,描述消息是如何在对象间发送和接收的。表示了对象之间传送消息的时间顺序。
- 浏览顺序图的方法是:从上到下查看对象间交换的消息。
以微信支付为例的一个时序图: