面向对象

association 关联:

aggregation 聚合:一个对象成为另一个对象的组成部分 “has a”

composition 组合:一个对象管理另一个对象的生命周期

依赖:人开车回家 人用斧头砍柴 人和车,斧头之间就是依赖关系 也就有了依赖注入


cohesion/coupling内聚 与耦合


聚合
聚合是一种特别类型的关联,用于描述“总体到局部”的关系。

在基本的聚合关系中部分类 的生命周期独立于 整体类 的生命周期。


举例来说,我们可以想象, 是一个整体实体,而 车轮 轮胎是整辆车的一部分。

轮胎可以在安置到车时的前几个星期被制造,并放置于仓库中。

在这个实例中,Wheel类实例清楚地独立地Car类实例而存在。

然而,有些情况下, 部分 类的生命周期并 独立于 整体 类的生命周期 -- 这称为合成聚合。

举例来说,考虑公司与部门的关系。

公司和部门 都建模成类,在公司存在之前,部门不能存在。

这里Department类的实例依赖于Company类的实例而存在。

让我们更进一步探讨基本聚合和组合聚合。


基本聚合
有聚合关系的关联指出,某个类是另外某个类的一部分。

在一个聚合关系中,子类实例可以比父类存在更长的时间。

为了表现一个聚合关系,你画一条从父类到部分类的实线,并在父类的关联末端画一个未填充棱形。

图 12 显示车和轮胎间的聚合关系的例子。

图 12: 一个聚合关联的例子

图 12: 一个聚合关联的例子


组合聚合
组合聚合关系是聚合关系的另一种形式,但是子类实例的生命周期依赖于父类实例的生命周期。

在图13中,显示了Company类和Department类之间的组合关系,

注意组合关系如聚合关系一样绘制,不过这次菱形是被填充的。

图 13: 一个组合关系的例子

图 13: 一个组合关系的例子


在图 13 中的关系建模中,一个Company类实例至少总有一个Department类实例。

因为关系是组合关系,当Company实例被移除/销毁时,Department实例也将自动地被移除/销毁。

组合聚合的另一个重要功能是部分类只能与父类的实例相关(举例来说,我们例子中的Company类)。


你可能感兴趣的:(面向对象)