依赖关系,关联关系,继承关系,接口实现,组合关系,聚合关系,
这里说几种常用的关系表示方法:
1、依赖关系:
用虚线+箭头表示。
依赖关系体现为下列几种情况:
①成员函数参数
②局部变量
③调用静态方法
class A
{
public:
int a;
static void funcA();
};
class B
{
public:
void funcB(A arg) // ①
{
A temp; // ②
A.funcA(); // ③
}
};
上例代码中的三种情况,均为B依赖于A。2、关联关系
实线+箭头
表现形势:指针成员
class A
{
public:
};
class B
{
public:
A* p;
};
B持有一个A的对象的引用,但不控制该对象的生命周期。
3、组合关系
实心菱形+实线
表现形势:数据成员
class A
{
public:
};
class B
{
public:
A a;
};
B控制A的整个生命周期。(也可以以指针形势实现,但要手动控制a的生命周期)
4、聚合关系
空心菱形+实线
代码与关联关系一致,要从具体实现来区分到底是那种关系。(关联,聚合,组合三种关系的表现形势非常相似,要从具体的逻辑来区分到底是什么关系)。
关联关系是同层之间的关系,切彼此生命周期互不干涉。如 我 和 我的朋友
聚合关系是处于不同层次之间的关系,切彼此生命周期互不干涉。 如 公司 和 员工
组合关系是处于不同层次之间的关系,切整体与部分之间不可分离,即整体不存在了,那部分也就不存在了。 如 你 和 你的大脑。
5、继承关系
用三角形+实线
class A
{
public:
};
class B : public A
{
public:
};
6、接口实现
用三角形+虚线
c++中并没有接口这个概率,但可以用抽象类来模拟。