1. 程式人生 > >UML類圖關係(C++)

UML類圖關係(C++)

♀ 雙向關聯(Association)


CAssociation1和CAssociation2可以互相呼叫對方的公共成員函式和成員變數。程式碼觸析:
class CAssociation1
{
private:
    CAssociation2* m_pAssociation2;
};

class CAssociation2
{
private:
    CAssociation1* m_pAssociation1;
};

♀ 單向關聯(DirectedAssociation)

CDirectedAssociation1可以呼叫CDirectedAssociation2的公共成員函式和成員變數。程式碼觸析:
class CDirectedAssociation1
{
private:
    CDirectedAssociation2* m_pDirectedAssociation2;
};
  
class CDirectedAssociation2
{
};

♀ 自身關聯(DirectedAssociation)


自己引用自已。程式碼解析:
CSelfDirectedAssociation
{
private:
    CSelfDirectedAssociation* m_pSelf;
};

♀ 聚合(Aggregation)


CAggrergator是聚合者,CAggregated是被聚合者。被聚合者可以離開聚合者而獨立存在,比如CDialog聚合CDialog,程式碼解析:
class CAggregator
{
private:
    CAggregated m_aggregated;
};

class CAggregated
{
};

♀ 組合(Composition)


CCombination是組合者,CCombined是被組合者。被組合者不能離開組合者而獨立存在,比如行組合單元格。程式碼解析:
class Combination
{
private:
    CCombined m_combined;
};
          
class CCombined
{
};

♀ 依賴(Dependency)


CDependent中功能的實現會用到CDepended中的功能。比如CDialog可以用CFileDialog完成檔案儲存功能。程式碼解析:
class CDependent
{
};

class CDepended
{
};
    ♂ 關聯、聚合和組合、依賴的區別
  • 關聯表示類之間的一種關係
  • 聚合和組合表示整體與部分的關係
  • 依賴是一種弱關聯,表示一個類用到另一個類,但是和另一個類的關聯又不是很明顯

♀ 泛化-繼承(Generalization)


CChild繼承了CParent,程式碼解析:
class CParent
{
};

class CChild:
    public CParent
{
};

♀ 模板


程式碼解析:
template<typename T>
class CTemplate
{
};