欢迎来到UML类图的世界

较为官方式的解释,UML 这三个字母的全称是 Unified Modeling Language,直接翻译就是统一建模语言,简单地说就是一种有特殊用途的语言。
UML 的模型主要有三部分构成:
事物(Things):UML 模型中最基本的构成元素,是具有代表性的成分的抽象。
关系(Relationships):关系把事物紧密联系在一起。
图(Diagrams):图是事物和关系的可视化表示。

但根据我个人的理解,我感觉 UML类图 是一种类似语言的工具,它可以用于交流,就像中国的普通话一样,还有汉字,又比如一种标识,比如交通规则等等。

为何学习UML类图

1.在一些书籍上,会出现类似下面图中的UML类图,学会看类图,读懂它,掌握与别人的沟通桥梁。


2.自己如何将自己的整体的架构与设计模式告诉别人,我感觉也是学习UML很重要的一个点。(哪怕一个类里面有很多变量,方法,引用等等,但 一张UML类图就可以描述,简洁方便。)

3.也是一个程序员必备的技能树。

UML类图有哪些工具

UML工具 Astah community,visio,ProcessOn,StartUML,WPS也可以噢.

UML类图

在UML类图中,常见的有以下几种关系: 泛化(继承 Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)。

1.继承(泛化)
【实现关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。例如:老虎是动物的一种,即有老虎的特性也有动物的共性。
【箭头指向】:带三角箭头的实线,箭头指向父类

2.实现.
【实现关系】:是一种类与接口的关系,表示类是接口所有特征和行为的实现.
【箭头指向】:带三角箭头的虚线,箭头指向接口


3.关联
一个类对象与另一个类对象有联系,在C++/Java等实现中,通常将一个类的对象作为另一个类的属性。
【关联关系】:是一种拥有的关系,它使一个类知道另一个类的属性和方法;如:老师与学生,丈夫与妻子关联可以是双向的,也可以是单向的。 双向的关联可以有两个箭头或者没有箭头,单向的关联 或 自关联 有一个箭头。
【代码体现】:成员变量
【箭头及指向】:带普通箭头的实心线,指向被拥有者

关联关系又可进一步分为单向关联、双向关联和自关联。

1)单向关联

我们可以看到,在UML类图中单向关联用一个带箭头的直线表示。上图表示每个顾客都有一个地址,这通过让Customer类持有一个类型为Address的成员变量类实现。

(2)双向关联

从上图中我们很容易看出,所谓的双向关联就是双方各自持有对方类型的成员变量。在UML类图中,双向关联用一个不带箭头的直线表示。上图中在Customer类中维护一个Product[]数组,表示一个顾客购买了那些产品;在Product类中维护一个Customer类型的成员变量表示这个产品被哪个顾客所购买。

(3)自关联

自关联在UML类图中用一个带有箭头且指向自身的直线表示。上图的意思就是Node类包含类型为Node的成员变量,也就是“自己包含自己”。

  1. 聚合

    上图中的Car类与Engine类就是聚合关系(Car类中包含一个Engine类型的成员变量)。由上图我们可以看到,UML中聚合关系用带空心菱形和箭头的直线表示。聚合关系强调是“整体”包含“部分”,但是“部分”可以脱离“整体”而单独存在。比如上图中汽车包含了发动机,而发动机脱离了汽车也能单独存在。

  1. 组合
    组合关系与聚合关系见得最大不同在于:这里的“部分”脱离了“整体”便不复存在。比如下图:

    显然,嘴是头的一部分且不能脱离了头而单独存在。在UML类图中,组合关系用一个带实心菱形和箭头的直线表示。

比如 RecyclerView 带的 Recycler.

与聚合关系最大的不同是 : 部分离开整理是不能单独存在的。 比如下面的这个例子,分明显部门 是属于特定的公司的,如果部门脱离所在的公司,不能单独存在的,所以部门和员工之间的关系是组合关系。

  1. 依赖
    【依赖关系】:是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖.
    【代码表现】:局部变量、方法的参数或者对静态方法的调用
    【箭头及指向】:带箭头的虚线,指向被使用者

    从上图我们可以看到,Driver的drive方法只有传入了一个Car对象才能发挥作用,因此我们说Driver类依赖于Car类。在UML类图中,依赖关系用一条带有箭头的虚线表示。

内部类表示方式:

参考资料

五分钟读懂UML类图

UML 统一建模语言

时序图

UML条件判断

UML之包图(Package Diagram)

UML类图之间的关系:依赖、关联、聚合、组合等

UML时序图资料:
http://www.woshipm.com/ucd/607593.html

UML类图-从入门到放弃相关推荐

  1. astash制作UML类图 简单入门教程

    下载安装astash 地址 http://astah.net/downloads/ 创建一个最简单的UML图 新建一个UML文件 file - new 选择导入java文件 导入java文件 选择相应 ...

  2. idea server日志乱码_IDEA高级玩法:集成JIRA、UML类图插件、SSH、FTP、Database管理

    作者:菩提树下的杨过 链接:https://www.cnblogs.com/yjmyzz/p/intellji-idea-advanced-usage.html idea 还有很多高大上的功能,反正我 ...

  3. uml类图例子_转:(中文命名)UML类图新手入门级介绍

    下文转于 2019-05-10.2020-03-10 发觉本出自2007 年出版的<大话设计模式>一书(作者: 程杰)第一章.于是将文末原链接删去. 转载注: 中文命名的优势在UML图这样 ...

  4. 第 3 章 UML 类图

    第 3 章 UML 类图 1.安装 UML 插件 Eclipse安装AmaterasUML 参考资料:https://blog.csdn.net/lsh1358046425/article/detai ...

  5. 看懂UML类图和时序图

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

  6. 基础(UML类图,设计原则)

    序言: 面向对象是PHP5之后增加的功能,是PHP走向现代语言的一个标志. 在过程式设计时代,PHP以学习成本低.入门快的特点赢得很多WEB开发者的青睐,但同时也限制了PHP的发展. 借鉴Java和C ...

  7. java进阶之UML类图和时序图

    目录 UML概述 UML图分类 类图和时序图 类图 类图概述 类图的结构 类图中的关系 时序图 时序图概述 组成元素 示例图 UML概述 统一建模语言(英语:Unified Modeling Lang ...

  8. ABP源码uml类图

    陆陆续续学习ABP框架有一段时间了,阳光铭睿的入门教程和HK Zhang的源码分析文章对我的学习帮助都很大.之所以会花这么大工夫去学习ABP.看ABP的源代码,一是因为本人对于DDD也非常有兴趣,AB ...

  9. 画流程图和UML类图

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

最新文章

  1. MySQL 数据库规范--开发篇
  2. UA MATH571B 试验设计 QE练习题 平衡非完全区组设计BIBD
  3. 统计思维:程序员数学之概率统计(第2版):第1章 探索性数据分析
  4. 使用pandas进行量化回测(akshare)
  5. 为什么我饿了么产品总监不干,却要从事自由职业?
  6. php mysql 框架_YCKIT-一个基于PHP+MYSQL架构下的敏捷开发框架
  7. java/android 做题中整理的碎片小贴士(15)
  8. android通知悬浮通知_Android通知直接回覆
  9. 《啊哈算法》的Java实现| 第五章:图
  10. 解决Glide 4.8.0 圆角与CenterCrop 的冲突问题
  11. 前端模块打包工具--webpack
  12. 坑多路难走,学数据分析转行前要知道培训机构不会说的事情
  13. GLPI 无法登录、账号没有权限的解决方法
  14. linux编译libmp3lame,使用libmp3lame库编码mp3
  15. python怎么过滤标点符号大全_python 过滤标点符号
  16. 【ICML 2020联邦学习论文解读】SCAFFOLD: Stochastic Controlled Averaging for Federated Learning
  17. java.sql.SQLException: The connection property ‘zeroDateTimeBehavior‘ acceptable values are: ‘CONVER
  18. 各品牌主板、笔记本、台式机启动快捷键
  19. 8月5日 网工学习 CRC校验码 HDLC协议
  20. javaweb基于JSP+Servlet开发红(白)酒购物商城系统(前台+后台 防伪码查询)毕业设计源码

热门文章

  1. 超级完备的 AI 学习路线,最详细的资源整理!
  2. Ubuntu更新或者安装后的闪屏问题解决
  3. 学计算机cpu重要还是显卡重要,别叫我小白:游戏本是处理器重要还是独显重要?...
  4. 不间断空格的html实体,html中空格字符实体整理
  5. 三维动画在计算机上的应用,三维动画在建筑施工中的应用
  6. java基础学习面向对象之匿名内部类 五-13
  7. 从Oracle到MySQL,余额宝的云实践
  8. 组织过程资产、事业环境因素区别
  9. auc 和loss_深入理解AUC
  10. LayoutInflater.from(this)、inflate 详解