UML类图
现在开始学习一些设计模式了,首先需要看懂类图以及自己学会画类图。
基本属性
基于下图这个基本类图进行说明:
![image-20240309213449160](https://img-blog.csdnimg.cn/img_convert/feeef7331358ce2029a8f5a144cb8ee7.png)
-
最上面的 Student表示类名,如果为斜体则表示抽象类,下面的是类中的属性或者方法 -
属性的格式为 权限
属性名
:类型
,方法的格式为权限
方法名
:返回值类型(非必要)
-
+
表示public,-
表示private,#
表示protected,~
表示default
类的关系
讲完类之间的属性之后,我们需要考虑类之间的关系怎么表示,在类图中一般采用不同的箭头来表示不同的关系。
![类之间的关系](https://img-blog.csdnimg.cn/img_convert/a80483aa2db39ee42387386206ce2440.png)
在这些关系中的强弱顺序可以表示为:泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖
继承/泛化关系![image-20240309225636994](https://img-blog.csdnimg.cn/img_convert/3018895a9849202a80748be6e84152d8.png)
该箭头表示类之间是一种父子关系。子类指向父类,子类继承父类所有属性和行为(方法),子类可以重写父类的方法,子类可以新增其他方法。类似Java中的继承关系,这里就不举例了。
接口/实现关系![image-20240309230559203](https://img-blog.csdnimg.cn/img_convert/99b903d77761060b1abe9fdaf85a474b.png)
该箭头表示类之间是一种实现关系,也就是类实现接口。类指向接口,表示实现了该接口的属性和方法。类似于Java中的接口实现关系。
直接关联关系![image-20240310123318765](https://img-blog.csdnimg.cn/img_convert/f0b9bffca1b09a3325eb6855128486f5.png)
该箭头表示类之间关联关系,存在一对多,多对一,多对多的关系。即,某两个类之间的特定实例存在关联。比如一个订单对应一个客户,一个公司对应多个员工。
依赖关系![image-20240310134526581](https://img-blog.csdnimg.cn/img_convert/afae57d4d890f623bdc38f5fbd3f67a5.png)
该箭头表示类之间的依赖关系。比如A类的变化引起了B类的变化,那么就说B类依赖A类。通常体现在某个类的方法需要另一个类的对象作为参数。
聚合关系![image-20240310135503646](https://img-blog.csdnimg.cn/img_convert/e1ae2e29a05750a1d5e59290db475182.png)
表示整体和部分的关系,属于关联关系的一种。但是部分可以离开整体存在,属于强关联关系。
组合/合成关系![image-20240310135848072](https://img-blog.csdnimg.cn/img_convert/6e78901af349749965403a1d2c391764.png)
是整体与部分的关系,但部分不能离开整体而单独存在。如公司和部门是整体和部分的关系,没有公司就不存在部门。