看UML视频已经有一段时间了,但是对于UML中的关系还是不够理解。虽然,UML中只有四种关系,但是还是不太能够区分,有种剪不断,理还乱的赶脚。特此总结。

(一)关联。

关联表示两个或多个类之间的结构性关系。比如,一个学校有多名学生,一名学生属于一所学校。其中,学校有个属性叫做“学生”,学生有个属性叫做“学校”。

   1.整体-部分关系:

   (1)聚合关系:例如,汽车和发动机。

   (2)组合关系:例如,让一个人和他的心脏。

比较整合与组合:

整合:没有整体,也有个体。个体可以独立存在。

组合:先有整体,才有个体。个体随着整体而存在。

    2.普通关联:

      普通关联关系是指,两个类之间有普通的结构关系。比如公司与雇员。

  

(二)依赖。

    依赖,说明一个事物规格说明的变化可能影响到它的另一个事物。说白了,其实就是一种使用关系,就是一个事物对另一个事物方法或者属性的使用。

 

(三)泛化。

    泛化就是继承关系,类似我们平时理解的晚辈与长辈之间“继承”的含义,不过,在面向对象里面,子类继承的是父类的属性或者方法。

   1.单重继承:一个子类有且只有一个父类。

   2.多重继承:一个子类有两个或者两个以上的父类。

 

(四)实现。

    实现是类元之间的语义关系,在该关系中,一个类元描述了一个类元保证实现的契约。比如,类实现了接口。

 

再区分一下依赖和关联!

关联,是指一个类了解或者具有另一个类的属性。

依赖,是指一个知道另一类的属性,并且使用。

 

    在视频里,有一段比较拗口的话“能用继承描述时,用泛化关系;描述类与接口的关系时,用实现关系;两个类之间有结构关系,用关联描述;其他用依赖来描述”。这总结算这几个关系的key了吧。

剪不断,理还乱——UML的四种关系相关推荐

  1. UML 有几种关系图标

    UML 有几种关系图标:泛化(继承),实现,依赖,关联,聚合,组合 泛化(继承) B--▷A                  B 类作为 A 类的子类存在.(A是具体类)     实现        ...

  2. UML 用例图以及UML的八种关系

    首先,一张总体的知识脉络导图献上: 一.什么是用例图? 用例图描述了一组用例.参与者以及它们之间的关系. 使用阶段:软件需求分析 使用者:软件分析人员.软件开发人员 用例模型:表明开发者和用户对需求规 ...

  3. 软件设计之UML的几种关系

    在软件开发中,经常会遇到UML建模,而类图作为一种静态的结构图,不仅是系统编码和测试的重要模型,还可以简化人们对系统的理解.因此,理解和知道如何使用UML图就显得尤为重要! UML类图的基本符号 UM ...

  4. UML之6种关系的解释与画法

    1.依赖关系,A类是B类的一个变量,B类持有A类的一个引用.依赖其实定义非常模糊,所以使用依赖只应该是在其他关系无法表示的时候: 2.泛化关系 就是java中的继承 3.关联关系,分为单项关联,双向关 ...

  5. 用例图之参与者、用例间的四种关系(超详细)

    文章目录 1.关联关系 2. 泛化关系 3.包含关系 4.扩展关系(extend) 1.关联关系 ​ 定义:参与者与用例之间通常用关联关系来描述. ​ 表示方法:带箭头的实线,箭头指向用例. ​ 如图 ...

  6. 面向对象类和类之间的几种关系

    一.继承关系      继承指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功能的能力.在Java中继承关系通过关键字extends明确标识,在设计时一 ...

  7. 类与类之间的几种关系

    http://www.cnblogs.com/liuling/archive/2013/05/03/classrelation.html 类与类之间的几种关系 一.继承关系      继承指的是一个类 ...

  8. UML之九种图和包图

    UML是一种模型化语言,而模型大多以图表的方式表现出来,一份典型的建模图表通常包含几个块或框,连接线和作为模型附加信息之用的文本,这些虽然简单却很重要,在UML中相互联系和扩展,因此从图的方面对UML ...

  9. UML---四种关系(依赖,关联,泛化,实现)

    前言: 我们学习到UMl的时候,首先应该了解一下他们之间的关系,以便于在画九种图的时候可以得心应手. 内容: 一.我们先通过下面一张图片(四种关系和表示图形)来了解一下要学的这些内容: 强弱关系:实现 ...

最新文章

  1. c#百度排名点击器编写 及webser 填表.
  2. linux下mysql授权_linux下mysql命令(用户授权、数据导入导出)
  3. R语言plotly可视化:plotly可视化多个直方图、通过bingroup参数设置多个直方图使用相同的bins设置(Share bins between histograms)
  4. 区块链相关论文研读3- 关于超级账本Hyperledger Fabric的性能优化
  5. EonerCMS——做一个仿桌面系统的CMS(十一)
  6. 在VisualState状态里更改Grid的列宽之类的
  7. KindEditorckplayer的简单结合
  8. Arthas 征文活动火热进行中,cherry 键盘等你来拿!(内附第三期中奖名单)
  9. 操作系统:经典进程同步问题 之 生产者-消费者问题、读者-写者问题、哲学家进餐问题
  10. 设置vim语法高亮显示和自动缩进
  11. Linux I2C核心、总线与设备驱动(二)
  12. Educational Codeforces Round 30 A[水题/数组排序]
  13. 最好的休息,不是睡觉
  14. python手机版-QPython,一个在手机上运行Python的神器
  15. java中io创建文件和读取文件
  16. AWS DeepRacer 默认参数调优 实验一
  17. 契约测试工具的思考(一)
  18. 2008 r2 server sql 中文版补丁_sql server 2008 r2 64位补丁包-sql server 2008 r2 64位sp3补丁 简体中文版 - 河东下载站...
  19. 训练好的vgg报错RuntimeError:mat1 and mat2 shapes cannot be multiplied(512*49 and 25088*4096)
  20. MP地面站二次开发教程(四)地面站优化及其功能测试

热门文章

  1. 职场神攻略:5分钟自我介绍法 快准狠!
  2. 除硬件外计算机系统不可缺少的是,银河系重约多少个太阳质量?
  3. 关于抽象工厂模式的定义和实现
  4. macw资讯——妙控键盘与智能键盘:哪个适合您的 iPad?
  5. 计算机硬盘的报废处理,计算机硬盘和内存存储器的安全销毁与资源化处理
  6. 令人躁动一时且令人不安的TCP BBR算法
  7. SQL 2012 拒绝了对对象 '表名‘' (数据库 'xxxxx',架构 'dbo')的 SELECT 权限。
  8. Go实战--golang中获取公网ip、查看内网ip、检测ip类型、校验ip区间、ip地址string和int转换、根据ip判断地区国家运营商等
  9. ADD R0,R1,R2 的理解
  10. java一系列图片加载_RxJava系列文章(一) - 网络图片加载水印一般写法