UML中包括六中关系。各自是:关联(Association)、聚合(Aggregation)、组合(Composition)、泛化(Generalization)、依赖(Dependency)、实现(Realization)

一、

1关联关系(Association)

关联关系表示两个类之间存在某种语义上的联系。比如,一个人为一家公司工作,一家公司有很多办公室。我们就觉得人和公司、公司和办公室之间存在某种语义上的联系。

关联关系提供了通信的路径。它是全部关系中最通用、语义最弱的。在UML中。用一条实线表示关系关系。比如:

关联关系中,有两种比較特殊的关系:聚合和组合。

1.2聚合关系(Aggregation)

聚合关系是一种特殊形式的关联。聚合表示类之间的关系是总体与部分的关系。聚合关系的含义是“聚”在一起的意义。也就是表示“部分”能够独立于“总体”而存在。

在UML模型中用一个空心菱形的实线表示,空心菱形指向的是代表“总体”的类。如

1.3组合关系()

假设发现“部分”类的存在是全然依赖于“总体”类的,那么就应该用“组合”关系来描写叙述。

也就是组合关系比聚合关系更强,也称为强聚合。

此时总体和部分是不可分的。总体的生命周期结束意味着部分的生命周期结束。在UML模型中。组合关系是用带有实心菱形的实线表示的。实心菱形指向的方向是代表“总体”类。如易于理解的样例“订单”与“订单项”之间的关系。假设订单不存在,订单项也就没有意义了,因此必定是组合关系。如图:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenN4NzAx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">、

2泛化关系(Generalization)

泛化关系描写叙述的一般事物与该事物中特殊种类之间的关系,也就是父类与子类之间的关系。继承关系是泛化关系的反关系,也就是说子类是从父类中继承的。而父类则是子类的泛化。

在UML中,对泛化关系有3个要求:

1)子类应与父类全然一致,父类所具有的关联、属性和操作。子类应都具有。

2)子类中除了与父类一致的信息外,还包含额外的信息。

3)能够使用父类实例的地方。也能够使用子类实例。

在UML模型中。用带空心箭头的实线表示,箭头指向父类。泛化关系基本上是由事物本身的特性决定的。比如,“动物”和“哺乳动物”、“卵生动物”之间是泛化关系。

3实现关系()

实现关系是用来规定接口和实线接口的类或组件之间的关系。接口是操作的集合。这些操作用于规定类或组件的服务。换言之,实线关系指定两个实体之间的一个合同,一个实体定义了一个合同。而还有一个实体履行该合同。如

4依赖关系(Dependency)

有两个元素X、Y,假设改动元素X的定义可能会引起对还有一个元素Y的定义的改动。责成元素Y依赖于元素X。

在UML中,用带箭头的虚线表示依赖关系。依赖关系是一种偶然性的、暂时性的很弱的关系。比如某人想过河,须要借用一条船。此时人和船就是依赖关系。如图

二比較

组合和聚合:组合和聚合的应用要依据应用场景来推断部分类和总体类之间的关系。

比如:“电脑”是一个总体类,而“主板”是一个总体类。而“主板”、CPU等则是相对于它的部分类。那它们之间关系是总体类还是部分类?假设是在固定资产管理系统中。可能适合的就是“组合”。而假设对于在线的DIY系统,两者之间显然是“聚合”关系。因此

推断是聚合还是组合关系,关键在于要放到详细的应用场景中讨论。

综合:关联关系中两个类处于同一等级上,而聚合和组合关系中两个类处于不同等层上。从某种意义上来说,前面说的关联和泛化以及实现关系都属于依赖关系的一种。可是它们有更具特别的语义和影响,因此定义了其自己的名字和具体的语义。整体来说,几种关系

组合>聚合>关联>依赖

在作图时应尽量使用较强关系,这样表达也更准确。

【UML】具体解释六种关系的更多相关文章

  1. UML中的六种关系的比较与学习

    通过不断的学习并绘制UML图,整个画图的过程中深刻体会到其核心部分还是理解事物之间的关系,总结六大关系来深入学习,主要关系有六种:继承.实现.依赖.关联.聚合.组合. 区别于联系:         1 ...

  2. [Java学习]面向对象-package;内部类;UML图表示六种关系

    package 软件包 类名前加入命名空间(包),解决命名冲突问题. 定义格式:公司域名倒叙.项目名.模块名; package语句写在文件第一行 使用import语句导入package java.la ...

  3. UML类图六种关系的总结

    在UML类图中,常见的有以下几种关系: 泛化(Generalization):继承的关系,实线带三角形箭头,指向父类. 实现(Realization):实现的关系,虚线带三角形箭头,指向接口. 关联( ...

  4. UML中的六种关系

    设计模式是一种对于面向对象语言(C#,C++,Java)的高级应用.其思维体现出的是真正的代码设计.每一种模式都堪称巧妙!但基于各种设计模式,这里少不了基本的类图设计,本文简要列出6种关系,及相关的例 ...

  5. 我所理解的OOP——UML六种关系

    最近由于经常给公司的小伙伴儿们讲一些OOP的基本东西,每次草纸都被我弄的很尴尬,画来画去自己都乱了,有时候也会尝试使用UML表示类之间的关系,但UML从毕业后就再也没接触过了,经常会被小伙伴儿们指出继 ...

  6. OOP——UML六种关系

    UML定义的关系主要有:泛化.实现.依赖.关联.聚合.组合,这六种关系紧密程度依次加强,分别看一下 泛化 概念:泛化是一种一般与特殊.一般与具体之间关系的描述,具体描述建立在一般描述的基础之上,并对其 ...

  7. (转)我所理解的OOP——UML六种关系

    原文地址:http://www.cnblogs.com/dolphinX/p/3296681.html 最近由于经常给公司的小伙伴儿们讲一些OOP的基本东西,每次草纸都被我弄的很尴尬,画来画去自己都乱 ...

  8. 我所理解的OOP——UML六种关系(转)

    转自:http://www.cnblogs.com/dolphinX/p/3296681.html 最近由于经常给公司的小伙伴儿们讲一些OOP的基本东西,每次草纸都被我弄的很尴尬,画来画去自己都乱了, ...

  9. UML的六种关系

    UML定义的关系主要有:泛化.实现.依赖.关联.聚合.组合,这六种关系紧密程度依次加强,分别看一下 泛化 概念:泛化是一种一般与特殊.一般与具体之间关系的描述,具体描述建立在一般描述的基础之上,并对其 ...

随机推荐

  1. (转)Spring中Bean的命名问题(id和name区别)及ref和idref之间的区别

    Spring中Bean的命名 1.每个Bean可以有一个id属性,并可以根据该id在IoC容器中查找该Bean,该id属性值必须在IoC容器中唯一: 2.可以不指定id属性,只指定全限定类名,如: & ...

  2. Delphi 延迟函数 比sleep 要好的多

    转自:http://www.cnblogs.com/Bung/archive/2011/05/17/2048867.html //延迟函数:方法一 procedure delay(msecs:inte ...

  3. CUDA ---- 简介

    CUDA简介 CUDA是并行计算的平台和类C编程模型,我们能很容易的实现并行算法,就像写C代码一样.只要配备的NVIDIA GPU,就可以在许多设备上运行你的并行程序,无论是台式机.笔记本抑或平板电脑 ...

  4. Flex布局如何让子类在超出边界时隐藏掉

    在flex4中,因为必须添加<s:Scroller>标签才能出现滚动条,如果一个容器例如Panel没有添加滚动条,那么添加到Panel中的child的位置如果超出了Panel的边界,那么这 ...

  5. STM32中的位带(bit-band)操作

    转:http://blog.csdn.net/gaojinshan/article/details/11479929 //位带操作,实现51类似的GPIO控制功能 //具体实现思想,参考<< ...

  6. 串口发送浮点型数据及int(2个字节)long int(4个字节)的方法

    方法一: 直接把float数据拆分为4个unsigned char(由于数字没法拆分,所以只能用指针的),发过去,在合并为float. 其中有两点要注意. (1)大端存储,小端存储:如果搞错读取数据就 ...

  7. UVaLive 7503 Change (坑题。。。。。。)

    题意:给定两个人民币,问你花最少钱保证能够凑出另一个价格. 析:这个题最大的坑就是在,并一定是一次就凑出来,可以多次,然后就可以想了,如果要凑的数和1有关,特判,如果是2倍数,0.01就够了,否则就是 ...

  8. VSTO安装部署(完美解决XP+2007)

    从开始写VSTO的插件开始,安装部署一直就是一个很大的难题,其实难题的原因主要是针对XP+2007而言.在Win7上,由于基本上都预装了.net framework,所以安装起来其实问题不大. 主要需 ...

  9. CF 86D Powerful array 【分块算法,n*sqrt(n)】

    给定一个数列:A1, A2,……,An,定义Ks为区间(l,r)中s出现的次数. t个查询,每个查询l,r,对区间内所有a[i],求sigma(K^2*a[i]) 离线+分块 将n个数分成sqrt(n ...

  10. [OAuth2 & OpenID] 1.OAuth2授权

    1 OAuth2解决什么问题的? 举个栗子先.小明在QQ空间积攒了多年的照片,想挑选一些照片来打印出来.然后小明在找到一家提供在线打印并且包邮的网站(我们叫它PP吧(Print Photo缩写