1. UML类图
类图用于描述系统所包含的类和类之间的相互关系
1.1 类的图示
类的属性及其表示
- private使用 -
- protected使用 #
- public使用 +
- package使用 ~
1.2 接口
正好复习一下接口的特性:
- 接口不能被实例化
- 实现类可以实现多个接口
- 实现类必须实现接口所有方法(抽象类除外)
- 接口中的常量都是静态常量
2. 类间关系
2.1 依赖关系-Dependence
假设A类的改变影响了B类,那么B类就依赖于A类
特定事物改变可能影响到使用该事物的其他事物
什么时候用到依赖关系?
- A类实例作为B类方法的参数
- A类实例作为B类方法的局部变量
- B类调用A类的静态方法
依赖关系的UML图示
箭头由依赖方指向被依赖方,如下就是Driver依赖于Car类。
2.2 关联关系-Dependence
一个类对象与另一个类对象有联系,在C++/Java等实现中,通常将一个类的对象作为另一个类的属性。
2.2.1 双向关联
默认情况下,关联关系都是双向的。
exp:数据库管理员管理数据库,某些数据库被特定管理员管理
exp:用户对应对个订单,订单对应特定用户
2.2.2 单向关联
一方持有另外一方的实例,如学生对应成绩表、用户表的地址对应地址表
2.2.3 自关联
类的属性类型为类本身,如链表、树结构
2.2.4 多重性关联-Multiplicity
两对象在数量上对应的关系,如一对多、多对一、多对多等
2.2 聚合关系
表示整体与部分的关系,部分可以脱离整体存在,如图书馆和图书。
通常都是定义了一个整体,然后去思考它的内部结构,就会发现一些成员类,这些成员类与整体的关系就是聚合关系。
从代码实现角度,部分对象不由整体对象创建,而是通过整体对象的带参构造函数或者set方法传入。
表现方式:整体指向部分,空心菱形靠近整体
2.3 组合关系
也是整体与部分之间的关系,但是整体会影响到部分的生存周期,只要整体对象不存在了,部分对象也随之消亡。如,公司和部门、猫和猫的腿
表现形式:整体指向部分,实心菱形靠近整体
2.4 泛化关系/继承关系
用于描述父类和子类之间的关系,如Teacher继承People等
表现形式:带有空心三角形的实线指向父类
2.5 实现关系
接口与实现接口的类之间的关系。
表现形式:带空心三角形的虚线指向接口