UML中几种类间关系.docx
《UML中几种类间关系.docx》由会员分享,可在线阅读,更多相关《UML中几种类间关系.docx(9页珍藏版)》请在三一办公上搜索。
1、UML中几种类间关系UML中几种类间关系:继承、实现、依赖、关联、聚合、组合的联系与区别 继承 指的是一个类继承另外的一个类的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系;在Java中此类关系通过关键字extends明确标识,在设计时一般没有争议性; 实现 指的是一个class类实现interface接口的功能;实现是类与接口之间最常见的关系;在Java中此类关系通过关键字implements明确标识,在设计时一般没有争议性; 依赖 可以简单的理解,就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是B类的变化会影响到A;比
2、如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖;表现在代码层面,为类B作为参数被类A在某个method方法中使用; 关联 他体现的是两个类、或者类与接口之间语义级别的一种强依赖关系,比如我和我的朋友;这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的、关联可以是单向、双向的;表现在代码层面,为被关联类B以类属性的形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量; 聚合 聚合是关联关系的一种特例,他体现的是整体与部分、拥有的关系,即has-a的关系,此时整体与部分之间是可分离的,他们可以具有各自的生命周
3、期,部分可以属于多个整体对象,也可以为多个整体对象共享;比如计算机与CPU、公司与员工的关系等;表现在代码层面,和关联关系是一致的,只能从语义级别来区分; 组合 组合也是关联关系的一种特例,他体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合;他同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束;比如你和你的大脑;表现在代码层面,和关联关系是一致的,只能从语义级别来区分; 对于继承、实现这两种关系没多少疑问,他们体现的是一种类与类、或者类与接口间的纵向关系;其他的四者关系则体现的是类与类、或者类与接口间的引用、横向关系,
4、是比较难区分的,有很多事物间的关系要想准备定位是很难的,前面也提到,这几种关系都是语义级别的,所以从代码层面并不能完全区分各种关系;但总的来说,后几种关系所表现的强弱程度依次为:组合聚合关联依赖 UML 关系 UML定义的关系主要有6种:依赖,泛化,关联,实现,聚合和组合。 泛化(Generalization):通常所说的继承关系。UML中用带空心箭头的实线表示Generalization关系,箭头指向一般个体。 实现(Realize):元素A定义一个约定,元素B实现这个约定,则B和A的关系实Realize,B realize A。这个关系最常用于接口。UML中用空心箭头和虚线表示Realiz
5、e关系,箭头指向定义约定的元素。 依赖(Dependency):元素A的变化会影响B,但反之不成立,那么B和A是依赖关系,B依赖A;类属关系和实现关系在语义上讲也是依赖关系,但由于其有更特殊的用途,所以被单独描述。UML中用带箭头的虚线表示Dependency关系,箭头指向被依赖元素。 关联(Association):元素间的结构化关系,是一种弱关系,被关联的元素间通常可以被独立的考虑。 聚合(Aggregation):关联关系的一种特例,表示部分和整体的关系。UML中通常用带空心菱形头的实线表示Aggregation关系,菱形头指向整体。 组合(Composition):组合是聚合关系的变种
6、,表示元素间更强的组合关系。如果是组合关系,如果整体被破坏则个体一定会被破坏,而聚合的个体则可能是被多个整体所共享的,不一定会随着某个整体的破坏而被破坏。UML中用带实心菱形头的实线表示Compositon关系,菱形头指向整体。 下面将以实例来展示各种关系。 依赖(Dependency) 实体之间一个“使用”关系暗示一个实体的规范发生变化后,可能影响依赖于它的其他实例。更具体地说,它可转换为对不在实例作用域内的一个类或对象的任何类型的引用。其中包括一个局部变量,对通过方法调用而获得的一个对象的引用,或者对一个类的静态方法的引用。也可利用“依赖”来表示包与包之间的关系。由于包中含有类,可以根据那
7、些包中各个类之间的关系,表示出包与包之间的关系。 关联(Association) 实体之间的一个结构化关系表明对象是相互连接的。箭头是可选的,它用于指定导航能力。如果没有箭头,暗示是一种双向的导航能力。多重度(Multiplicity)修饰符暗示着实例之间的关系。在示范代码中,Employee可以有0个或更多的TimeCard对象;但是,每个TimeCard只从属于单独一个Employee。 聚合(Aggregation) 聚合是关联的一种形式,代表两个类之间的整体/局部关系。聚合暗示着整体在概念上比局部更高的一个级别,而关联暗示两个类上位于相同的级别。 关联和聚合的区别粗纯粹是在概念上的,而
8、且严格反应在语义上。聚合还暗示着实例图中不存在回路。换言之,只能是一种单向关系。 合成(Compositon) 合成是聚合的一种特殊形式,暗示“局部”在“整体”内部的生存期职责。合成也是非共享的。所以,虽然局部不一定要随整体的销毁而被销毁,但整体要么负责保持局部的存活状态,要么负责将其销毁。局部不可与其他整体共享。但是,整体可将所有权转交给另一个对象,后者随即将承担生存期职责。 Employee和TimeCard的关系或许更适合表示成“合成”,而不是表示成“关联”。 (以下代码 private TimeCard tc; 应改成 TimeCard tc = new TimeCard;) 泛化(G
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- UML 种类 关系
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-3167482.html