1. 依赖
程序之间的“依赖”关系主要体现出的是一种使用关系,对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者当一个对象依赖于另一个对象所提供的的服务时,这两个对象之间主要体现为依赖关系。
在类型的设计中,依赖关系主要体现在目标类型的对象,作为当前类型方法的局部对象或者方法的参数类型。
例如:
学生学习不止有书,还有电脑,代码示例如下:
在这中间,学生学习依赖书或者依赖电脑或者其他,但是反过来书或者电脑是不依赖学生的,说明依赖是一个单项的。
总结:
①依赖关系是用一个带箭头的虚线表示的,其描述一个对象在运行期间会用到另一个对象的关系,比如上面代码中,学生在学习的时候会用到书或者电脑。与关联关系 不同的是,它是一职中临时性的关系,通常在运行间产生,并且随着运行时的变化,依赖关系也可能发生变化,比如在学生学习的过程中,刚开始是用书的,学习一段时间后,是用电脑的。
②从第一条中可以看出,依赖也有方向,单向依赖,双向依赖。
注意:在最终的代码中,依赖关系体现为类构造方法及类方法的传入参数,箭头的指向为调用关系。
2. 关联
关联关系是用一条直线表示的,它描述不同类的对象之间的结构关系,是一种静态关系,通常与运行状态无关,一般由常识等因素决定的,它一般用来定义对象之间静态的、天然的结构,所以,关联关系是一种“强关联”的关系。
比如,教师和课程之间就是一种关联关系,学生和学校就是一种关联关系。
关联关系默认不强调方向,表示对象间相互知道,如果特别强调方向,如下图,表示Teacher知道Course,但是Course不知道Teacher
例:
注意:在最终的代码中,关联对象通常是以成员属性(对象)或引用的形式实现。
例1:弱关联
class Course
{
};
class Teacher
{
private:
Course* pc;