看懂UML类图:你需要知道的6种关系

什么是UML

UML是 Unified Modeling Language 的简写,即统一建模语言

它是由OMG 组织(Object Management Group对象管理组织)于1997年发布的。UML提供了一套标准的建模符号,使得系统的架构设计和规划的表达更加规范化。作为端着Java饭碗的底层码工,没搞过系统设计,但至少要会按图施工吧,这里的图就包含了UML类图。

其实,UML不止是类图,还有对象图、用例图、部署图、状态图、活动图等。本篇只说UML类图中的6种关系:

  • 泛化(Generalization)关系
  • 实现(Realization)关系
  • 聚合(Aggregation)关系
  • 组合(Composition)关系
  • 关联(Association)关系
  • 依赖(Dependency)关系

泛化关系

泛化关系其实是一种继承关系,我们常说的 is-a的关系。

比如狗是动物。

泛化关系用一条带空心箭头的直接表示。

在这里插入图片描述

实现关系

顾名思义,这个就是Java里的implements 实现的语义。

我们常说的实现一个接口,就是指这种关系。

实现关系用一条带空心箭头的虚线表示

在这里插入图片描述

聚合关系

聚合关系表述的是一种整体与部分的关系。

比如一台汽车有一台发动机+四个轮胎。

使用带空心菱形的实心线表示,菱形指向整体。

在这里插入图片描述

组合关系

组合关系很容易和聚合关系混淆,因为组合关系也是表示整体与部分的关系。只不过,它的语义更强。是一种强关系。

如果整体不存在了,那部分也就不存在了。

假如就是这里的整体,如果地球不存在了,那它上面的所有国家都将不复存在。

组合关系用一条带实心菱形箭头直线表示。实心嘛,表示在聚合关系上面加强了。

在这里插入图片描述

关联关系

关联关系是一种强关系,是一种拥有的关系,它使一个类知道另一个类的属性和方法。

关联关系是用一条直线表示的。

关联关系默认不强调方向,表示对象间相互知道;如果特别强调方向,如下图,表示A知道B,但 B不知道A。

在这里插入图片描述

比如老师和学生的关系,学生和课程的关系。

在这里插入图片描述

依赖关系

依赖关系是用一套带箭头的虚线表示的;如下图表示A依赖于B;他描述一个对象在运行期间会用到另一个对象的关系;

在这里插入图片描述

与关联关系不同的是,它是一种临时性的关系,通常在运行期间产生,并且随着运行时的变化; 依赖关系也可能发生变化;

值得注意的是尽量不要使用双向依赖。

在最终代码中,依赖关系体现为类构造方法及类方法的传入参数,箭头的指向为调用关系;

最后,使用一张类图汇总下这6种关系。

在这里插入图片描述

作者:二营长的笔记
微信搜“二营长的笔记”,关注公众号,回复“二营长”,无套路免费领取Java技术栈全套资料大全。

猜你喜欢

转载自blog.csdn.net/m0_37965018/article/details/104011044