面向对象设计 — UML之类图

761 阅读3分钟

🎯  类图是面向对象系统建模中最重要的图,是定义其它图的基础:类图主要是用来展现软件系统中的类、接口以及它们之间的静态结构。

这篇文章我们选取会议场景来详细介绍类图

图片

🚀  类: 类的种类主要有两种:一般类、抽象类。(也有说还有一种模板类)

图片

图1 成员类

类图的三栏分别表示:类名、类的属性、类的方法

类图的三列分别是:修饰符、属性/方法名、属性类型/方法返回值类型

修饰符如上图的左侧所示,使用  + # - 分别表示公有、保护和私有类型

图片

对于抽象类,其与类图的表示唯一区别在于类名是斜体的,如下Person抽象类:

图片

图2 抽象Person类

🚎  接口

我们将成员参会的相关操作封装成一个接口

图片

图3 参会成员接口

接口上下两栏分别定义了接口名(接口名上方需要添加<>标识)和一系列的抽象方法。

图片

那要怎样表达类、接口他们之间的关系呢?对此有六种关系,如下:

  1. 实现(Realization)
  2. 泛化(Generalization)
  3. 组合(Composition)
  4. 聚合(Aggregation)
  5. 关联(Association)
  6. 依赖(Dependency

🌑  实现 — Realization

图片

图4 成员实现参会成员接口

类与接口的关系为类实现接口,使用虚线空心箭头从类指向接口。

🌒  泛化 — Generalization

图片

图5 主持人继承成员类

类之间的第一种关系为泛化/继承,使用实线空心箭头从子类指向父类。

图片

🌓  聚合 — Aggregation

图片

图6 会议与主持人

在聚合关系中,成员对象是可以脱离整体存在的。整体对成员是一种弱拥有的关系,比如说一个会议没有了主持人还是可以存在的。

其他的如计算机与拓展坞、耳机之类的也是弱拥有关系。

🌔  组合 — Composition

图片

图7 会议与会议室

在组合关系中,整体和部分是强拥有关系,一个会议必须要有一个会议室,否则这个会议也是不存在的。

其他的如计算机与显示器、键盘之间也是组合关系。

图片

🌕  关联 — Association

我们可以将聚合与组合合称为关联关系,关联关系有单向关联与双向关联两种。

如 图7 中会议与主持人就是双向关联的,因为会议中含有主持人,主持人也可以操作会议,而会议与会议室则是单向关联的,即只有会议中可以访问会议室。

如果我们认为一个会议有多个主持人,则它们之间是一对多的关系。

图片

图8 会议与主持人 1:1...n 关联

双向关联可以使用实线+双向实心箭头表示,也可以直接使用一条实心直线表示。

而一个会议只能在一个会议室进行,但一个会议室可以开多个会议,则两者是多对1的关系。

图片

图9 会议与会议室 1...n:1 关联

单向关联可以使用实线+单向箭头表示。

🌝  依赖 — Dependency

如果一个类使用了另一个类,且属性中未包含该类的实例,则这两种的关系为依赖关系。

图片

图10 会议与摄像头

如有成员是远程参会的,则需要选择一个摄像头去直播这个会议,而会议是不包含摄像头的,则二者之间是依赖关系。

图片

以上基本上就是类图中最常用的知识了,那么读完整篇文章之后,你能看到下面的类图所表达的含义吗?

图片