第二章:UML 类图
一、UML 概念
1)UML —— Unified modeling language,统一建模语言用来软件分析和设计,帮助软件开发人员进行思考和记录思路
2)UML 是一套符号的规定,用来描述软件模型中各个元素和它们之间的关系
二、UML 图分类
名称 | 组成 |
---|---|
用例图 | - |
静态结构图 | 类图、对象图、包图、组件图、部署图 |
动态行为图 | 交互图(时序图和协作图)、状态图、活动图 |
三、UML 类图
1)用于描述系统中的类(对象)本身和类(对象)之间的各种静态关系
2)类之间的关系:泛化(继承)、实现、依赖、关联、聚合、组合**
用 PlantUML 表示类之间的关系
关系 | 箭头 |
---|---|
泛化(Generalization) | –|> |
实现(Realization) | …|> |
依赖(dependency) | …> |
关联(Association) | –> |
聚合(Aggregation) | –o |
组合(Composite) | –* |
四、泛化关系
泛化关系就是继承
上图的意思:B 继承 A(主语是箭头的起点)
五、实现关系
实现关系就是实现一个接口
上图的意思是:B 实现 A(主语是箭头的起点)
六、依赖关系
只要类 A 中使用了类 B,那么就说 A 依赖 B,因为没有 B,那么 A 连编译都通不过。依赖关系是很弱的关系
上图的意思是:A 依赖 B (主语是箭头的起点)
思考:
- 哪些算依赖关系?
- 类的成员属性
- 方法的返回值
- 接收的参数类型
- 方法中使用到
- 继承和实现算依赖吗?
- 算,但是继承和实现的关系比依赖强,所以还是画继承和实现自己的箭头
- 类与类或多或少有依赖,所以如果画箭头的画岂不是要画很多?
- 所以一般就直接依赖画一下箭头
七、关联关系
关联关系是依赖关系的特例,是更强的依赖的关系。它不像依赖是偶然的、临时的,一般表现为成员变量
上图的意思是:A 关联 B (主语是箭头的起点)
关联关系可以是单向的或是双向的,即你中可以有我,我中可以有你
关联关系具有多重性,如 “1”(表示有且仅有一个),“0…”(表示 0 个或多个),“0, 1”(表示 0 个或者 1 个),“n…m”(表示 n 到 m 个都可以),“m…*”(表示至少 m 个)
八、聚合关系
聚合关系是关联关系的特例(也具有导向性和多重性),表示整体与部分的关系,且整体与部分可以分开。
主要表现为类中的成员变量,且成员变量没有随着类加载或类实例化而 new 出来
上图的意思是:A 聚合到 B (主语是箭头的起点)
九、组合关系
和聚合关系类似,但不同的是组合表示整体与部分不可分割
主要表现为类中的成员变量,且成员变量随着类加载或类实例化而 new 出来
上图的意思是:A 组合到 B (主语是箭头的起点)
注意:如果属性 C 会随着 B 的删除而一同删除,那么 C 也算是组合到 B 中了