UML课程 第十一章 关系详解.doc
文本预览下载声明
第十一章 关系详解
1、引言: uml关系
关系是重要的建模概念。
关系代表了UML模型元素之间的语义连接。
它使得软件系统各组成部分之间的交互和协同得以描述。
三种最基本和最常用的关系,它们是:
依赖关系
泛化关系和
关联关系。
关系可以描述软件系统各组成部件的结构及它们之间的基本的语义连接。
随着软件设计建造的进一步深入和细化,
需要更详细的建模手段来对这些关系进行修饰和描述,以使得
模型更趋于完备,
更能反映软件系统在各方面的真实情况,
并满足软件系统的分析、设计和建造的需要。
在UML里,最常用的关系有:
依赖关系
泛化关系
关联关系
实现关系
本章将进一步介绍这四种关系的语义、用法和各种修饰。
2、依赖关系
在第七章介绍的三种关系中
关联关系及其各种修饰描述的内容主要是软件对象之间的结构方面的特性,
泛化关系描述的是软件对象之间在结构和行为之间的继承关系,
而依赖关系则代表类之间语义上的依赖性。
如果两个类之间存在着依赖关系
就意味着被依赖的类的语义的变化会导致依赖的类的语义的变化。
在描述语义上互相有联系的类之间的关系时,
首先考虑是否存在继承方面的关系或结构方面的关系,
并分别用对应的
泛化关系或
关联关系及其
修饰形态
进行描述
当类之间不宜于用这两种关系描述时
则考虑使用关联关系,关联关系主要强调的是类之间结果上的联系。只有当类之间不适宜用这两种关系进行描述时,才考虑使用依赖关系。
由于前两种关系的语义描述比较清晰和精确,
所以为依赖关系对软件对象之间关系的描述留下了比较大的自由度。
随着软件分析和设计的深入和细化,将发现可以用依赖关系及其变体
描述各种软件对象之间的微妙的语义连接。
在UML中,对依赖关系共设置了17种变体,以描述软件对象之间各种互相依赖的情形。
依它们连接对象的不同,可以分为六类:
1)、类或对象之间的关系;
2)、类和对象之间的关系;
3)、模型包之间的关系;
4)、用例之间的关系;
5)、对象之间的关系;
6)、建模元素和模型之间的关系。
1)、类或对象之间的关系
连接具有相同抽象级别的建模元素
例如:
可以连接两个对象、连接两个类
但不用于连接类和对象。
1、绑定依赖
依赖关系的图形表示是一个带虚线的箭头。
这个箭头连接了两个建模元素。
依赖关系的箭头指向的通常称为供应类或目标类。
箭头的起始端的那个类通常被称为是客户类或源类。
绑定依赖(bind)是依赖关系的一个变体,
它的箭头指向一个模版类,
箭头的起始端的类是一个实例化的类,
标明源类是目标类的实例化(图11.1)。
2、推导依赖
在许多情形下,经常有一个类的两个属性是互不独立的。
例如:有一个类Person,它代表一个人的相关信息,
其中有一个属性是生日BirthDate,
另一个属性是年龄Age。
显然,Age是可以从birthdate计算的出的。
为了表明一个类或对象可以从另一个类计算得出,可以用推导依赖(derive)表示。
推导依赖是依赖关系的变体。
如果两个类或对象之间存在着推导依赖,则表明此依赖关系中的源可以通过计算从目标得出。
如果在依赖关系的图形符号上放置了变体标记derive就代表此依赖关系是推导依赖(图11.2)。
3、友元依赖
友元是诸如C++等程序设计语言里用到的一个概念,
它表示第一个类赋予其之外的第二个类以访问第一个类的所有成员变量和成员函数的权限。
类之间的友元关系用友元依赖(friend)描述。
友元依赖是依赖关系的一个变体,它用依赖关系的图形符号把两个类连接起来,表明源类被赋予了访问目标类的各种属性和操作的权限。
在类图上,如果一个依赖关系上面被放置了变体标记friend,就代表此依赖关系是一个友元依赖。
在某些UML工具(如ROSE)中,为了便于正向工程,友元依赖的设置是在依赖关系的规格说明(specification)对话框内设置的。
例如,在图11.3中,类color和line存在着友元依赖关系,这表明类color可以访问类line中的私有属性,如: color,start_x等。
4、细化依赖
软件模型元素的规格说明的详细程度是逐步细化的。
在分析阶段,模型是概念性的。
当进入分析和建造阶段时,
模型的详细程度会逐步加大,
最终趋于完备。
为了达到UML模型的分析、说明、建造和建档的目的,
处于不同时期的设计模型都应该保存在软件系统的完整模型中间。
因此,同一模型元素的不同详细度的规格说明及其图形表述可以
存放在不同的模型包内,
以备不同目的的交流之用。
为了在类图上表示同一模型的不同详细度的规格说明,可以用细化依赖(refine)来表示。
细化依赖是依赖关系的一个变体,它表示源类的详细程度高于目标类的详细程度。
如果在依赖关系上放置有细化变体标
显示全部