學習筆記 用Visio畫UML圖類結構圖(進階篇)
本文和大家繼續學習用Visio畫UML圖類結構圖,上一篇文章中說明了類結構圖的基本畫法。要真正要完成實用的類圖,還要有許多工作要做。
用Visio畫UML圖類結構圖(進階篇)
上一篇文章中說明了類結構圖的基本畫法。要真正要完成實用的類圖,還要有許多工作要做。
類之間的關系
繼承關系
用Visio畫UML圖中繼承關系是最容易理解的關系。畫成圖的話就像下面這樣。面向對象的說法就是is-a關系。也就是說Class2isaClass1。在C++中我們說Class2是Class1的派生類,或者說Class1是Class2的基類。
聚集和組成
從容易理解的關系說起.經常有一個類是另一格類的數據成員的情況。在UML中表現為,聚集(aggregation)和組成(composition)。
從圖上來看,用Visio畫UML圖時這兩種關系都表現為一端是菱形的直線。其中有菱形的一端是整體,另外一端是部分。區別就是菱形是空心還是實心的。從C++曾序來看的話,如果圖畫成實心菱形的話,Class1就要負責Class2的創建和銷毀。更準確的說,就是如果Class1不存在了,Class2也一定不存在。例如象下面的程序。
- classClass2
- {
- };
- classClass1
- {
- Class2m_objClass2;
- }
當然也有下面的情況
- classClass2
- {
- };
- classClass1
- {
- Class1();
- ~Class1();
- Class2*m_pClass2Obj;
- };
光看類的聲明就不行了。這是就需要看類的實現部分了。
- Class1::Class1()
- {
- m_pClass2Obj=newClass1;
- }
- Class1::~Class1()
- {
- deletem_pClass2Obj;
- m_pClass2=NULL;
- }
組成(Composition)關系,如果在Class1的對象銷毀的時候,比如在析構函數中沒有將數據成員銷毀的代碼,那么這種關系就是聚集(aggregation)關系。當然,銷毀數據成員的代碼,會有很多種。
依賴關系
用Visio畫UML圖中依賴關系就是在以個類中使用了另一個類。例如下面的代碼
- Class1::DoSomething()
- {
- Class3obj;
- obj.DoClass3Work();
- }
就是這樣的情況。畫成圖的話就像下面這樣。
【編輯推薦】