UML之类图关系(继承、实现、依赖、关联、聚合以及组合)
一、说说他们之间的概念
1、继承: 指的是一个类(称为子类,子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能,继承是类与类或者接口与接口之间最常见得关系,一个类最多只能继承一个类,Java中此类关系使用extends明确标识。
2、实现: 指的是一个class类实现interface接口(可以多实现),实现是类与接口之间最常见关系。在Java中此类关系通过关键字implements明确标识。
3、依赖:可以简单的理解,比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖,即一个类A使用到另一个类B,而这种使用关系是具有偶然性、临时性,但B类的变化会影响到A(如果没有船,可能某人无法过河,即船影响到了某人过河这一行为);
4、关联:它体现的是两个类、或者类与接口之间语义级别的一种强依赖关系。如我与我的朋友,特点是平等,可以是双向也可以是单向的,通常把被关联类B作为关联类A中的一个属性,这种使用关系是不具有偶然性,临时性的。
5、聚合:聚合是关联关系的一种特例,聚合关系是整体和个体/部分之间的关系,即has-a(包含)的关系;关联关系的两个类处于同一个层次上,而聚合关系的两个类处于不同的层次上,一个是整体,一个是个体/部分;在聚合关系中,代表个体/部分的对象有可能会被多个代表整体的对象所共享。has-a 是组成关系,在组成关系中,一个对象将一个或者多个其它对象作为自己的成员。整体与部分是可分的。
6、组合:组合也是关联关系的一种特例,他体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合;他同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束;房子和房间的关系,当房子没有了,房间同样不可能单独存在