依賴關係,關聯關係,繼承關係,接口實現,組合關係,聚合關係,
這裏說幾種常用的關係表示方法:
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++中並沒有接口這個概率,但可以用抽象類來模擬。