1.类与类之间的关系:
在绘制类图前,先熟悉类与类之间的关系。面向对象语言中类与类之间关系共计六种,分别是继承、实现、关联、依赖、组合、聚合。
1、继承或者泛化(Generalization):实现代码的复用。面向对象三大特征之一。继承关系指的是一个类(子类)继承另外一个类(父类)或者一个子接口继承另一个父接口。如动物接口类与鸟接口类,鸟类继承动物类;
2、实现(InterfaceRealization):一个类实现接口功能。如苍鹰类实现鸟接口类“移动”这一功能。
3、关联(Association):既不是组合关系和聚合关系的一般关联关系。两个类之间的关系一般是平等的,长期的,且两个类并不是从属关系。它表现为一般的has-a关系,它使一个类知道另一个类的属性和方法。表现在代码层面,被关联类B以类A的属性(包含B类型的引用)的方式出现在关联类A中或者关联类A引用了一个类型为被关联类B的全局变量。*
4、依赖(Dependency):一个类的某种行为(函数)依赖于另外一个类。这种关系是偶然的,临时的,非常弱的。但是类B的变化会引起类A的变化。代码表现层面为:类B作为参数在类A的某个方法中使用。如大雁的迁徙依赖于季节。大雁类与季节类就是依赖关系.经常的实现方法为:被依赖类(季节)经常作为依赖类(大雁)某一函数(迁徙)的参数。
5、聚合(Aggregation)(关联关系的一宗特例):和组合相比是一种弱所属关系,被聚合对象可以属于多个聚合对象。它是一种较强的关联关系。聚合关系是整体和个体的关系。同时是一种弱拥有关系。体现的是A对象可以包含B对象,但B对象不是A对象的组成部分。代码层面表现为如果A由B聚合而成,表现为A包含有B的全局对象,但是B对象可以不在A类型对象创建的时刻创建。(可以在类A中的某个方法创建)如汽车由轮子等聚合而成,汽车销毁后,轮子可以单独存在。
6、组合(Composition)(关联关系的一种特例):将一个类的对象(部分)放到另一个类(组合)中,它是一种强"has a"的关系。相比聚合,组合是一种强所属关系,体现了严格的部分和整体关系。组合关系的两个类具有相同的生命周期。被组合类在组合对象创建的同时或之后创建,在组合对象销毁之前销毁。一般的说被组合对象不能脱离组合对象独立存在,而且也只能属于一个组合对象。比如鸟与翅膀类就是组合关系,在创建一个鸟类时,一定要同时创建一个翅膀类,销毁鸟类时,一定要先销毁翅膀类。
网友评论