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
{
};

你可能感兴趣的:(UML)