zoukankan      html  css  js  c++  java
  • UML类图关系(VPUML工具绘图)

    从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类图几种关系的总结

  • 相关阅读:
    Office365激活(无需密钥,无需下载软件)
    java垃圾回收及其优化
    Kafka副本机制
    sdn的相关学习系列之一mininet的安装
    javascript day 02
    关于javaScript
    html-day06
    盒子模型
    html-day04
    html--笔记day03
  • 原文地址:https://www.cnblogs.com/kekec/p/2864867.html
Copyright © 2011-2022 走看看