C++类之间的六种关系及UML图

依赖关系

一个类似另一个类的函数参数或函数返回值,例如类zhangSan依赖于类Car,张三工作时需要用到车void Work(Car p); 张三修车,修完了返回值为一辆车Car fix(Car *p);

#include <iostream>
using namespace std;

class Car
{
public:
protected:
private:
};

class zhangSan
{
public:
    void Work(Car *p);
    Car * fix(Car *p);
protected:
private:    
};

int main()
{
    return 0;
}

Visio画的类依赖关系时的UML图(虚线):
这里写图片描述

关联关系

一个类似另一个类的成员变量。当类Car是类advZhangSan的成员变量时,函数void Work();的函数参数可以去掉,直接用成员变量就行。

#include <iostream>
using namespace std;

class Car
{
public:
protected:
private:
};

class advZhangSan
{
public:
    void Work();
protected:
private:
    Car *m_car;
};

int main()
{
    return 0;
}

Visio画的关联关系UML图(实线):
这里写图片描述

聚合关系

聚合是关联关系的一种特例,它体现的是整体与部分的关系,即has-a的关系,是更强的关联关系。聚合是整体和部分之间的关系,例如汽车由引擎、轮胎以及其他零件组成。聚合关系也是通过成员变量来实现的,但是关联关系所涉及的两个类处于同一个层次上,而聚合关系中,两个类处于不同的层次上,一个代表整体,一个代表部分。
这里写图片描述

组合关系

组合关系也是关联关系的一种,是比聚合关系还要强的联系。聚合关系中,汽车的发动机可以任意更换,但是组合关系中是不可以更换的,比如人和各种器官之间的关系,公司和各个部分之间的关系。整体的对象负责代表部分对象的生命周期。
这里写图片描述

继承关系

继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力。
这里写图片描述

实现关系

实现指的是一个class类实现interface接口(可以是多个)的功能,实现是类与接口之间最常见的关系。
这里写图片描述

猜你喜欢

转载自blog.csdn.net/u014571489/article/details/81211472