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類圖幾種關系的總結


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM