UML,全称Unified Modeling Language,统一建模语言。而UML图分为用例图、类图、对象图、状态图、活动图、时序图、协作图、构件图、部署图等9种图。

在面向对象语言中,我们经常看到有用UML类图去表示各种接口和类之间关系的。但是,每次看的都是云里雾里,搞不清楚那些虚线,箭头都是代表什么意思。今天,就让我们来一探究竟吧。

UML类图中有六种关系,分别是依赖关系,关联关系,聚合关系,组合关系,实现关系,泛化关系。

经过我自己的理解,画出了六种关系的示例图。类的成员变量和方法前面的修饰符有public, private, protected, default,在UML类图中分别用 +, -, #, ~表示。

一、依赖关系

依赖关系是一种使用关系,表示某个类依赖于另外一个类,通常表现为,某个类的方法的参数使用了另外一个类的对象。

在UML类图中,依赖关系用带箭头的虚线表示,箭头从使用类指向被依赖的类。下图中表示,程序员依赖于计算机来编写代码。

二、关联关系

关联关系是对象之间的一种引用关系,表示一个类和另外一个类之间的联系,如老师和学生,丈夫和妻子等。

关联关系有单向和双向的。在UML类图中,单向关联用一个带箭头的实线表示,箭头从使用类指向被关联的类,双向关联用带箭头或者没有箭头的实线来表示。

上图表示老师和学生之间的关系是双向的,一个老师可以有多个学生,一个学生也可以有多个老师。学生和课程之间是单向的,一个学生会学习多门课程,而课程是一个抽象的概念,它不拥有学生。

三、聚合关系

聚合关系是关联关系的一种,表示整体和部分之间的关系,如学校和老师,车子和轮胎。

聚合关系在类中是通过成员对象来体现的,成员是整体的一部分,成员也可以脱离整体而存在。如老师是学校的一部分,同时老师也是独立的个体,可以单独存在。

在UML类图中,用带空心菱形的实线来表示聚合关系,菱形指向整体。

四、组合关系

组合关系是整体和部分之间的关系,也是关联关系的一种,是一种比聚合关系还要强的关系。部分对象不能脱离整体对象而单独存在,如人的身体和大脑之间的关系,大脑不能脱离身体而单独存在。

在UML类图中,用带实心菱形的实线来表示组合关系,菱形指向整体。

五、实现关系

实现关系就是接口和实现类之间的关系。类实现了接口中的抽象方法。

在UML类图中,用带空心三角箭头的虚线来表示实现关系,箭头从实现类指向接口。

如上图,北京大学和清华大学分别实现了大学接口。

六、泛化关系

泛化关系其实就是父子类之间的继承关系,表示一般与特殊的关系,指定子类如何特殊化父类的特征和行为。

在UML类图中,用带空心三角箭头的实线来表示泛化关系,箭头从子类指向父类。

如上图,父类动物有一个吃的方法,小鸟和狮子都继承于动物类,小鸟有它特有的方法飞行,而狮子有特有的方法奔跑。

六种关系中,从弱到强依次是:

依赖关系 < 关联关系 < 聚合关系 < 组合关系 < 实现关系 = 泛化关系

java uml类图虚线实线_终于明白六大类UML类图关系了相关推荐

  1. sip 时序图_时序图怎么看_教你如何看懂时序图 - 什么是时序图_时序图怎么看_教你如何看懂时序图...

    时序图怎么看_教你如何看懂时序图 操作时序永远使用是任何一片IC芯片的最主要的内容.一个芯片的所有使用细节都会在它的官方器件手册上包含.所以使用一个器件事情,要充分做好的第一件事就是要把它的器件手册上 ...

  2. java类图设计题_试题七阅读下列说明、图以及Java程序。[说明]某订单管理系统的部分UML类图如 - 信管网...

    试题七 阅读下列说明.图以及Java程序. [说明] 某订单管理系统的部分UML类图如下图所示. 上图中,Product表示产品,ProductList表示所销售产品的列表,Order表示产品订单,O ...

  3. 图书馆的uml概念类图是什么_产品经理必学UML:类图

    本篇文章主要介绍了UML静态视图中的类图,包括类图的概念.用途及相关元素,供大家一起参考和学习. UML(Unified Modeling Language)又称统一建模语言或标准建模语言,可以看做用 ...

  4. JAVA基础加强(张孝祥)_类加载器、分析代理类的作用与原理及AOP概念、分析JVM动态生成的类、实现类似Spring的可配置的AOP框架...

    1.类加载器 ·简要介绍什么是类加载器,和类加载器的作用 ·Java虚拟机中可以安装多个类加载器,系统默认三个主要类加载器,每个类负责加载特定位置的类:BootStrap,ExtClassLoader ...

  5. 比较两组数据的差异用什么图更直观_芯片数据分析中常见的一些图的作用

    今天给大家讲讲芯片数据分析中常见的一些图的作用,让大家伙儿知道它们在BB些啥. 箱式图(Box plot) 基因芯片的原始数据是需要进行标准化处理的,主要目的是消除由于实验技术(如荧光标记效率.扫描参 ...

  6. 密度图的密度估计_不同类型的二维密度图小教程

    R相关小教程链接: 用R构建气泡图案例小教程 [小教程]散点图.饼图怎么在我的文章中完美展示小教程 热图在论文发表中完美呈现小教程 R与密度.函数.变量的微妙关系 北京市计算中心医用数据库建设解决方案 ...

  7. 怎么把word里面虚线变成实线_弱电不会制作cad图,花3分钟看完,只要会用WORD保证你能画出来...

    今天我要给你介绍的就是Microsoft Office Visio是Microsoft Office 套件之一.安装Visio之后,可以类比Word的操作方法一样来使用,不过,就是比在Word里画图. ...

  8. 类图多重度_阅读下列说明以及UML类图,回答问题1、 - 希赛网

    阅读下列说明以及UML类图,回答问题1.问题2和问题3,将解答填入答题纸的对应栏内. [说明] 某客户信息管理系统中保存着两类客户的信息: (l)个人客户.对于这类客户,系统保存了其客户标识(由系统生 ...

  9. java final关键字_终于明白 Java 为什么要加 final 关键字了!

    在开发过程中,由于习惯的原因,我们可能对某种编程语言的一些特性习以为常,特别是只用一种语言作为日常开发的情况.但是当你使用超过一种语言进行开发的时候就会发现,虽然都是高级语言,但是它们之间很多特性都是 ...

最新文章

  1. IOS中http请求使用cookie
  2. WIN2000 Apache php mysql 安装及安全手册
  3. JVM_01 总体概述
  4. 二值神经网络(Binary Neural Networks)最新综述
  5. 网络编程——sockaddr 与 sockaddr_in
  6. java 桥 word_java导出word的6种方式(转发)
  7. Jenkins插件开发(四)-- 插件发布
  8. word公式编辑器脱离鼠标的输入
  9. [渝粤教育] 信阳师范学院 奥尔夫音乐教育 参考 资料
  10. 【ELK解决方案】ELK集群+RabbitMQ部署方案以及快速开发RabbitMQ生产者与消费者基础服务...
  11. python的数组下标_python数组下标
  12. 【Linux】自动执行Mysql常用命令脚本
  13. Ubuntu18.04屏幕自动旋转解决方法
  14. 面试mysql索引底层_面试必备之MYSQL索引底层原理分析
  15. 2016 UESTC Training for Search Algorithm String I - 谭爷剪花布条 KMP
  16. PLC通讯实现-C#实现AB5000 PLC串口通讯DTL32(七)
  17. redhat 复制文件夹及子文件夹_linux如何复制文件夹和移动文件夹
  18. 使用Unity编写传统ARPG游戏人物操作方式(二)
  19. Matlab:设置命令历史记录预设项
  20. 基于正点原子触摸屏ui设计_基于黄金比例ui%C9%B8的设计系统

热门文章

  1. 三极管基极下拉电阻的作用
  2. 实时获取浏览器的地址栏的网页地址
  3. 图的并查集QuickFind类总结——C++
  4. Burp Scanner Report
  5. [转载] 暗潮涌动:警惕IBM温情脉脉背后的垄断野心
  6. 【java】个人项目:中小学数学卷子自动生成程序
  7. 幼儿园手工之自制时钟_幼儿园手工时钟玩教具制作图片
  8. 通过命令行,对ES进行操作
  9. Bootstrap系列之卡片(Cards)
  10. 百度云服务器最新活动,最新百度云服务器活动 11元购半年