写点什么

如果你看不懂别人画的 UML 类图,看这一篇文章就够了

  • 2022-10-20
    北京
  • 本文字数:1390 字

    阅读完需:约 1 分钟

如果你看不懂别人画的 UML 类图,看这一篇文章就够了

​1、UML 定义


统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言,是非专利的第三代建模和规约语言。UML 是面向对象设计的建模工具,独立于任何具体程序设计语言。


可以帮助我们表示软件的结构:不同的模块、类和对象如何相互交互,以及它们之间的关系是什么。


UML 经常与面向对象的设计结合使用,但它具有更广泛的适用范围。



UML 中,我们可以定义系统的结构和行为,并且可以通过图表可视化全部或者部分模型。有两种类型的图表:


  • 结构图用于表示系统的结构。有许多类型的结构图,但我们只讨论类图。对象图、包图和组件图均类似于类图。

  • 行为图用于描述系统的行为。交互图是行为图的子集,用于描述系统的不同组件之间的控制流和数据流。在行为图中,顺序图广泛用于面向对象的设计中。


类图是面向对象设计和开发阶段中使用最多的图类型。


类图是一种结构图,用于说明类的结构及类之间的关系。


如图 1-1 所示:​


​图 1-1


类图用于描叙类在应用程序中的结构非常有用。大多数时候,仅仅查看结构就足以了解类如何交互,但有时这还不够。


那么这个时候,我们可以使用行为图和交互图,其中顺序图用于描叙类和对象的交互。让我们使用顺序图来显示 Car 对象和 Vehicle 对象如何在继承和多态示例中进行交互,如图 1-2 所示:

​ 图 1-2

2、类图中每个类的构成


​类图中,每个类由 3 个部分组成,上面的是类名,中间的是属性,下面的是方法


属性和方法可以用修饰符修饰:

  • 加号(+)表示 public;

  • 减号(-)表示 private;

  • 井号(#)表示 protected

3、UML 类图中箭头的含义


3.1、实线空心箭头

含义: 泛化=继承泛化是一种一般与特殊、一般与具体之间关系的描述,具体描述建立在一般描述的基础之上,并对其进行了扩展。 

3.2、虚线空心三角箭头


​含义: 实现

实现是一种类与接口的关系,表示类是接口所有特征和行为的实现,在程序中一般通过类实现接口来描述。

​3.3、 实线箭头


含义: 关联

表示类与类之间的联接,它使一个类知道另一个类的属性和方法,这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的。java 中一个类的全局变量引用了另一个类,就表示关联了这个类,A 类的属性引用了 B 类。

3.4、虚线箭头


含义: 依赖

是一种使用的关系,即一个类的实现需要另一个类的协助。java 中,方法参数需要传入另一个类的对象,就表示依赖这个类。如图中所示 A 类中的方法参数需要传入 B 类的对象​。

3.5、尾部为空心菱形箭头 (也可没箭头)



含义: 聚合

上图中的 Car 类与 Engine 类就是聚合关系(Car 类中包含一个 Engine 类型的成员变量)。由上图我们可以看到,UML 中聚合关系用带空心菱形和箭头的直线表示。


聚合关系强调是“整体”包含“部分”,但是“部分”可以脱离“整体”而单独存在。比如上图中汽车包含了发动机,而发动机脱离了汽车也能够单独存在。 

3.6、尾部为实心菱形箭头 (也可没箭头)


​​

含义: 组合

组合关系与聚合关系间的最大不同在于:这里的“部分”脱离了“整体”便不复存在。 

4、结语

在 UML 类图中,常见的就是六种关系:泛化(Generalization),实现(Realization),关联(Association),依赖(Dependency),聚合(Aggregation),组合(Composition)。

这篇文章主要想帮助大家了解一下 UML 类图的结构,这样在后续的学习或工作中,遇到别人画的类图,起码能看懂是啥意思。我这里也是帮大家温故一下。


发布于: 刚刚阅读数: 7
用户头像

专注于后端Java开发的全栈工程师。 2021-08-17 加入

还未添加个人简介

评论

发布
暂无评论
如果你看不懂别人画的 UML 类图,看这一篇文章就够了_Java设计模式_跟着飞哥学编程_InfoQ写作社区