这篇文章是类间关系的下半篇,包含了 关联、聚合和组合 三种关系。建议先食用上篇文章。
上半篇博文戳这里
关联 (Association)
关联关系呢,可以看作是一种依赖的关系(上篇博文我们谈到过,依赖关系的范围实际上很广)。它强调的是,一个类知道另一个类的对象,而非仅仅是实现方法时用到。这个“知道”,往往指的就是在类中以另一个类对象作为成员(C++语言可以是对象本身,也可以是引用或是指针,而在java中就只有使用引用持有对象这一种形式)。而且,就像依赖关系可以是相互的,关联关系也可以是相互的,也可以是一对一或是一对多甚至多对多的。
在类图中,我们使用一条实线来连接彼此。我们在刚刚的类图中加入人类和武器类。为了简化,人类的其他关系以及武器的子类予以省略了。
看图:
在这里,人类将武器作为自己的成员变量,而武器类也将人类作为自己的成员变量。两个类互相“知道对方”。故是一种关联关系。
实现成代码:
java:
//人类
public class Human extends Animal{
private Weapon weapon;
}
//武器
public class Weapon {
private String name;
private Animal belongTo;
}
C+:
//人类
#ifndef HUMAN_H
#define HUMAN_H
#include