文档章节

UML类图符号理论

算法与编程之美
 算法与编程之美
发布于 2016/02/18 14:34
字数 1080
阅读 300
收藏 14

0. 前言

相信大家在学习UML类图的时候,最大的困难可能来自两个方面:

  • 类图中各种关系的区别;
  • 多种关系的符号记忆容易混淆;

本着"Do one thing and do it well."的原则,本文不介绍UML类图中各种关系的区别。而重在介绍UML类图的符号理论,以及利用该理论帮助大家更好的记忆。

1. 准备

在开始阅读本文之前,你需要了解的知识有:

  • UML类图的概念;
  • UML类图有几种关系;
  • 各种关系的强弱;

2. UML类图符号理论基础

UML类图主要有以下几种关系:

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

以上这六种关系的强弱是:

泛化 > 实现 > 组合 > 聚合 > 关联 > 依赖

这六种关系,每一种都对应着一个符号。加起来就有六种符号,要想在较短的时间内记住这六种符号而且不产生混淆是一件不太容易的事情。那么该如何更有效的来记忆这些符号?

接下来我们将首先认识一下关于符号的基础知识。

2.1 类图符号基础知识

首先我们从整体上来认识一下表达类图关系的符号,类图关系的符号由三部分组成:箭头、线条和箭尾。

输入图片说明

  • 箭头形状有两种,分别为箭头和三角箭头。

输入图片说明

  • 线条形状有两种,分别为实线和虚线。

输入图片说明

  • 箭尾形状有三种,分别为点、空心菱形和实心菱形。

输入图片说明

综上,我们可以得知表达类图关系的符号一共有2 x 2 x 3 = 12种,但是UML类图中只有6种关系,所以还剩下6种关系未被使用。

在了解类图关系的符号表达之后,我们来看一下符号的优先级关系。

2.2 符号优先级

从关系符号的组成来看,我们定义以下优先级关系:

箭头 > 箭尾 > 线条
  • 对于箭头:
三角箭头 > 箭头
  • 对于箭尾:
实心菱形 > 空心菱形 > 点
  • 对于线条:
实线 > 虚线

所以,从上述优先级我们不难得出:

三角箭头+实线 > 三角箭头+虚线 > 箭头+实心菱形 > 箭头+空心菱形 > 箭头+实线 > 箭头+虚线

上面的六种符号就是UML类图中定义的六种关系符号表达。

3. 应用

我们可以利用上述符号理论,轻松记忆UML的类图关系符号。具体的记忆方法如下:

  • 了解各种关系的强弱排序;
  • 了解符号的优先级关系;

类图关系符号一共有6个,我们分成3组,每组2个来记忆。

首先来记忆箭头:

  • 三角箭头 + 实线
  • 三角箭头 + 虚线

这两种分表表示泛化和实现。

接下来记忆箭尾:

  • 实心菱形 + 实线
  • 实心菱形 + 虚线 分别表示组合和聚合。

最后我们来记忆线条:

  • 箭头 + 实线
  • 箭头 + 虚线 分别表示关联和依赖。

有了这样的分组和符号优先级关系,我们就能很轻松的记忆UML类图关系,从此不再混淆,而且印象深刻。

4. 总结

本文主要介绍了UML类图符号的基础知识,并利用该基础知识帮助大家更好的记忆UML类图关系符号。

从UML类图符号基础知识,我们分析得出一共有12种符号,但是UML类图关系只使用了6种,剩下的其他6种如下:

  • 三角箭头 + 实心菱形 + 实线

  • 三角箭头 + 实心菱形 + 虚线

  • 三角箭头 + 空心菱形 + 实线

  • 三角箭头 + 空心菱形 + 虚线

  • 箭头 + 实心菱形 + 虚线

  • 箭头 + 空心菱形 + 虚线

如果今后UML需要定义新的类图关系,则可以参考上述符号理论,使用上述6种符号。

5. 相关资料

© 著作权归作者所有

共有 人打赏支持
算法与编程之美
粉丝 292
博文 94
码字总数 103082
作品 0
成都
程序员
私信 提问
加载中

评论(3)

jasonkavay
jasonkavay
非常不错!博主,我们做了一个帮助博主推广博客的app叫同行说,只需复制文章链接即可发布给更多程序员们看到哦,欢迎体验哈,一起发扬分享精神~
paul2011
paul2011
开发2年,几乎没用过
终于不当程序员
终于不当程序员
……用多了就记住了。
UML类图符号 各种关系说明以及举例(转载)

文章出处:http://www.cnblogs.com/duanxz/archive/2012/06/13/2547801.html UML中描述对象和类之间相互关系的方式包括:依赖(Dependency),关联(Association),聚合(Aggregation),组合...

李永china
2016/05/25
9
0
DDD理论学习系列(5)-- 统一建模语言

DDD理论学习系列——案例及目录 1.引言 上一节讲解了领域模型,领域模型主要是将业务中涉及到的概念以面向对象的思想进行抽象,抽象出实体对象,确定实体所对应的方法和属性,以及实体之间的...

圣杰
2017/06/05
0
0
人人都会设计模式---观察者模式--Observer

观察者模式大纲 PS:转载请注明出处 作者: TigerChain 地址: www.jianshu.com/p/b972ba509… 本文出自 TigerChain 简书 人人都会设计模式 教程简介 1、阅读对象 本篇教程适合新手阅读,老手直...

TigerChain
2017/11/28
0
0
06、观察者模式--Observer

观察者模式大纲 以后文章会第一时间发在公号,请大家添加博文的公号,扫描添加即可关注 公众号:TigerChain TigerChain PS:转载请注明出处 作者: TigerChain 地址: http://www.jianshu.com/...

TigerChain
2017/11/27
0
0
UML之时序图

来自: IBM Rational Edge   现在是二月,而且到如今你或许已经读到、或听到人们谈论UML 2.0 —— 包括若干进步的 UML 的新规范,所做的变化。考虑到新规范的重要性,我们也正在修改这个文章...

tantexian
2016/07/06
52
0

没有更多内容

加载失败,请刷新页面

加载更多

聊聊flink的NetworkEnvironmentConfiguration

序 本文主要研究一下flink的NetworkEnvironmentConfiguration NetworkEnvironmentConfiguration flink-1.7.2/flink-runtime/src/main/java/org/apache/flink/runtime/taskmanager/NetworkEnv......

go4it
33分钟前
1
0
极路由4刷OpenWrt(LEDE)

申请开发者模式 登录路由器后台 进入插件中间 选中路由器信息 申请开发者权限 安装开发者插件 刷 Bootloader 下载 极路由4 的 Breed 通过SSH登录路由器 (必须安装开发者插件,端口 1022 账号...

dingdayu
42分钟前
3
0
浅淡个人学习嵌入式Linux过程

我专业是电子信息工程,在初入大学的时候,我们的班主任便要我们多多去了解一些关于电子方面的知识。后来我了解到了嵌入式,继而了解到了嵌入式Linux。其实我们学习linux差不多就学习linux内...

linux-tao
今天
7
0
SpringBoot使用GraphQL简单学习-1

官网 一、GraphQL简介 1.GraphQL是什么? GraphQL 既是一种用于 API 的查询语言也是一个满足你数据查询的运行时。 GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够...

wind2012
今天
6
0
Android的WIFI局域网对讲机

https://blog.csdn.net/z979451341/article/details/79280749 (三)Android局域网内语音对讲 基于UDP语音传输 https://blog.csdn.net/stormxiaofeng/article/details/80513947 Android7.0手......

shzwork
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部