类与类的关系Word格式文档下载.docx
《类与类的关系Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《类与类的关系Word格式文档下载.docx(6页珍藏版)》请在冰豆网上搜索。
![类与类的关系Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2022-11/26/27622e51-9a51-4b03-97f2-7a108adb1d75/27622e51-9a51-4b03-97f2-7a108adb1d751.gif)
程序代码
//Animal.h
classCAnimal
{
public:
//implement
virtualHRESULTEatSomething()
//Dosomething
}
};
//Tiger.h
#include"
Animal.h"
classCTiger:
publicCAnimal
2.实现(Realization)
实现关系:
是一种类与接口的关系,表示类是接口所有特征和行为的实现.见下图:
//interface
virtualHRESULTEatSomething()=0;
注:
泛化和实现的区别就在于子类是否继承了父类的实现,如有继承则关系为泛化,反之为实现.
3.关联(Association)
关联关系:
是一种拥有的关系,可以分为双向关联,单向关联和自身关联.
双向关联是指双方都拥有对方的引用,都可以调用对方的公共属性和方法.见下图:
//Husband.h
wife.h"
classCHusband
CWife*pWife;
//Wife.h
Husband.h"
classCWife
CHusband*pHuband;
上图中丈夫和妻子是比较公平的关系,都可以使用对方公共的属性.
单向关联是指只有某一方拥有另一方的引用,这样只有拥有对方者可以调用对方的公共属性和方法.如下图:
intnMoney;
voidGoShopping();
上图中妻子拥有丈夫,可以使用对方的属性,比如钱,可以让对方做能做的事,比如去买东西.
自身关联是指拥有一个自身的引用.如下图
//SingleMan.h
classCSingleMan
CSingleMan*pSingleMan;
4.聚合(Aggregation)和组合(Composition)
聚合关系:
是整体与部分的关系,且部分可以离开整体而单独存在.如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在.
组合关系:
是整体与部分的关系,但部分不能离开整体而单独存在.如公司和部门是整体和部分的关系,没有公司就不存在部门.
//Car.h
Tyre.h"
classCCar
CTyrecTyre;
//Tyre.h
Car.h"
classCTyre
//Company.h
Department.h"
classCCompany
CDepartmentcDepartment;
Company.h"
classCDepartment
5.依赖(Dependency)
依赖关系:
是一种使用的关系,
即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖.如下图:
//Person.h
classCPerson
voidMoveFast(CCar&
pCar);
上图中人的快速移动需要有车的协助,但是这种依赖是比较弱的,就是人也可以不用车而用其他工具,与关联不同的是人不必拥有这辆车只要使用就行.
Association关联系表现为变量(hasa)。
类与类之间的联接,它使一个类知道另一个类的属性和方法。
例如如果A依赖于B,则B体现为A的全局变量。
关联关系有双向关联和单向关联。
双向关联:
两个类都知道另一个类的公共属性和操作。
单向关联:
只有一个类知道另外一个类的公共属性和操作。
大多数关联应该是单向的,单向关系更容易建立和维护,有助于寻找可服用的类。
Aggregation(聚合关系)是关联关系的一种,是强的关联关系。
聚合关系是整体和个体的关系。
普通关联关系的两个类处于同一层次上,而聚合关系的两个类处于不同的层次,一个是整体,一个是部分。
同时,是一种弱的“拥有”关系。
体现的是A对象可以包含B对象,但B对象不是A对象的组成部分。
具体表现为,如果A由B聚合成,表现为A包含有B的全局对象,但是B对象可以不在A创建的时刻创建。
Composition(组合关系)是关联关系的一种,是比聚合关系强的关系。
它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。
Composition(组合关系)是一种强的“拥有”关系,体现了严格的部分和整体的关系,部分和整体的生命周期一致。
如果A由B组成,表现为A包含有B的全局对象,并且B对象在A创建的时刻创建。
Dependency(依赖关系)表现为函数中的参数(usea)。
是类与类之间的连接,表示一个类依赖于另一个类的定义,其中一个类的变化将影响另外一个类。
例如如果A依赖于B,则B体现为局部变量,方法的参数、或静态方法的调用。