设计模式-类间关系

0 类间关系

类间关系主要分为:继承(泛化)、实现、依赖、关联、聚合、组合

1 继承(泛化)

A类继承自B类,那么称为两个类间关系为继承,或是泛化

class A
{
};

class B:A
{
};

UML图中,使用空心的三角形箭头,让派生类指向基类。(注意是头部三角形)

2 实现

也是一种继承的关系,但是实现指的是继承了一个虚基类(接口类)。

因此派生类需要实现虚基类的方法(或是仍然作为一个虚基类)。

class A
{
public:
  void say(string&)=0;
};

class B:A
{
public:
};

  

UML图中,和继承类似,也是使用空心三角型箭头,从派生类指向基类。(注意是头部三角形)

3 依赖

一个类A中的方法使用了B类作为参数或是返回值,(没有在A中保存B类的实例)。

这种关系称为依赖。

class A
{
};

class B
{
public:
  A* getA();
  int isHold(A&);
private:
  A _hold;//如果仅仅是依赖,那么不应该有这个成员变量。
};

  

UML中,使用虚线加一个箭头,从A类指向B类。(注意,头部是个箭头,不是三角形)

4 关联

类A中有一个类B的实例作为数据成员。这种关系称为关联

class A
{
};

class B
{
private:
  A *a;
};

  

在UML图中,使用一个空心菱形,从A指向B。聚合为空心菱形,组合为实心菱形。

关联又分为聚合组合

4.1 聚合

聚合是一种实体的东西,也就是说,类A和类B都可以单独的存在。是一种“弱拥有”。

聚合中,类B的实例可以在类A实例创建完以后赋值。

4.2 组合

组合是一种“强拥有”,类A和类B,类A实例创建的时候类B实例创建,类A实例销毁的时候类B实例也销毁。

组合中类B的实例是在类A实例创建的时候自动创建的。

原文地址:https://www.cnblogs.com/perfy576/p/8547704.html