终于明白六大类UML类图关系了
UML,全称Unified Modeling Language,统一建模语言。而UML图分为用例图、类图、对象图、状态图、活动图、时序图、协作图、构件图、部署图等9种图。
在面向对象语言中,我们经常看到有用UML类图去表示各种接口和类之间关系的。但是,每次看的都是云里雾里,搞不清楚那些虚线,箭头都是代表什么意思。今天,就让我们来一探究竟吧。
UML类图中有六种关系,分别是依赖关系,关联关系,聚合关系,组合关系,实现关系,泛化关系。
经过我自己的理解,画出了六种关系的示例图。类的成员变量和方法前面的修饰符有public, private, protected, default,在UML类图中分别用 +, -, #, ~表示。
一、依赖关系
依赖关系是一种使用关系,表示某个类依赖于另外一个类,通常表现为,某个类的方法的参数使用了另外一个类的对象。
在UML类图中,依赖关系用带箭头的虚线表示,箭头从使用类指向被依赖的类。下图中表示,程序员依赖于计算机来编写代码。

二、关联关系
关联关系是对象之间的一种引用关系,表示一个类和另外一个类之间的联系,如老师和学生,丈夫和妻子等。
关联关系有单向和双向的。在UML类图中,单向关联用一个带箭头的实线表示,箭头从使用类指向被关联的类,双向关联用带箭头或者没有箭头的实线来表示。

上图表示老师和学生之间的关系是双向的,一个老师可以有多个学生,一个学生也可以有多个老师。学生和课程之间是单向的,一个学生会学习多门课程,而课程是一个抽象的概念,它不拥有学生。
三、聚合关系
聚合关系是关联关系的一种,表示整体和部分之间的关系,如学校和老师,车子和轮胎。
聚合关系在类中是通过成员对象来体现的,成员是整体的一部分,成员也可以脱离整体而存在。如老师是学校的一部分,同时老师也是独立的个体,可以单独存在。
在UML类图中,用带空心菱形的实线来表示聚合关系,菱形指向整体。

四、组合关系
组合关系是整体和部分之间的关系,也是关联关系的一种,是一种比聚合关系还要强的关系。部分对象不能脱离整体对象而单独存在,如人的身体和大脑之间的关系,大脑不能脱离身体而单独存在。
在UML类图中,用带实心菱形的实线来表示组合关系,菱形指向整体。

五、实现关系
实现关系就是接口和实现类之间的关系。类实现了接口中的抽象方法。
在UML类图中,用带空心三角箭头的虚线来表示实现关系,箭头从实现类指向接口。

如上图,北京大学和清华大学分别实现了大学接口。
六、泛化关系
泛化关系其实就是父子类之间的继承关系,表示一般与特殊的关系,指定子类如何特殊化父类的特征和行为。
在UML类图中,用带空心三角箭头的实线来表示泛化关系,箭头从子类指向父类。

如上图,父类动物有一个吃的方法,小鸟和狮子都继承于动物类,小鸟有它特有的方法飞行,而狮子有特有的方法奔跑。
六种关系中,从弱到强依次是:
依赖关系 < 关联关系 < 聚合关系 < 组合关系 < 实现关系 = 泛化关系
终于明白六大类UML类图关系了的更多相关文章
- (三)UML之类图关系
泛化(generalization):表示is-a的关系,是对象之间耦合度最大的一种关系,子类继承父类的所有细节.直接使用语言中的继承表达.在类图中使用带三角箭头的实线表示,箭头从子类指向父类.如下图 ...
- IDEA怎么生成UML类图
说之前先说一下Diagram这个单词,意思是图表; 示意图; 图解; [数] 线图的意思. 打开设置 File->Setting或windows下按Ctrl+Alt+S 在搜索框中输入Diagr ...
- 设计模式之UML类图六大关系辨析【2】
六大关系:继承(extends).实现(Realization).依赖(use-a).关联(association).聚合(has-a).组合(强聚合)(Composition). 类与类之间的强弱关 ...
- UML类图介绍&类的六大关系
UML类图介绍&类的六大关系 官方定义 UML(统一建模语言),是一种用于软件系统分析和设计的语言工具,用于帮助软件开发人员进行思考和记录思路的方式 UML 图形化的语言 基本介绍 UML图: ...
- 图解六大UML类图关系
在学习UML类图的过程中,UML类图关系是必须要掌握的问题,UML定义的关系主要有六种:依赖.类属.关联.实现.聚合和组合.下面对其定义和表示方法逐一说明. UML类图关系简介 依赖(Dependen ...
- UML类图中的六大关系:泛化、实现、依赖、关联、聚合、组合关系
UML定义的关系主要有:泛化.实现.依赖.关联.聚合.组合,这六种关系紧密程度依次加强,分别看一下 1.泛化 概念:泛化是一种一般与特殊.一般与具体之间关系的描述,具体描述建立在一般描述的基础之上,并 ...
- UML类图画法及其之间的几种关系(转)
UML类图画法及其之间的几种关系 最近做重构项目,需要画一下类图,发现类图的画法及其之间的几种关系已经淡忘了很多,所以整理总结一下,有问题的地方大家可以一起讨论下. 文章目录如下: 类图画法 类之间的 ...
- UML类图画法及其之间的几种关系
最近做重构项目,需要画一下类图,发现类图的画法及其之间的几种关系已经淡忘了很多,所以整理总结一下,有问题的地方大家可以一起讨论下. 文章目录如下: 类图画法 类之间的几种关系:泛化(Generaliz ...
- UML类图几种关系的总结
在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composit ...
随机推荐
- 从一道题浅说 JavaScript 的事件循环
最近看到这样一道有关事件循环的前端面试题: //请写出输出内容 async function async1() { console.log('async1 start'); await async2( ...
- linux命令之------Linux文档编辑
1.Vi和vim三种模式 (1)命令模式:移动光标 (2)插入模式:编辑文档 (3)末行模式:保存退出 不同模式操作示意图: 其中wq是保存退出,wq!强制保存退出:q不保存退出:q!强制不保存退出. ...
- 2016级移动应用开发在线测试13-Location、Sensor & Network
有趣有内涵的文章第一时间送达! 喝酒I创作I分享 生活中总有些东西值得分享 @醉翁猫咪 1. 充分利用智能手机的GPS定位信息,创造了O2O的商业模式,打通了线上与线下的信息流和商流,极大地推动了移 ...
- 2016级android在线测试15-图像 camera2
有趣有内涵的文章第一时间送达! 喝酒I创作I分享 生活中总有些东西值得分享 @醉翁猫咪 1. ImageView类用于显示各种图像,例如:图标.图片,下面对于ImageView类加载图片方法的描述错误 ...
- 设置多个className
有时候我们需要有选择地设置多个className function myComponent(props) { const myClassName = { 'aaa', {'bbb': props.ne ...
- 「2019-8-11提高模拟赛」女装盛宴 (flag)
传送门 Solution 基环树+倍增+双指针 第一次因为#define int long long而玄学RE 为什么标程都不用开\(long long\)啊 Code /*玄学RE 看来defi ...
- 清理系统图标缓存数据库-解决windows图标异常
1.删除C:\Users\用户名\AppData\Local\IconCache.db文件,重建图标缓存 . 一键脚本 taskkill /f /im explorer.exe echo 清理系统图标 ...
- python 安装setuptools、pip《转》
https://www.jianshu.com/p/e9ab614cad9b 安装setuptools 下载setuptools源码setuptools-25.2.0.tar.gz 地址:https: ...
- SQL优化-如何分析性能瓶颈
MySQL优化一览图 笔者将优化分为了两大类:软优化和硬优化.软优化一般是操作数据库即可:而硬优化则是操作服务器硬件及参数设置. 1.软优化 1)查询语句优化 首先我们可以用EXPLAIN或DESCR ...
- postgres开启慢查询日志
1.全局设置修改配置postgres.conf: log_min_duration_statement=5000 然后加载配置: postgres=# select pg_reload_conf() ...