目录

1、UML 定义

2、类图中每个类的构成

3、UML类图中箭头的含义

3.1、实线空心箭头

3.2、虚线空心三角箭头

3.3、 实线箭头

3.4、虚线箭头

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

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

4、结语


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 类图的结构,这样在后续的学习或工作中,遇到别人画的类图,起码能看懂是啥意思。我这里也是帮大家温故一下。

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

  1. 根据应用场景画出UML类图并代码实现

    第一次尝试这种风格写代码,感觉蛮不错的 这种代码的设计风格实现起来就很舒服 第一题实现: class Car {constructor(number, name) {this.number = num ...

  2. Java 大黑话讲解设计模式 -- UML类图

    前言 关于UML类图的这篇文章,我觉得把它放在设计模式专栏的篇首最为合适,因为在学习设计模式的时候,经常会遇到有关UML类图,没有去专门学过的童鞋肯定会感觉很复杂.学到后面,发现不掌握UML类图,对设 ...

  3. android 继承类图,Android Studio中绘制UML类图介绍

    Android Studio中绘制UML类图介绍 Android Studio中绘制UML类图介绍 动机 最近开始阅读项目源码,从其中一个模块开始看,奈何大项目中的一个模块,对于萌新而言,也太过于复杂 ...

  4. javascript 绘制uml_js面向对象编程和UML类图的设计

    引言 前端一直以来由于JavaScript的语言特性和一些限制导致不能很好的和Java等强类型语言一样面向对象化编程,导致es6到来以后,class的语法糖或者ts中面向对象编程的设计显得比较薄弱,接 ...

  5. 身为程序员还看不懂UML类图? 一文带你零基础学会看UML类图!

    身为程序员还看不懂UML类图? 一文带你零基础学会看UML类图! 一,UML类图示例图 二,UML类图图例 三,分步解析说明 3.1 类图: 3.2 接口: 3.3 实现继承 3.4 实现接口: 3. ...

  6. 看懂UML类图和时序图

    看懂UML类图和时序图 这里不会将UML的各种元素都提到,我只想讲讲类图中各个类之间的关系: 能看懂类图中各个类之间的线条.箭头代表什么意思后,也就足够应对 日常的工作和交流: 同时,我们应该能将类图 ...

  7. 画流程图和UML类图

    画流程图https://www.processon.com/diagraming/59fc753ee4b0edf0e25e8350 今天因为汇报需要自己画个流程图,才发现原来自己认为很常见的流程图画起 ...

  8. Mac下安装 PlantUML 插件画时序图、UML类图

    1. 安装 PlantUML 插件 安装完 PlantUML 就可以画时序图.流程图了. 但是,不能画 UML 类图,还少了一个图形渲染的工具 Graphviz. 2.在 Mac 上安装 Graphv ...

  9. 设计模式(二)——UML类图怎么画

    UML类图怎么画 一.注释(comment) 注释就是对类图的补充说明,可以附加在任何元素上,用右上角有折角的矩形来表示,其内放置说明文字,通过虚线连接被注释的元素. 二.类(Class) 在面向对象 ...

最新文章

  1. HTML的标签描述21
  2. ITK:处理点和单元数据
  3. 巧用windows xp远程桌面web连接
  4. 机器学习算法之 logistic、Softmax 回归
  5. java 保存 设置_如何在菜单中保存设置
  6. 介绍一个基于SpringBoot2的脚手架项目
  7. Java中的正则表达式
  8. 新版Fiddler1.5.1的证书导出和Chrome,Edge,Firefox浏览器导入证书
  9. 联想拯救者Y7000P拆机清灰学习
  10. 如何根据图片找到图中的地点
  11. MXF视频文件损坏的修复方法
  12. 编写仿supersu的权限管理工具(aosp11 root、实现aosp系统内置wifi、root管理apk)
  13. unity obi插件
  14. flex布局练习,仿手机淘宝首页
  15. Linux系统如何优化
  16. Automation Anywhere视频教程
  17. 如何保护自己的网络隐私
  18. WPF-Interaction.Triggers
  19. 无线网络技术导论笔记(第六讲)
  20. 美通企业日报 | 全球金融科技50强榜中企居首;施乐退出与富士胶片合资企业...

热门文章

  1. 颜值测试软件99分,颜值测试软件(超准的颜值打分器)
  2. java调用net的webservice_java和.net互相调用webservice注意事项
  3. 【附源码下载】推荐20个开源的Java项目
  4. NEO Onchain 创始人达鸿飞:构建可合规的区块链
  5. 送5本新出版计算机科普漫画书
  6. 有哪些常见的游戏建模软件?建模师的日常工作做什么?
  7. html5 li表格纵向合并,vue elementui 表格合并/纵向表头
  8. 《设计的品格 探索×呈现×进化的InDesign美学》—第1课1.7节段落
  9. IOS---------------------------开发常用代码
  10. 英特尔发布全新第9代酷睿处理器