零、UML简介
统一建模语言「Unifited Modeling Language」
UML 是一种开放的方法,特点: 可视化
利于 大规模,复杂系统建模
一、用例图
1. 作用
- 描述用户需求「用于需求分析阶段」
- 展示 系统外部的各类执行者 和 系统中用例的 关系
2. 构成
- 参与者「Actor」 处于系统外部,但与系统内部的功能单元有交互的个体
通常用小人图形来表示,如下图
- 用例「Use Case」 系统内部 可见的 系统功能单元
通常用椭圆来表示,如下图
- 参与者 和 用例 之间的 关系 通信关系
通常用箭头来表示,如下图
二、类图
1、作用
- 显示出类、接口以及它们之间的静态结构和关系
- 用于描述系统的结构化设计
2、类
包括 名称(Name)、属性(Attribute)和操作(Operation)
状态显示:
- 抽象斜体
- 静态下划线
访问权限图中的表示:
+
:公有(Public)-
:私有(Private)#
:受保护(Protected)~
:包内公有(Package)
类图
3、接口
- 在没有给出对象的实现和状态的情况下对对象行为的描述。
- 一个类可以实现一个或多个接口
- 用两层矩形框表示,与类图的区别:顶端有
<<interface>>
显示:
- 用一个空心圆表示:
- 包图
三、类之间的几种关系
1、继承「泛化 Generalization」
- 子类 is a 父类
- 类与类,接口与接口,类与接口的继承关系
- 空心三角+实线 表示,子类 → 父类
2、实现「Realization」
- 是一种类与接口的关系,表示类是接口所有特征和行为的实现
- 空心箭头+虚线 表示,箭头 → 接口
3、依赖(Dependency)
类A 用到「use a」 B类,则 A类 依赖 B类「B是 A的变量、参数、返回值」
- 要避免双向依赖,一般来不应该存在双向依赖
- 关联、实现、泛化都是依赖关系
- 带箭头的虚线表示,→ 被依赖元素
4、关联(Association)
A、一般关联
- 类与类之间的联结,它使一个类知道另一个类的属性和方法,指明了事物的对象之间的联系
- 关联可以是双向、单向、自身、多维关联
- 箭头普通的实心线表示
- B类 是 A类中的一个 属性,A类 → B类
- 双向的关联 可以有 两个箭头 或 没有箭头
- 单向的关联 有一个箭头
关联和依赖的区别
- 依赖:仅当 方法被调用时产生,伴随方法的结束而关系结束
- 关联:类实例化时产生,类销毁时关系结束
- 对比:相比依赖关联关系生存期更长
B、聚合(Aggregation)
- 整体与部分「整体contain a 部分」关系
- 部分 能 离开整体而单独存在
- 聚合 是强的关联关系
- 关联 和 聚合 在语法上无法区分,必须考察具体的逻辑关系
- 带空心菱形的实线,部分 ← 菱形整体 或 部分 —菱形 整体
C、组合(Composition)
- 整体与部分「整体 has a 部分」关系
- 部分 不能 离开整体而单独存在
- 比聚合关系还要强的关系
- 整体负责部分的 生命周期
- 实心菱形的实线表示,部分 —菱形 整体
两段各有一个基数,表示每一端都有几个实例「无数个用 n 表示」
5、总结
各种关系的耦合度 强→弱 顺序如下:
泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖