https://juejin.cn/post/7231383831852498999

一、简介

UML类图(Unified Modeling Language class diagram)是一种用于可视化和描述软件系统中类、对象、接口、属性和方法之间关系的静态结构图,是 UML 中最基础、最常用的图之一,用于描述系统的静态结构。

二、作用

  • 帮助软件开发者和设计师更好地理解系统中各个类的功能和关系
  • 帮助软件开发者可以更快、更准确地理解需求
  • 有效地沟通和交流系统设计和实现方案
  • 帮助开发者预测系统的复杂性,从而更好地进行系统维护和升级

如果把UML类图生活化,我觉得它就像是做菜时的菜谱。

UML类图 菜谱
描述软件系统中的类,属性,方法,和类之间的关系 描述食物的材料,做法和烹饪顺序
帮助软件开发者更好地理解系统的结构和设计 帮助厨师更好地理解食物的制作过程和步骤
帮助软件开发者有效地沟通和交流系统设计方案 帮助厨师有效地沟通和交流食物制作方案

三、类的组成

3.1 类

30分钟学习UML类图 - 图1

解释说明:
属性的表达公式为: 可见性 属性:类型 = 默认值
方法的表达公式为:可见性 方法名(参数):返回类型
+号表示:该属性或方法是公有的,对所有类都是可见的,包括外部类、派生类等。
-号表示:该属性或方法是私有的,对定义该成员的类可见,其他类无法访问。

号表示:该属性或方法是受保护的,对该类的派生类可见,但对外部类不可见。

抽象类是类的一种类型,他在类图中需要特殊的展示,即抽象类名和抽象方法,需要斜体,如下:

30分钟学习UML类图 - 图2

3.2 接口

30分钟学习UML类图 - 图3

3.3 关系

3.3.1 依赖关系
依赖关系是一种比较弱的关系,它表示一个类使用了另一个类的某些功能,但是并不需要拥有它的实例或者继承它。 可以理解为一种“使用关系”,在一个类的操作中使用了另一个类的对象或方法,但是这种使用是非常短暂的,只是临时地使用一下而已,不会对系统产生任何实质性的影响。 举例:动物对水的依赖,新陈代谢需要使用到水

30分钟学习UML类图 - 图4

3.3.2 关联关系
关联关系是一种比较强的关系,它表示两个类之间存在某种联系,通常是一种持久性的关系。它在系统的整个生命周期都存在并产生实质性影响。如图书馆系统中的借阅者和书之间就有双向关联关系 或 气候决定了企鹅能否繁衍,其中气候与企鹅就有单向关联关系。

  1. 复制代码知识科普:企鹅和气候的关系
  2. 南极洲是世界上最冷的地方之一,企鹅的生存依赖于南极洲冰盖的存在,冰盖提供了它们生活的栖息地和
  3. 食物来源。然而,全球气候变暖导致南极洲的冰盖不断融化,这会影响企鹅的筑巢地点。在筑巢期间,企鹅
  4. 需要从冰上收集石头和泥土来建造巢穴。如果冰层融化,它们就无法找到这些材料,从而影响了繁殖。

30分钟学习UML类图 - 图5

以上的举例是来自我们经典教材的一张图,当时我学习到这块时,就有疑惑,为什么动物和水是依赖关系,而不是关联关系?
动物和水可以是关联关系,也可以是依赖关系。具体要看系统设计,例如我们有一个动物园管理系统,一个动物需要喝水才能生存,动物可以喝水,水可以被多种动物喝,这种关系就是关联关系。而依赖关系表示一个类依赖另一个类才能实现自已的功能,比如动物类中有一个getWaterTemperature()获取水温的方法。在该方法中,就需要调用水类的getTemperature(),才能获取到温度,那这就是一种依赖关系,而上图动物的新陈代谢使用到水,体现的是依赖关系。

3.3.3 聚合关系
聚合关系是一种弱的整体部分关系(has-a关系),表示部分对象可以组合成一个整体对象,但这些部分对象并不是整体对象的必要组成部分。例子:大雁和雁群,雁群是由大雁组成,但是即使雁群消失了,大雁也可以单独的存在。

30分钟学习UML类图 - 图6

3.3.4 组合关系
组合关系是一种强的整体部分关系(contains-a关系),表示一个对象(整体)由多个对象(部分)组成,整体对象负责管理和控制部分对象的生命周期。通常,部分对象不能独立存在,只能做为整体对象的一部分存在。例子:鸟和翅膀,鸟拥有一对翅膀,但是鸟消失了,翅膀也不存在了。

30分钟学习UML类图 - 图7

3.3.5 实现关系
实现关系是一种弱耦合的关系,指的是一个类实现了一个或多个接口,也称为接口实现关系。接口是一种规范或约束,描述了一个类应该具有哪些行为或功能。当一个类实现了一个接口时,就意味着它必须实现接口中定义的所有方法,以满足接口的规范。 例子,大雁实现飞翔接口。

30分钟学习UML类图 - 图8

3.3.6 继承关系
继承关系是一种类与类之间的关系(is-a关系),用于表示一个类从另一个类继承了属性和方法。当类 A 继承自类 B 时,类 A 就可以使用类 B 中的属性和方法,并且还可以在此基础上扩展自己的属性和方法,从而形成一种新的类。例子:鸟类继承动物类,拥有动物类的属性和方法。
30分钟学习UML类图 - 图9

四、总结

30分钟学习UML类图 - 图10

该图列举了以上的所有关系,以一种全局的视角供读者全面了解这些关系,有任何疑问可以评论区交流。下一篇将讲解对象图,欢迎关注。

作者:郑甲鱼
链接:https://juejin.cn/post/7231383831852498999
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。