【UML】具体解释六种关系
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】具体解释六种关系的更多相关文章
- UML中的六种关系的比较与学习
通过不断的学习并绘制UML图,整个画图的过程中深刻体会到其核心部分还是理解事物之间的关系,总结六大关系来深入学习,主要关系有六种:继承.实现.依赖.关联.聚合.组合. 区别于联系: 1 ...
- [Java学习]面向对象-package;内部类;UML图表示六种关系
package 软件包 类名前加入命名空间(包),解决命名冲突问题. 定义格式:公司域名倒叙.项目名.模块名; package语句写在文件第一行 使用import语句导入package java.la ...
- UML类图六种关系的总结
在UML类图中,常见的有以下几种关系: 泛化(Generalization):继承的关系,实线带三角形箭头,指向父类. 实现(Realization):实现的关系,虚线带三角形箭头,指向接口. 关联( ...
- UML中的六种关系
设计模式是一种对于面向对象语言(C#,C++,Java)的高级应用.其思维体现出的是真正的代码设计.每一种模式都堪称巧妙!但基于各种设计模式,这里少不了基本的类图设计,本文简要列出6种关系,及相关的例 ...
- 我所理解的OOP——UML六种关系
最近由于经常给公司的小伙伴儿们讲一些OOP的基本东西,每次草纸都被我弄的很尴尬,画来画去自己都乱了,有时候也会尝试使用UML表示类之间的关系,但UML从毕业后就再也没接触过了,经常会被小伙伴儿们指出继 ...
- OOP——UML六种关系
UML定义的关系主要有:泛化.实现.依赖.关联.聚合.组合,这六种关系紧密程度依次加强,分别看一下 泛化 概念:泛化是一种一般与特殊.一般与具体之间关系的描述,具体描述建立在一般描述的基础之上,并对其 ...
- (转)我所理解的OOP——UML六种关系
原文地址:http://www.cnblogs.com/dolphinX/p/3296681.html 最近由于经常给公司的小伙伴儿们讲一些OOP的基本东西,每次草纸都被我弄的很尴尬,画来画去自己都乱 ...
- 我所理解的OOP——UML六种关系(转)
转自:http://www.cnblogs.com/dolphinX/p/3296681.html 最近由于经常给公司的小伙伴儿们讲一些OOP的基本东西,每次草纸都被我弄的很尴尬,画来画去自己都乱了, ...
- UML的六种关系
UML定义的关系主要有:泛化.实现.依赖.关联.聚合.组合,这六种关系紧密程度依次加强,分别看一下 泛化 概念:泛化是一种一般与特殊.一般与具体之间关系的描述,具体描述建立在一般描述的基础之上,并对其 ...
随机推荐
- 该不该将变量设为 null ?
该不该将变量设为 null ? 对于引用类型的变量,在什么时候需要将其显式设为 null ,在什么时候不需要呢? 局部变量 对于局部变量,在方法结束的时候,变量就会失效,变量指向的对象引用也会减少一个 ...
- mybatis系列-14-延迟加载
14.1 什么是延迟加载 resultMap可以实现高级映射(使用association.collection实现一对一及一对多映射),association.collection具备延迟加载 ...
- 10本最新的Android开发电子书免费下载
最新的Android开发电子书大集合,免费下载! 1.The Business of Android Apps Development, 2nd Edition http://ebook.goodfa ...
- Maven异常: No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK解决(能力工场小马哥)
问题描述: No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JD ...
- 分布式文件系统--GFS
分布式文件系统 分布式文件系统:当数据集的大小超过一台独立物理计算机的存储能力时,就有必要对它进行分区(partition)并存储到若干台单独的计算机上.管理网络中夸多台计算机存储的文件系统.这种系统 ...
- HDU ACM 1050 Moving Tables
Problem Description The famous ACM (Advanced Computer Maker) Company has rented a floor of a buildin ...
- linux中ctrl+z和ctrl+c的区别
ctrl+c和ctrl+z都是中断命令,但是他们的作用却不一样.ctrl+c是强制中断程序的执行,而ctrl+z的是将任务中断,但是此任务并没有结束,他仍然在进程中他只是维持挂起的状态,用户可以使用f ...
- windows平台下安装python的setuptools工具
到下面的网址下载setuptools-0.6c11.win32-py2.7.exe http://pypi.python.org/pypi/setuptools#files 然后安装setuptool ...
- ASP.NET的分页方法(二)
第二讲主要使用到了常用的分页控件aspnetpager,这里对他就行一个简单的应用,具体大家可以到杨涛的博客上去寻找相关的DLL, 首先要先引用AspNetPager.dll,然后把这个DLL同时添加 ...
- POJ1463 Strategic game (最小点覆盖 or 树dp)
题目链接:http://poj.org/problem?id=1463 给你一棵树形图,问最少多少个点覆盖所有的边. 可以用树形dp做,任选一点,自底向上回溯更新. dp[i][0] 表示不选i点 覆 ...