1. 程式人生 > >WhiteStarUML增加getter、setter方法

WhiteStarUML增加getter、setter方法

最近用WhiteStarUML畫一些類圖。發現UML有些不方便的地方就是不能一鍵標記getter、setter方法。方便後面導成code。可能是因為UML國內用的人不多。似乎不是很關心這個。
在國外一篇文章裡面找到了方法。為了讓自己不忘記、特地記錄一下流程。
1:找到WhiteStarUML\modules\staruml-standard下的StandardAddIn.mnu檔案。
在MAINMENU標籤下面新增一行:

將下面這段程式碼編輯成GenGettersSetters.vbs檔案並儲存在StandardAddIn.mnu同級目錄下:

' GenGettetsSetters.vbs
' Getting Application Object Set App = CreateObject("WhiteStarUML.WhiteStarUMLApplication") If IsSelectedKindOf(App, "UMLAttribute") Then App.BeginGroupAction Set Facto = App.UMLFactory Set Sel = App.SelectionManager.GetSelectedModelAt(0) Set OwnerClass = Sel.Owner ' Create setter Set
SetterOper = Facto.CreateOperation(OwnerClass) SetterOper.Name = "Set" + Sel.Name Set Param = Facto.CreateParameter(SetterOper) Param.Name = "new" + Sel.Name Param.TypeExpression = Sel.TypeExpression 'Create getter Set GetterOper = Facto.CreateOperation(OwnerClass) GetterOper.Name = "Get"
+ Sel.Name Set RetValue = Facto.CreateParameter(GetterOper) RetValue.Name = "" RetValue.DirectionKind = 3 ' Return Type RetValue.TypeExpression = Sel.TypeExpression App.EndGroupAction Else MsgBox "Make sure an attribute is selected in Model Explorer!" End If ' ------------------------------------------------------------------------------ ' Check Kind Of SelectedModel ' ------------------------------------------------------------------------------ Function IsSelectedKindOf(StarUMLApp, ClassName) Dim S If StarUMLApp.SelectionManager.GetSelectedModelCount <> 1 Then IsSelectedKindOf = False Else Set S = StarUMLApp.SelectionManager.GetSelectedModelAt(0) If S.IsKindOf(ClassName) Then IsSelectedKindOf = True Else IsSelectedKindOf = False End If End If End Function

開啟whiteStarUML,在model explorer (右上角)視窗下找到你想新增getter、setter的屬性。
然後在最上方的工具欄中找到model,選擇convert diagram裡面的Generate Getters/Setters。就會自動幫你在class裡面的operation裡面新增一個getter、setter方法。

目前沒有找到一個更好的方法 。我理想中的方法是在欄位裡面標記一下,就能在到處code的時候自動識別。如果看到這個的人知道其他好方法的話,請不吝賜教。