类与类之间关系(精选文档)

下面是小编为大家整理的类与类之间关系(精选文档),供大家参考。

类与类之间关系(精选文档)

 

 类和类之间的依赖、 关联、 聚合、 组合关系 一、 继承关系

 继承指的是一个类(称为子类、 子接口)

 继承另外的一个类(称为父类、 父接口)

 的功能, 并可以增加它自己的新功能的能力。

 在 Java 中继承关系通过关键字 extends 明确标识, 在设计时一般没有争议性。

 在UML 类图设计中, 继承用一条带空心三角箭头的实线表示, 从子类指向父类, 或者子接口指向父接口。

 二、 实现关系

 实现指的是一个 class 类实现 interface 接口 (可以是多个)的功能, 实现是类与接口之间最常见的关系。在 Java 中此类关系通过关键字 implements 明确标识, 在设计时一般没有争议性。

 在 UML 类图设计中, 实现用一条带空心三角箭头的虚线表示, 从类指向实现的接口。

 三、 依赖关系

 简单的理解, 依赖就是一个类 A使用到了另一个类 B, 而这种使用关系是具有偶然性的、 临时性的、 非常弱的, 但是类 B 的变化会影响到类 A。

 比如某人要过河, 需要借用一条船, 此时人与船之间的关系就是依赖。

 表现在代码层面, 为类 B 作为参数被类 A 在某个 method 方法中使用。

 在 UML 类图设计中, 依赖关系用由类 A 指向类 B 的带箭头虚线表示。

  四、 关联关系

 关联体现的是两个类之间语义级别的一种强依赖关系, 比如我和我的朋友, 这种关系比依赖更强、 不存在依赖关系的偶然性、 关系也不是临时性的, 一般是长期性的, 而且双方的关系一般是平等的。

 关联可以是单向、 双向的。

 表现在代码层面, 为被关联类 B 以类的属性形式出现在关联类 A中, 也可能是关联类 A引用了一个类型为被关联类 B 的全局变量。

 在 UML 类图设计中, 关联关系用由关联类 A指向被关联类 B 的带箭头实线表示, 在关联的两端可以标注关联双方的角色和多重性标记。

  五、 聚合关系

 聚合是关联关系的一种特例, 它体现的是整体与部分的关系, 即 has-a 的关系。

 此时整体与部分之间是可分离的, 它们可以具有各自的生命周期, 部分可以属于多个整体对象, 也可以为多个整体对象共享。

 比如计算机与 CPU、 公司与员工的关系等, 比如一个航母编队包括海空母舰、 驱护舰艇、 舰载飞机及核动力攻击潜艇等。

 表现在代码层面, 和关联关系是一致的, 只能从语义级别来区分。

 在 UML 类图设计中, 聚合关系以空心菱形加实线箭头表示。

 六、 组合关系

  组合也是关联关系的一种特例, 它体现的是一种 contains-a 的关系, 这种关系比聚合更强, 也称为强聚合。

 它同样体现整体与部分间的关系, 但此时整体与部分是不可分的, 整体的生命周期结束也就意味着部分的生命周期结束, 比如人和人的大脑。

 表现在代码层面, 和关联关系是一致的, 只能从语义级别来区分。在 UML 类图设计中, 组合关系以实心菱形加实线箭头表示。

  七、 总结

  对于继承、 实现这两种关系没多少疑问, 它们体现的是一种类和类、 或者类与接口间的纵向关系。

 其他的四种关系体现的是类和类、 或者类与接口间的引用、 横向关系, 是比较难区分的, 有很多事物间的关系要想准确定位是很难的。

 前面也提到, 这四种关系都是语义级别的, 所以从代码层面并不能完全区分各种关系, 但总的来说, 后几种关系所表现的强弱程度依次为:

 组合>聚合>关联>依赖。

推荐访问:类与类之间关系 关系 精选 文档