目录
Class Diagram
网上的很多关于UML类图以及关系都描述的不清楚,因此根据自己的理解,整理成文,如果理解不对的地方,欢迎留言指正~
UML类图能够帮助捋清各类别的描述、拥有的属性、可使用的方法与每个类之间的相互关系,能清楚的表示实际的Design Pattern。
描述类别
三个区域由上而下分别代表:
- Name:类名。粗体且首字母大写,如果是抽象类的话则为斜体。
- Attributes:属性。冒号后表示返回类型,+表示public属性;-表示private属性。
- Methods:方法。冒号后面表示返回类型。
其中属性和方法区域前面的+/-的前缀符号,其表示封装层级:
+ Public, 公共
- Private, 私有
# Protected, 保护(对子类可见)
~ Package, 包(对包內的其他成员可见)
加底线 Static, 静态(其属性对任何实体来说都是相同的)
描述关系
在描述关系上,可以分成两部分:
- 描述类之间的关系:Inheritance/ Implementation
- 描述实体之间的关系:Aggregation/ Composition/ Dependency/ Association
类别之间的关系(继承与实现)
1.Inheritance
A继承自B(A is a type of B),也就是说A根据B的特性再拓展。常见于描述子类基于父类又额外补充了什么功能。
![](https://img-blog.csdnimg.cn/img_convert/2a00429a611001ecb01290b9ef750b38.png)
2.Implementation
A实现B所定义的方法(A implements B)。
![](https://img-blog.csdnimg.cn/img_convert/ccdf6029ba1e1bd96e5b887a508cde8e.png)
实体之间的关系
1.Aggregation 聚合
A拥有B,但为弱拥有,A与B有各自的生命周期。常用来描述A类别拥有B的实体,A与B彼此合作,但又可各自单独存在。
![](https://img-blog.csdnimg.cn/img_convert/7b190c195ccbe703221566499bd6380f.png)
2.Composition 组合
B为A的一部分,若A消失则B也不会继续存在。用来描述强烈的依赖关系,A与B拥有共同的生命周期。
![](https://img-blog.csdnimg.cn/img_convert/b628502c4e32c5c678451bbb7aac203f.png)
3.Dependency 依赖
A使用B,B的变化可能会影响到A。常见描述A在使用某些方法时,会将B作为传入参数,但并不持有B。
4.Association 关联
A与B有直接关系,是个通用定义。类A依赖于类B。