用visio畫UML 類圖

由於類圖很直觀,因此恐怕C++成員首先接觸到的應該就是類圖了.在這篇文章中咱們要將下面一個在MFC程序中隨處能夠見到類用UML圖表現出來. 程序員

class CGraphicObject 函數

{ spa

    CRect m_rectBound; 翻譯

public: 指針

    BOOL SetRect(CRect rect); 對象

    CRect GetRect(); ip

}; ci

建立類圖

在模型資源管理器中選擇[Static Model]-[Top Package],點鼠標右鍵,從彈出菜單中選擇[New]-[Static Structure Diagram]便可建立用於製做類結構圖的圖面了. 資源

準備工做

首先咱們遇到的問題是,CRect和BOOL兩種類型在Visio數據類型中找不到.因此咱們先從追加數據類型開始.爲了便於管理咱們會先建立MFC數據類型包. get

建立數據包

右鍵點擊下圖中模型資源管理器的根節點.在彈出菜單中,選擇[包]項目.

clip_image001

下圖是彈出的包屬性對話框.點擊[New]按鈕,在[UML Package]列中輸入[MFC Data Types],點擊[OK]按鈕結束.上圖能夠看到追加的MFC數據類型包.

clip_image002

追加BOOL數據類型

在[MFC Data Types]項目上點擊右鍵,選擇[New]-[Data Type],在彈出的[UML Datatype Property]窗口中的類別窗口中選擇[DataType]項目,在名稱項目中填寫[BOOL],選擇[OK]結束.用一樣的方法追加CRect類型.

注意:在MFC中CRect是一個類,可是因爲咱們並不關心CRect的細節,因此把CRect做爲簡單數據類型來處理.

clip_image003

追加一個類

追加一個類很簡單,而後從形狀窗口中的[UML Static Sturcture]分類中拖動[Class]對象就能夠了.

clip_image004

設定類的詳細信息

設定類的詳細信息的大部分工做都是同時屬性對話框實現的.對於C++程序員來講,須要設定的內容包括類名,數據成員,成員函數.

以開頭提到的類爲例。

類名

首先在[Categories]窗口中選擇[Class]項目,而後在右面的名稱欄目中寫入類名就能夠了.在這一頁中咱們能夠暫時沒必要在乎其餘的內容.

clip_image005

若是隻是設定類名的話,大可沒必要用屬性對話框.只要在選中類對象後,再在最上面一欄中單擊左鍵,而後在輸入就能夠了.

添加數據成員

在[Categories]窗口中選擇[Attributes]項目,在右面的畫面中增長屬性。[Attribute]欄目中寫入變量名,[Type]是用來選擇數據類型的。這裏咱們選擇[MFC DataTypes::CRect]。[Visibility]欄目選擇的是這個成員是公共的(public),保護的(protected)仍是私有的(private)。這裏咱們選擇[protected].[Multiplicity]通常翻譯成多重性,是指,在類中,數據成員的個數。[1]表明在這個類中,有並且只有一個數據成員。[0..1]表示,沒有或者有一個。能夠在[Init.Value]中輸入數據成員的初值。

clip_image007

增長成員函數

在[Category]窗口中選擇[Operations]項目,在右面的表格中追加成員函數。在[Visiblility]中選擇函數是,共有,保護仍是私有的。[Polymorphic]表示函數是否爲多態,也就是使否是虛函數。[Scope]表示一個函數是屬於實例(instance)仍是屬於類(classifier),靜態函數,也被稱爲類的成員函數,普通的成員函數也被稱爲實例的成員函數。因此如過,在這裏選中了[classifier],就說明這個函數是靜態函數。

clip_image009

上面的操做,只是設定函數的一些基本信息,更詳細的信息能夠經過選中函數後,點擊[屬性]按鈕,在出現的[UML Operation Properties]窗口中設定。首先是設定函數的基本信息。和上面的窗口重複的內容,咱們再也不說明。咱們只說明[Profix]和[Suffix]。若是咱們想要返回的類型是指針類型或者是應用類型的話,只要在[suffix]中填寫[*]或[&]就能夠了。

clip_image011

接下來是設定函數的參數。這個函數只有一個參數rect,可是[Parameter]窗口中卻出現了,兩個參數。不過經過觀察[Kind]列的內容能夠知道,第一個參數[SetRect]是函數的返回值。第二個[rect]纔是咱們想要的。這個參數的[Kind]是[in]代表這個參數是用來向函數傳遞信息的。若是是用來取得信息的,就選擇[out],若是是雙方向傳遞信息的,就選擇[inout]。

clip_image012

完成上面的工做之後,點擊[OK]按鈕兩次,回到做圖畫面。來看看咱們的成果吧。

clip_image013

實際的例子工程中的CGraphicObject的UML圖能夠參照Sample1Vsd.zip.

相關文章
相關標籤/搜索