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. 详解centos下vi的用法

    vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令.由于对Unix及Linux系统的任何版本,vi编辑器是完全相 ...

  2. JAVA分析html算法(JAVA网页蜘蛛算法)

    近来有些朋友在做蜘蛛算法,或者在网页上面做深度的数据挖掘.但是遇到复杂而繁琐的html页面大家都望而却步.因为很难获取到相应的数据. 最古老的办法的是尝试用正则表达式,估计那么繁琐的东西得不偿失,浪费 ...

  3. MySQL DATE_SUB() 函数

    定义和用法 DATE_SUB() 函数从日期减去指定的时间间隔. 语法 DATE_SUB(date,INTERVAL expr type) date 参数是合法的日期表达式.expr 参数是您希望添加 ...

  4. 32+激发灵感的HTML5/CSS3网页设计教程

      HTML5是寄托在HTML4基础上取得了的广泛成就.这不仅意味着你不必完全放弃现有的一些标记,而是可以借鉴,以加强 它. CSS3也以同样的方式在互联网内容的安排下,提供了它的柔韧性.CSS3是开 ...

  5. Hibernate学习笔记(三)Hibernate生成表单ID主键生成策略

    一. Xml方式 <id>标签必须配置在<class>标签内第一个位置.由一个字段构成主键,如果是复杂主键<composite-id>标签 被映射的类必须定义对应数 ...

  6. KM算法详解+模板

    http://www.cnblogs.com/wenruo/p/5264235.html KM算法用来求二分图最大权完美匹配. 本文配合该博文服用更佳:趣写算法系列之--匈牙利算法 现在有N男N女,男 ...

  7. Working with Other Node Types II

    [Working with Other Node Types II] An SKCropNode object does not directly render content, like a spr ...

  8. mysql编码详解

    在开发程序的时候,我们使用mysql数据库开发的时候,有时会碰到自己明明输入的是中文,为什么数据库中存储的就是???? 1.在配置Connection URL时,加上?useUnicode=true& ...

  9. labview图形和图表的类型

    http://zone.ni.com/reference/zhs-XX/help/371361L-0118/lvconcepts/types_of_graphs_and_charts/ LabVIEW ...

  10. oracle学习 六 删除表空间,数据文件的语句以及导入导出dmp文件的方法(持续更新中)

    要想删除表空间就要先删除数据文件 例如这个例子 CREATE TABLESPACE STHSGIMGDB_SPACE11 DATAFILE 'D:\ORACLEDATABASE\JinHuaDataB ...