1. 泛化(Generalization)
在c++中对应继承,如B是A的泛化,在C++中表现为:
<pre name="code" class="cpp"><span style="font-family: Arial, Helvetica, sans-serif;">class B : public A</span>
{ <span style="font-family: Arial, Helvetica, sans-serif;"> public:</span>
<span style="white-space:pre"> </span>B() {} virtual ~B() { }
}
2.实现(Realization)
在C++中对应,对应是虚拟函数的概念,如B实现了A,是实现了A中虚拟函数的具体功能(接口),在C++中表现:
class A { public: A() {} virtual ~A() {} virtual void fun(int x,int y) =0; };
<pre name="code" class="cpp"><span style="font-family: Arial, Helvetica, sans-serif;">class B : public A</span>
{ <span style="font-family: Arial, Helvetica, sans-serif;"> public:</span>
<span> </span>B() {} virtual ~B() {}
<pre name="code" class="cpp"><span style="white-space:pre"> </span>virtual void fun(int x,int y);
}
3.关联(Associate)
是一种伙伴关系,如B关联了A,
B知道A的属性与方法(B可以使用A的属性与方法),在C++中对应 方法的参数:
<pre name="code" class="cpp"><pre name="code" class="cpp">class B { public: B() {} virtual ~B() {} void fun(A *m_A); }
4.聚合关系(Aggregation)
是整体与个体的关系,是一种联合国样式的组织,是一种弱包含,每个个体都可以独立存在。在C++中对应的属性生命周期的概念聚合关系中,个体的生命周期不归整体掌控。
<pre name="code" class="cpp"><span style="font-family: Arial, Helvetica, sans-serif;">class B </span>
{ <span style="font-family: Arial, Helvetica, sans-serif;"> public:</span>
<span> </span>B() {} virtual ~B() {}
<span> </span>A *m_A;
}
在具体实现中,A的个体在B之外生成,在适当的时候把个体以指针的形式传递给B即可。
5.组合关系(Composition)
是整体与个体的关系,是一种同生共死的组织,是一种强包含,每个个体都不可以独立存在。在C++中对应的属性生命周期的概念组合关系中,个体的生命周期归整体掌控。
<pre name="code" class="cpp"><span style="font-family: Arial, Helvetica, sans-serif;">class B </span>
{ <span style="font-family: Arial, Helvetica, sans-serif;"> public:</span>
<span> </span>B() {} virtual ~B() {}
<span> </span>A m_A;
}
在具体实现中也可以用指针,这时候要注意B要掌管A的生死即可
时间: 2024-12-24 23:21:55