WhiteStarUML增加getter、setter方法
阿新 • • 發佈:2019-01-30
最近用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的時候自動識別。如果看到這個的人知道其他好方法的話,請不吝賜教。