观书散遗帙,探古穷至妙。这篇文章主要讲述架构师必须学会的UML图小结相关的知识,希望能为你提供帮助。
@[TOC]
一、 UML 是什么
定义
UML 是统一建模语言,是一种开放的方法,用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的制品的开放方法。
作用
- 帮组开发团队以一种可视化的方式理解系统的功能需求。
- 有利于开发团队队员之间在各个开发环节间确立沟通的标准,便于系统文档的制定和项目的管理。因为 UML 的简单、直观和标准性,在一个团队中用 UML 来交流比用文字说明的文档要好的多。
- UML 为非专业编程人士理解软件的功能和构造,提供了一种直白、简单、通俗的方法。
- 使用 UML 可以方便的理解各种框架的设计方式。
- MarkDown
- PlantUML
- Draw.io(Mac)
- PowerDesigner (Windows)
只要掌握常用的几种图 (用例图、类图、时序图、活动图) ,就已经迈向架构第一步了,工作学习中交流起来就容易多了。
三、UML 类图中的关系在 UML 类图中,常见的有以下几种关系:
- 泛化(Generalization)(继承)
- 实现(Realization)
- 关联(Association)
- 聚合(Aggregation)
- 组合(Composition)
- 依赖(Dependency)
UML 类与类之间的关系表示总览:
文章图片
以下 UML 图用的是 Draw.io来画的,开源地址:https://github.com/jgraph/drawio
1.泛化(继承)
【泛化关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。
【例如】:男人是人的一种,既有男人的特性也有人的共性。女人也是如此。
【箭头指向】:带三角箭头的实线,箭头指向父类。
【架构师必须学会的UML图小结】
文章图片
2. 实现(Realization)
【实现关系】:是一种类与接口的关系,表示类是接口所有特征和行为的实现。
【例如】:USB 是一个接口,每一个电脑都可以插上 USB 这个接口。
【箭头指向】:带三角箭头的虚线,箭头指向接口。
文章图片
3. 关联(Association)
【关联关系】:是一种拥有的关系,它使一个类知道另一个类的属性和方法。关联可以是双向的,也可以是单向的。
【例如】:老师与学生是双向关联,老师有多名学生,学生也可能有多名老师。但学生与某课程间的关系为单向关联,一名学生可能要上多门课程,课程是个抽象的东西,他不拥有学生。
【代码体现】:成员变量。
【箭头及指向】:双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。
文章图片
4. 聚合(Aggregation)
【聚合关系】:是整体与部分的关系,可以看成 「has-a」 的关系,部分可以离开整体而单独存在。
【例如】:电脑和键盘是整体和部分的关系,电脑没了键盘仍然可以存在。
【代码体现】:成员变量。
【箭头及指向】:带空心菱形的实心线,菱形指向整体。
文章图片
5. 组合(Composition)
聚合关系】:是整体与部分的关系,可以看成 「contains-a」 的关系,部分离开整体后无法单独存在。
【例如】:鸟儿和翅膀是整体和部分的关系,鸟儿没了翅膀不能独立存在。
【代码体现】:成员变量。
【箭头及指向】:带实心菱形的实心线,菱形指向整体。
文章图片
6. 依赖(Dependency)
【聚合关系】:是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖。
【例如】:人依赖计算机实现玩电脑游戏的目的。
【代码体现】:局部变量、方法的参数或者对静态方法的调用。
【箭头及指向】:带箭头的虚线,指向被使用者。
文章图片
如果要画项目的设计图,有很多类的关系图,这个软件可以使用。如果需要快速在设计某个功能时也可以使用 PlantUML 来实现,怎么快怎么来。
可以在网页上画,在 IDE中也有插件 :
文章图片
比如我在总结设计模式系列时,就用这个来画。
用代码来直接渲染生成UML 设计图片
代码如下:
@startuml
skinparam classAttributeIconSize 0package "class ChainOfResponsibility(责任链模式)"
abstract class Handler#setSuccessor(Handler)
+handle():voidnote left: 抽象处理者class HandlerA+handle():voidclass HandlerB+handle():voidclass HandlerC+handle():voidHandler o-- Handler:0..1
Handler <
|-- HandlerA
Handler <
|-- HandlerB
Handler <
|-- HandlerC
Client ..>
Handler@enduml
生成的效果图:
文章图片
四、小结UML 是每一个软件开发者都必须要熟练掌握的,如何你还不会,赶紧学习(卷)起来吧。
参考资料:
- PlantUml
推荐阅读
- OSPF+RIP+路由重分发+NAT实例
- 华为联运游戏审核驳回(在未安装或需更新HMS Core的手机上,提示安装,点击取消后,游戏卡屏(集成的6.1.0.301版本游戏SDK))
- HarmonyOSArkUI 鸿蒙 ets怎么调用PA
- HarmonyOSJS鸿蒙Js camera怎么拍照并使用image显示出来
- 如何在Xamarin中快速集成Android版认证服务-邮箱地址篇
- 超简单集成华为HMS MLKit 机器学习服务 银行卡识别SDK,一键实现银行卡绑定
- 超简单集成HMS ML Kit实现最大脸微笑抓拍
- 全网对 STP 生成树协议最全面最优质的总结,网络工程师收藏!
- Linux磁盘管理之(逻辑卷从概念到应用的最佳实践,)