🎯 类图是面向对象系统建模中最重要的图,是定义其它图的基础:类图主要是用来展现软件系统中的类、接口以及它们之间的静态结构。
这篇文章我们选取会议场景来详细介绍类图
🚀 类: 类的种类主要有两种:一般类、抽象类。(也有说还有一种模板类)
图1 成员类
类图的三栏分别表示:类名、类的属性、类的方法
类图的三列分别是:修饰符、属性/方法名、属性类型/方法返回值类型
修饰符如上图的左侧所示,使用 + # - 分别表示公有、保护和私有类型
对于抽象类,其与类图的表示唯一区别在于类名是斜体的,如下Person抽象类:
图2 抽象Person类
🚎 接口
我们将成员参会的相关操作封装成一个接口
图3 参会成员接口
接口上下两栏分别定义了接口名(接口名上方需要添加<>标识)和一系列的抽象方法。
那要怎样表达类、接口他们之间的关系呢?对此有六种关系,如下:
- 实现(Realization)
- 泛化(Generalization)
- 组合(Composition)
- 聚合(Aggregation)
- 关联(Association)
- 依赖(Dependency
🌑 实现 — Realization
图4 成员实现参会成员接口
类与接口的关系为类实现接口,使用虚线空心箭头从类指向接口。
🌒 泛化 — Generalization
图5 主持人继承成员类
类之间的第一种关系为泛化/继承,使用实线空心箭头从子类指向父类。
🌓 聚合 — Aggregation
图6 会议与主持人
在聚合关系中,成员对象是可以脱离整体存在的。整体对成员是一种弱拥有的关系,比如说一个会议没有了主持人还是可以存在的。
其他的如计算机与拓展坞、耳机之类的也是弱拥有关系。
🌔 组合 — Composition
图7 会议与会议室
在组合关系中,整体和部分是强拥有关系,一个会议必须要有一个会议室,否则这个会议也是不存在的。
其他的如计算机与显示器、键盘之间也是组合关系。
🌕 关联 — Association
我们可以将聚合与组合合称为关联关系,关联关系有单向关联与双向关联两种。
如 图7 中会议与主持人就是双向关联的,因为会议中含有主持人,主持人也可以操作会议,而会议与会议室则是单向关联的,即只有会议中可以访问会议室。
如果我们认为一个会议有多个主持人,则它们之间是一对多的关系。
图8 会议与主持人 1:1...n 关联
双向关联可以使用实线+双向实心箭头表示,也可以直接使用一条实心直线表示。
而一个会议只能在一个会议室进行,但一个会议室可以开多个会议,则两者是多对1的关系。
图9 会议与会议室 1...n:1 关联
单向关联可以使用实线+单向箭头表示。
🌝 依赖 — Dependency
如果一个类使用了另一个类,且属性中未包含该类的实例,则这两种的关系为依赖关系。
图10 会议与摄像头
如有成员是远程参会的,则需要选择一个摄像头去直播这个会议,而会议是不包含摄像头的,则二者之间是依赖关系。
以上基本上就是类图中最常用的知识了,那么读完整篇文章之后,你能看到下面的类图所表达的含义吗?