码迷,mamicode.com
首页 > 其他好文 > 详细

UML中类之间的四种关系

时间:2015-01-06 20:12:32      阅读:255      评论:0      收藏:0      [点我收藏+]

标签:

上一篇总结了类图的组成,接下来总结UML中的重要关系。

类与类之间的关系通常有4种:依赖关系dependency、泛化关系generalization、关联关系association、实现关系realizaiton。

依赖关系:是两个或多个模型元素之间语义上的连接关系。只将模型元素本身连接起来而不需要用一组实例来表达它的意思。提供者的某些变化会要求或只是依赖关系中客户的关系,即依赖关系将行为和实现与影响其他类的类联系起来。关联和泛化也是依赖关系,由于他们有特别的含义,所以它们有自己的名字和详细的说明。依赖关系还经常被用来表示具体实现间的关系,比如代码层实现关系。依赖关系在rational rose中有很多实用的关系,以下展示:

技术分享

依赖关系      功能 关键字

绑定              为模板参数指定值,生成一个新的模型元素。 bind

实现              说明和对这个说明的具体实现之间的映射关系。   realize

使用              声明使用一个模型元素需要用到已存在的另一个模型元素,这样才能正确实现使用者的功能。use

调用               声明一个类调用其他类的操作方法。 call

参数              一个操作和它的参数之间的关系. parameter

发送              信号发送者和信号接受者之间的关系. send

实例化          一个类的方法创建了另一个类的实例的声明. instantiate

跟踪              声明不同模型中的元素之间存在一些链接,但不如映射精确. trace

精化              声明具有两个不同语义层次上的元素之间的映射。 refine

派生              声明一个实例可以从另一个实例派生。 derive

访问              允许一个包访问另一个包的内容。 access

输入              允许一个包访问另一个包的内容并可以为被访问包的组成部分增加别名。 import

友元              允许一个元素访问另一个元素,不管被访问的元素是否具有可见性。 friend

泛化关系:描述类的一般和具体之间的关系。一般描述的类被称作父类,具体描述的类被称作子类,还可以再其他元素中使用。泛化关系是一种“is a kind of”的关系,使父类与更加具体的子类连接在一起,不用重复说明。

泛化关系的作用:

1.用来定义可替代性原则。当一个变量被声明承载某个给定类的值时,可使用类的实例作为值。因此无论何时    父类被声明,子类的一个实例就可以被使用了。

      2.泛化使得多态操作成为可能,一个父类可以泛化出多个不同的子类,每个子类都可以实现定义在类中的同一    个操作的不同状态,在不需要改变现有多态调用的情况下就可以加入新的类。

3.共享父类所定义元素的前提下允许自身增加描述。

关联关系:是一种结构关系,指出了一个事物的对象与另一个事物的对象之间的语义上的连接。描述了系统中对象或实例之间的离散连接,将一个含有两个或多个有序表的类在允许复制的情况下连接起来。一个类的关联的任何一个连接点都成为关联端,与类有关的许多信息都附在它的端点上。

最普通的关联是一对类之间的二元关联。如果一个关联既是一个关联又是一个类,那么它就是关联类。关联还有两种重要的形式:聚集关系和组成关系。

聚集关系描述的是部分与整体关系的关联,将一组元素通过关联组成一个更大、更复杂的单元。

组成关系则是一种更强形式的关联,在整体中拥有管理部分的职责,成员对象的生命周期取决于聚合的生命周期。

区分这两者的方法很简单:都是一个整体,整体里面都有部分;如果这个整体分散成部分以后,各个部分都还有自己存在的意义和作用,那么这个关联关系就是聚集关系;如果各个部分失去了存在的意义和作用,则是组成关系。

技术分享  


技术分享

实现关系:将一种模型元素和另一种模型元素连接起来,从而说明其和实现之间的关系。在实现关系中,接口只是行为的说明而不应是结构或者实现,而类中则要包含其具体的实现内容。可以通过一个或多个类实现一个接口,但是每个类必须分别实现接口中的操作。将一般描述与具体描述联系起来,在不同语义层内连接起来,并且通常建立在不同的模型内。

这四种关系是在UML中非常重要的四种关系,在实践中运用这四种关系可以清晰的理清系统的开发思路,对软件开发非常有帮助。

 

UML中类之间的四种关系

标签:

原文地址:http://blog.csdn.net/wz537071/article/details/42462157

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!