UML类图关系(VP-UML工具绘图)

从C++程序上看,类A与类B之间关系有:继承包含引用以及相关

继承就是A继承B,是联系最为紧密的;

包含指A作为B的一个成员变量,那么A将成为B变量对象空间的一部分;

引用指A作为B的一个成员变量的指针或引用;

最后是相关,这种关系就更松散了,A做为B成员函数的参数,或成员函数中的一个临时变量而存在。

==================================================================

UML中是如何来描述这些关系呢?

对应继承的有:实现(Realization)泛化(Generalization)

对应包含的有:聚合关系(Aggregation)合成[复合/包容]关系(Composition)

对应引用的有:关联(Association)

对应相关的有:依赖(Dependency)

==================================================================

1. 实现(Realization)& 泛化(Generalization)

2. 聚合关系(Aggregation) & 合成[复合/包容]关系(Composition)

聚合:               CRoom聚合CLocate,但CLocate是可以脱离CRoom而独立存在的。
合成[复合/包容]:CRoom是由CCeiling、CFloor和CWall组成,它们之间具有整体与部分的关系。

两个类之间是聚合,还是合成关系,需要根据具体的语义环境来区分。

3. 关联(Association)

(1)双向关联

 1 /*   Person.h  */
 2 class CPerson
 3 {
 4     public: CCompany* m_pCompany;
 5 };
 6 
 7 /*   Company.h  */
 8 class CCompany
 9 {
10     public: CPerson* m_pPerson;
11 };

 

(2)单向关联

 1 /*  Person.h */
 2 class CPerson
 3 {
 4 };
 5 
 6 /* Company.h */
 7 class CCompany
 8 {
 9     CPerson* m_pPerson;
10 };

 --> 选择“关联”类型,从CCompany拉线指向CPerson,然后选择右键快捷菜单中“开启规格说明...”,修改“可导览”为:Unspecified

 

(3)自身[反身]关联

1 /* Logger.h */
2 class CLogger
3 {
4     public: CLogger* m_pLogger;
5 };

 

4. 依赖(Dependency)

1 /* Mission.h */
2 class CMission
3 {
4     public void DoMission(CMethod& method); 
5 };

 

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 参考

(1)UML类图 - wiki

(2)UML类图关系大全

(3)UML类图与类的关系详解

(4)区分 UML 类图中的几种关系

(5)VP-UML非商业用途版本下载   【有2个版本:Installer版本安装不成功话,试试绿色版本】

(6)UML类图几种关系的总结

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值