类的6大关系:依赖,关联,聚合,组合,泛化,实现

来源:互联网 发布:淘宝店长工作内容 编辑:程序博客网 时间:2024/05/07 16:20
1. 依赖,Dependency,虚线+箭头(箭头指向依赖的对象)
从字面上理解就是,一个类中的方法的实现依赖另外一个类,主要描述的就是类与类之间的使用关系。
Java中依赖的对象以局域变量、方法的形参,或者对静态方法的形式出现。
比如:学生类中有一个读书方法,这个方法需要一个书的对象,可以是方法的局部变量,也可以是参数。

2. 关联,Association,实线+箭头(箭头指向关联的对象)
类与类之间存在某种关联,可以说是更强的依赖关系,从虚线变成实线也说明了这一点。
Java中关联的对象一般以类的成员变量的形式出现。
比如,学生和它的科系可以是关联关系,学生类中需要一个科系的成员变量,以便学生根据这个变量来选择课程。

3. 聚合,Aggregation,空心菱形(菱形指向聚合类)+实线+箭头(箭头指向个体类)
聚合是一种特殊的关联,是一种“整体-个体”的关系。
Java中以成员变量的形式出现,所以从代码上看和关联是一样的,只能从语义上区分。
比如,学校和科系是聚合关系,科系是个体,学校是一个整体。

4. 组合,Composition,实心菱形(指向组合体)+实线+箭头(被组合的对象)
关联的一种,一种更强的聚合。组合体负责被组合对象的生命周期。
Java中以成员变量的形式出现。
比如,人由头,手,脚等部件组合而成,头和手这些不能单独存在。

5. 泛化,Generalization,空心箭头(指向父类)+实线
父类是一个泛化的类,子类是更具体的类。
Java中以继承实现。
比如,人是泛化的类,而学生或者老师是更具体的类。他们继承于人。

6. 实现,Implementation,空心箭头(指向接口)+虚线
接口定义方法,具体类实现方法。
Java中以接口实现。
比如,定义一个包含上课,考试等方法的接口,学生类可以实现这个接口。