`
hougbin
  • 浏览: 493477 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

类图中箭头的含义

    博客分类:
  • UML
阅读更多

 

关系

后面的例子将针对某个具体目的来独立地展示各种关系。虽然语法无误,但这些例子可进一步精炼,在它们的有效范围内包括更多的语义。

 

依赖(Dependency)

实体之间一个“使用”关系暗示一个实体的规范发生变化后,可能影响依赖于它的其他实例(图D)。 更具体地说,它可转换为对不在实例作用域内的一个类或对象的任何类型的引用。其中包括一个局部变量,对通过方法调用而获得的一个对象的引用(如下例所 示),或者对一个类的静态方法的引用(同时不存在那个类的一个实例)。也可利用“依赖”来表示包和包之间的关系。由于包中含有类,所以你可根据那些包中的 各个类之间的关系,表示出包和包的关系。



 图D

依赖详解:

     假如A依赖B,那么依赖在类中的写法就是,将B类当做A中一个方法的参数。

关联(Association) 

实体之间的一个结构化关系表明对象是相互连接的。箭头是可选的,它用于指定导航能力。如果没有箭头,暗示是一种双向的导航能力。在Java中,关联(图E) 转换为一个实例作用域的变量,就像图E的“Java”区域所展示的代码那样。可为一个关联附加其他修饰符。多重性(Multiplicity)修饰符暗示 着实例之间的关系。在示范代码中,Employee可以有0个或更多的TimeCard对象。但是,每个TimeCard只从属于单独一个 Employee。



 图E

详细解释:

      关联associations:是类之间的词法连接,使一个类知道另一个类的公开属性和操作。关联有单向和双向之分。如果两个类是双向关联的,rose将属性放进彼此类中。单向关联如下图所示,则person知道house的公开属性和操作,而house不知道person的。交互图中person可以向house发消息,而house不可以向person发消息。 

聚合(Aggregation)

聚合(图F)是关联的一种形式,代表两个类之间的整体/局部关系。聚合暗示着整体在概念上处于比局部更高的一个级别,而关联暗示两个类在概念上位于相同的级别。聚合也转换成Java中的一个实例作用域变量。 7MIrrhk
yC7lR#N8j0
关联和聚合的区别纯粹是概念上的,而且严格反映在语义上。聚合还暗示着实例图中不存在回路。换言之,只能是一种单向关系。



 图F

合成(Composition)

合成 (图G) 是聚合的一种特殊形式,暗示“局部”在“整体”内部的生存期职责。合成也是非共享的。所以,虽然局部不一定要随整体的销毁而被销毁,但整体要么负责保持局 部的存活状态,要么负责将其销毁。局部不可与其他整体共享。但是,整体可将所有权转交给另一个对象,后者随即将承担生存期职责。

Employee和TimeCard的关系或许更适合表示成“合成”,而不是表示成“关联”。



 图G

泛化(Generalization)

泛化(图H)表示一个更泛化的元素和一个更具体的元素之间的关系。泛化是用于对继承进行建模的UML元素。在Java中,用extends关键字来直接表示这种关系。空心箭头+实线



 图H

实现(Realization)

实例(图I)关系指定两个实体之间的一个合同。换言之,一个实体定义一个合同,而另一个实体保证履行该合同。对Java应用程序进行建模时,实现关系可直接用implements关键字来表示。空心尖头+虚线



 图I



 




首先要说明的是概念。《设计模式》一书中没有使用“组合”这个概念,而UML表示中一般没有使用“相识”这个概念。但是两者实际上存在如下的对应关系:
/////////////////////////////////////////////
《设计模式》 UML 表示的意义
聚合 组合 聚合/组合 对象和其所有者具有相同的生命周期
相识 聚合 一个对象仅仅知道另一个对象
/////////////////////////////////////////////
不过,这个对应关系也不是绝对的。

1、 UML中还有一种关系叫“关联”,《设计模式》中对这种关系的说明很准确:“OMT还定义了类间的关联(association)关系,以类间的一条线来表示。关联关系是双向的。虽然在分析阶段这种关系是适用的,但我们觉得它对于描述设计模式内的类关系来说显得太抽象了,因为在设计阶段关联关系必须被映射为对象引用或指针。对象引用本身就是有向的,更适合表达我们所讨论的那种关系。”也可以说“关联”到代码的映射是一对多的,并且这种一对多的关系会影响到模式的选择。
2、 UML中“组合”“聚合”的概念是用来表示对象的静态结构的,因此我们可以这样认为:“组合”就是用成员变量实现的,而“聚合”就是用指向某个对象的指针来实现的。当然,这里略去了对成员函数的参数的考虑。
3、 《设计模式》中对“聚合”和“相识”的关系描述如下:“C++中,聚合可以通过定义表示真正实例的成员变量来实现,但更通常的是将这些成员变量定义为实例指针或引用;相识也是以指针或引用来实现。”“从根本上讲,是聚合还是相识是由你的意图而不是由显式的语言机制决定的。”通过这两个说明,可以看到《设计模式》中认为“聚合”和“相识”关系是运行时的动态特性,从这点上来说和UML有本质的区别。另外,《设计模式》中对这两者动态特性描述如下:“聚合关系使用较少且比相识关系更持久;而相识关系则出现频率较高,但有时只存在于一个操作期间,相识也更具动态性,使得它在源代码中更难被辨别出来。”显然,这种描述只是说到了量的问题,而没有说到质的问题,从这里还是看不出“聚合”和“相识”到底在运行时有什么本质不同。

分享到:
评论

相关推荐

    UML类图的各符号含义及表示

    类图基本符号可拆分为虚线,箭头,实线,空心右三角,实心右三角,空心菱形和实心菱形。由这些基本的图形进行组合构成了类图的基本符号。这里要注意这几个符号的顺序,代表了类与类之间关系的耦合程度。越向右耦合度...

    MyEclipse的cvs箭头含义

    MyEclipse的cvs箭头含义

    个人学习类图的学习笔记

    本人关于类图的学习笔记。各种箭头的含义都有,图文并茂。比较了类之间各种关系的区别与联系。

    包含UML,类图、建模、软件工程开发管理过程、箭头介绍

    包含UML,类图、建模、软件工程开发管理过程、箭头介绍

    UML九种建模图-类图

    类图中的每个元素都有其特定的含义和格式。例如,类通常由三部分组成:类名、属性和方法。类名下面的冒号表示该类的开始,属性和方法则以名称和类型的形式列出。此外,类之间的关系也有特定的符号表示,如关联关系用...

    看懂UML类图和时序图

    能看懂类图中各个类之间的线条、箭头代表什么意思后,也就足够应对日常的工作和交流;同时,我们应该能将类图所表达的含义和最终的代码对应起来; 有了这些知识,看后面章节的设计模式结构图就没有什么问题了;本章...

    openlayers 态势箭头、进击箭头等

    openlayers 态势箭头、进击箭头等

    Android 自定义 直线箭头和曲线箭头

    Android 自定义 直线箭头和曲线箭头 ,支持自定义颜色,通过两个或者三个坐标,绘制出来所需要的箭头 ,根据赛贝尔曲线及正切余弦等函数计算出箭头方向

    arrow_qt画箭头_QT_箭头_

    使用qt绘制箭头,可以在window和linu中运行

    C#绘制直线与箭头

    C#绘制箭头和PDF里面的箭头一样,并不是用系统自带的箭头画的。

    图标箭头右箭头

    图标 右箭头 图标图标 右箭头 图标图标 右箭头 图标图标 右箭头 图标图标 右箭头 图标图标 右箭头 图标图标 右箭头 图标图标 右箭头 图标图标 右箭头 图标图标 右箭头 图标图标 右箭头 图标图标 右箭头 图标图标 右...

    Unity3D中实现箭头指向目标点的效果(源代码)

    Unity3D中实现箭头指向目标点的效果(源代码) 教程在:https://blog.csdn.net/q764424567/article/details/123811819

    unity箭头路径指示器插件Procedural Indicators 1.3

    选择指示器路径可以投射到地面或障碍物层中指定的任何其他对象。 网格指示器绘制3D线网格,网格网格指示器将网格切割成可以着色的3D网格单元格。 非常适合策略,赛车和益智游戏或fps教程级别/目标。

    arcgis箭头绘制

    arcgis 箭头绘制、箭头绘制、箭头绘制、箭头绘制、箭头绘制、箭头绘制、箭头绘制、箭头绘制、箭头绘制、箭头绘制

    各式箭头动画

    各式箭头动画 包含了四百多中各式箭头动画

    Arcgis实现路线等线方向箭头表示

    在 Arcgis 中,线数据是实现路线等线方向箭头表示的基础。因此,我们首先需要准备好线数据。线数据可以来自各种来源,例如 GPS 设备、遥感影像、或者手动绘制。无论线数据来自哪里,都需要将其导入 Arcgis 中,并...

    联想工程师专用小工具 桌面快捷方式小箭头去除_恢复工具V1.52.1

    联想工程师专用小工具 桌面快捷方式小箭头去除_恢复工具V1.52.1联想工程师专用小工具 桌面快捷方式小箭头去除_恢复工具V1.52.1联想工程师专用小工具 桌面快捷方式小箭头去除_恢复工具V1.52.1联想工程师专用小工具 ...

    去除桌面小箭头bat工具

    去除桌面小箭头去除桌面小箭头去除桌面小箭头去除桌面小箭头去除桌面小箭头

    css制作上下左右箭头

    css制作上下左右箭头 css制作上下左右箭头 css制作上下左右箭头 css制作上下左右箭头 css制作上下左右箭头

    UnityVR项目中常用的箭头指引功能demo

    材质球贴图滚动

Global site tag (gtag.js) - Google Analytics