UML类图基础

类与类之间主要有继承、依赖、关联、聚合、组合几种常用关系。类之间关系的强弱如下:继承 > 组合 > 聚合 > 关联 > 依赖。

概念讲解

 

依赖

依赖是类之间一种临时的使用关系。class A的成员函数中使用了class B,但class A的成员变量中没有class B的指针,class B A的函数中一般作为局部变量、函数参数出现。

表现形式:

void A::func(…)

{

       B b;

      

}

void A::func(B* p_b)

{

      

}

void A::func(….)

{

       B::GetInstance()->funcb();

}

 

关联

关联是一种结构关系,给定一个连接两个类的关联,可以从一个类的对象关联到另外一个类的对象。相关联的两个类之间是平等的,不存在整体/部分关系。一般不推荐使用双向关联,因为双向关联实际上是一种循环依赖。

有向关联是一种特殊形式的关联,也是一种更强的依赖关系。AB之间是平等的,不存在整体/部分或者隶属关系。class A知道class B的存在,而class B不知道class A的存在。class B一般以引用的形式出现在class A,另外系统中常用的消息发送者和接收者之间都是一种关联关系。两个类之间存在111对多、多对多的关联,这个在类图上可以相应的进行表示。

表现形式:

class A

{

public:

       SetB(B* p_b) { m_pb = p_b;}

private:

       B * m_pb;

};

或:

void A::func()

{

       SendSyncMessage(ID_B, xxx, x, xxx); //发送同步消息

}

 

聚合

聚合是一种特殊形式的关联。在有向关联的基础上,如果class Aclass B之间有整体/部分的关系,则称为聚合。同一个对象可以被其它多个对象聚合。

表现形式:

class A

{

public:

       SetB(B* p_b) { m_pb = p_b;}

private:

       B * m_pb;

};

注:从表现形式上看不出聚合和关联的区别,二者主要是语义上的区别,聚合强调的是整体/部分或隶属关系,A中有一个(多个)B

 

组合

组合是一种特殊形式的聚合。在聚合的基础上,如果Class A需要负责Class B的生命周期, A 销毁必然导致B销毁,则称为组合。同一个对象不可能被其它多个对象所组合。

表现形式:

class A

{

public:

       A::A();

private:

       B * m_pb;

};

 

A::A()

{

       m_pb = new B;

}

A::~A()

{

       delete m_pb;

}

 

继承

表现形式:

class A : public B

{

};

 

分析过程

依赖、关联、聚合、组合之间的关系,多数情况下都可以根据下面的流程图分析出来。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值