1.继承关系:is a
类A被类B共有继承,B的声明形式:
class B:public A{…}
2.组合关系:has a 如小鸟和翅膀的关系
类A是类B的一部分,实现形式为:
class A{…};
class B{… private: A a;…};
销毁B时,会先销毁A,A只能属于B
3.聚合关系:弱所属关系 如大雁和雁群的关系,大雁可以属于不同的雁群
类B由类A聚合,实现形式:
class A{};
class B{… public: A a[10];…};
4.关联关系:一种关系,不是所属,而是平等,如大雁和老鹰
若类A与类B双向关联,代码实现为:
class A{… class Bb; …};
class B{… class Aa; …};
5.依赖关系:一个类受另一个类的影响
类B依赖类A的代码实现:
class A{};
class B{… public: void fun(A a);…};
或
class A{};
class B{… public: void fun(A* a);…};
或
class A{};
class B{… public: void fun(A& a);…};
6.实现关系:通过纯虚函数作为接口;类似与继承关系,只不过该继承关系中基类为抽象类
如基类中有一个操作:画一个图形,却未给出具体实现,而在其子类中才被实现,不同子类实现方法不一,可能是画一个三角形,又可能是画一个长方形
类B实现类A,代码实现:
class A{public: virtual void fun()=0;};//此处用的是纯虚函数
class B:public A{… void fun(){} …};