`
hougbin
  • 浏览: 502572 次
  • 性别: 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类图的各符号含义及表示

    下面我们将详细解释UML类图中各符号的含义。 1. 类(Class):在UML类图中,类通常用三层矩形表示。第一层写类的名称,如果类是抽象的,则名称以斜体显示。第二层列出类的属性(fields)和字段,第三层列出类的方法...

    UML类图各符号含义.pdf

    本文将详细解析UML类图中各符号的含义。 首先,类图的基本符号包括虚线、箭头、实线、空心右三角、实心右三角、空心菱形和实心菱形。这些符号组合起来表示类与类之间的关系,耦合度从左到右逐渐增强。 1. **依赖...

    六大UML类图以及关系

    - 在UML类图中,依赖关系用一条带有箭头的虚线表示,箭头指向被依赖的一方。 **示例**: - 假设有一个`Calculator`类,它依赖于一个`MathFunctions`类来执行复杂的数学运算。在这个例子中,`Calculator`类依赖于`...

    个人学习类图的学习笔记

    本笔记将详细探讨类图的基本元素、关系以及各种箭头的含义,帮助读者深入理解类图及其在软件设计中的应用。 首先,类图中的核心元素包括类和接口。类是用来描述系统中具有相似属性、操作和行为的对象集合,而接口则...

    UML类图几种关系的总结

    UML类图是UML中最常用的一种图形化工具,用于描述系统的静态结构,包括系统中的类、接口以及它们之间的关系。在UML类图中,存在六种基本的关系类型:泛化、实现、关联、聚合、组合以及依赖。接下来,我们将详细介绍...

    UML类图符号简介

    ### UML类图符号及其含义详解 #### 一、概述 统一建模语言(UML)是一种广泛应用于软件工程领域的图形化规范,用于描述系统的结构和行为。UML类图是其中最重要的组成部分之一,用于可视化地展示系统中的类、接口以及...

    UML类图关系大全!!!!!

    通过“UML类图关系大全.doc”和“UML类图简介.doc”,你可以更详细地了解这些关系的图形表示、符号含义以及在实际设计中的应用。学习和熟练掌握这些关系对于理解和设计复杂的软件系统至关重要,因为它们有助于清晰地...

    看懂UML类图和时序图

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

    UML类图符号简介[归纳].pdf

    在设计模式中,这些符号也有特殊含义,如继承、接口实现、关联和聚合等。例如,虚线箭头表示类实例化,实线箭头表示相识或引用,带有菱形的箭头表示聚合或组成关系。抽象类和操作通常以斜体显示。通过这种方式,UML...

    UML符号说明文档

    **含义**: 代表了流程中的一个单独步骤或活动。活动的具体内容会写在矩形内部。 **应用场景**: 在绘制流程图时,用于描述具体执行的步骤或任务。例如,在一个软件开发流程图中,可以表示需求分析、设计、编码等环节...

    类图作业

    在UML(统一建模语言)中,类图是一种重要的模型表示方式,它用来描绘对象之间的各种关系。根据提供的作业描述,我们可以详细分析以下几个关键的知识点: a. 泛化关系(Generalization):泛化关系是继承的概念,...

    UML面向对象分析与建模-【4】类图和对象图.docx

    发现、识别、确定系统中的类和对象,明确它们的含义和责任,确定属性和操作;找出类之间存在的静态联系;对已经发现的类之间存在的联系进行调整和优化,去除可能存在的命名冲突和功能重复等问题;绘制对象类图并编制...

    图说设计模式 Graphic Design Patterns

    达到这个层次后,开发者可以更好地理解UML类图和时序图,并且能够将类图中的含义与最终的代码对应起来。 类之间的关系在UML中通过不同的线条和箭头表示。泛化关系(generalization)指的是类之间的继承关系,用一条...

    PlantUML语法官方参考手册中文版(最新版)

    PlantUML是一种开源工具,它允许用户使用简单的文本描述来快速绘制UML图,如时序图、用例图、类图、活动图、组件图、状态图和对象图等。通过定义一种特定的语法,用户可以避免繁琐的拖拽操作,直接用代码来生成清晰...

    UML中的包含关系和扩展关系

    这包括了解如何通过调整箭头的方向和位置来表达不同的含义,以及如何在类图、用例图和序列图中使用包含和扩展关系。通过实践和案例分析,可以更深入地理解这两种关系在实际设计中的应用。 综上所述,包含关系和扩展...

    uml期末试题

    - **类图中性质和操作的可视化含义**:类图通过类来表示实体,每个类具有属性和方法。这些属性和方法在类图中以特定的符号表示。 - **类之间的关系**:包括泛化、依赖、关联等关系类型。 - **泛化**:表示继承关系...

    Plantuml 语言参考指南(中文版本)

    虚线箭头(-->)代表非实线连接,而 `和 `-->` 主要用于提高代码的可读性,它们在时序图中与普通箭头效果相同,但在其他图中可能有不同的含义。 1.2 声明参与者是定义时序图中的角色。`participant` 关键字可以用来...

    第六章电气图的基本知识.pptx

    功能性图如概略图、功能图、逻辑功能图等,旨在展示系统的整体功能和工作流程,而位置类图则聚焦于设备在空间中的具体布局。接线类图详细描述了各个元件之间的连接关系。项目表则罗列所有组件及其规格,便于识别和...

    2018-软件系统分析与设计-期末试卷1

    UML的虚线箭头在不同的图中有不同的含义: - **依赖关系**:虚线箭头表示一个元素(类、接口等)依赖于另一个元素。 - **关联关系**:在类图中,虚线表示弱关联或非持久性的关系。 - **泛化关系**:在类图中,...

Global site tag (gtag.js) - Google Analytics