Model Maker上手指南
關鍵字:ModelMaker上手指南 Delphi建模工具 CASE工具
引文:
本文通過一個簡單的例子介紹使用MM(ModelMaker)設計類圖和生成Delphi代碼,以及代碼逆向同步的過程;讓你在最短的時間內上手MM。 編寫本文使用的是ModelMaker 7,不能保證文章內容適合所有版本。
誰需要閱讀本文:
剛接觸MM需要掌握其基本操作方法。
使用Delphi語言想要學習UML建模的初學者。
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/fanghong1999/archive/2005/12/09/548266.aspx
正文:
MM簡介:ModelMaker簡稱爲MM,是一個與Delphi緊密綁定的CASE建模工具。MM彌補了Delphi IDE在建模設計上的不足。MM與其他 CASE工具最大的不同就是其強大的實時同步引擎,你的設計可以直接映射成代碼,在代碼上的修改可以自動逆向反映到設計模型。以“設計-編碼-精練”方式代替了傳統的“設計-編碼”的工作方式。MM是一個強大的UML建模工具,她還支持時下流行的“設計模式”。
閒話少說,通過以下8個部分你就可以上手了,“Follow me, step by step”。
1、MM可愛的臉
我們先瀏覽一下MM的芳容,打開MM7。
MM的安裝很簡單這裏就不介紹了,如果需要更多的信息可以瀏覽http://www.modelmakertools.com
MM的默認佈局(菜單條下的工具欄上有一個下拉框,選中“basic”)分四大塊。
1.左上是【樹狀視圖區】包括:【圖】(Diagrams),【類視圖】(Classes)和【單元視圖】(Units)。
2.左下方是【類成員區】。
3.右上是【編輯區】包括:【圖編輯頁】(Diagram Editor),【實現編輯頁】(Implementation)和【單元代碼編輯頁】(Unit Code)。
4.右下是【消息】和【文檔】區。
注意:MM的各個頁面都有“停靠”功能,你可以隨意安排佈局,但是由於MM的頁面比較多,建議初學者使用默認的佈局風格。如果不慎搞亂了佈局可以點擊工具欄上的下拉框選中“basic”即可恢復。另外,在1024×768以上的分辨率下使用會得到更好的效果。
2、MM中的工程(Project)
現在開始用MM了,首先我們需要搞清她會產生的文件。
先創建一個新工程(或模型),選擇菜單“File|New”。你將得到一個空白的工程,該工程包含一個默認的祖先TObject 和 IUnknown。
然後選擇菜單“File|Save As...”命名爲FirstMM,你將得到FirstMM.mpd文件。
其實.mpd是以下的文件集合的打包:
1. <model>.mpr; 包含工程設置;
2. <model>.mma; 包含與工程相關的宏;
3. <model>.mmb; 包含代碼模型數據;
4. <model>.mmc; 包含模型中的文檔;
5. <model>.mmd; 包含圖;
6. <model>.mme; 包含事件類型定義;
7. <model>.mmf; 包含工程信息。
也可以設置MM(參考幫助文件“Options | Environment options”)使其保存項目時存爲以上一系列的文件。
3、新建類圖
在MM建一個類有很多種方法(比如使用“Tools|Create Class Wizard...”)。我們用MM強大的圖形建模功能來建我需要的類。
首先點擊【編輯區】的【圖編輯頁】(Diagram Editor),把注意力都放在這個區域哦。
1.點擊類似“+”的“add Diagram”按鈕(將鼠標移到按鈕上,稍停就會有該按鈕的名稱。以下提到的按鈕我們都以MM提示名稱來表示)。
2.MM彈出對話框要我們輸入圖名(name)輸入:testClass。
3.在下拉框(type)中選擇 Classes Diagram後點擊“ok”。我們那就得到了一張名爲testClass的空白類圖。
4.這時你發先圖左側的一派按鈕都可用了,點擊“add Class”按鈕(應該是第一個)。
5.這時鼠標帶了一個“+”在圖上找個合適的位置點擊一下,MM彈出了對話框要求輸入類名class name等類的基本信息。輸入class name:TMMobject。選擇祖先類Ancestor:TObject。現在我們已經得到了一個類並且看到了他的圖形。
注意:選擇Ancestor時你會發現你只能選TObject如果我們想要從其他類繼承怎麼辦呢?
這裏有一個必須說明的問題。MM規定新類的父類類必須作爲模型數據的一部分,否則MM可能無法正常生成新類的代碼部分。這就意味這如果想要聲明一個新類就必須導入其父類,而導入其父類需要導入其父類的祖先類,如此循環好像必須要把Delphi類的繼承關係全部導入到模型中!問題當然不能這樣解決。
MM提供了一個叫“佔位符”的標誌來解決這個問題。我們打開界面左上方【樹狀視圖區】的【類視圖】(Classes)頁面。選中TObject。從彈出式菜單中選擇“Add descendant” 輸入TKK作爲類名。雙擊該類並在類編輯器對話框中選中選項“placeholder”。你會發現TKK變成一個虛框,這時的Tkk就是一個“佔位符”。
把Tkk拖到我們testClass類圖上。
6.重複步驟4和步驟5,我們加上另外兩個類TMMFace和TMMBoday,他們的祖先類都是TMMobject。我們的圖上有四個類TMMobject、TMMFace、TMMBoday和Tkk。那麼如何展現他們之間的關係呢?
7.當然我們可以自己來畫箭頭,但是這個辦法好好像很笨。一個更好的辦法是用MM提供的嚮導。
步驟如下:先用鼠標圈住(或用鍵盤Ctrl+A)以上四個類。點擊右鍵“Wizards|visualize class relations...”這是MM自動的生成了TMMFace和TMMBoday指向TMMobject的箭頭。或者點擊“Wizards|visualize related classes ...”這樣MM會把關聯到的類全部顯示出來,我們的類圖上就會多了TObject。
4、添加類成員
有了這些類後我們來添加類成員(屬性和方法等)。
1.選中TMMFace在右鍵彈出菜單“class|add property”。
2.name輸入:color,根據需要設置其他各項(相信會delphi都應該明白是什麼意思,我們在這裏就用默認的選項)。
3.ok後“好像世界沒什麼改變?”難道有bug?呵呵,如果你夠仔細的話你會發現在左下方的【類成員區】出現兩成員Fcolor:integer和color:integer。你是不是在想我的圖上爲什麼沒有呢?其實這是選項設置的問題。
在圖的空白區域上點右鍵“visual style|Diagram properties”,選“symbol style”頁,將“Project member type filter”前的勾去掉。把“fields、properties”等根據需要選中。“世界終於改變了!”
4.如上所述,給TMMFace加入方法WashFace。給TMMBoday加入屬性:face:TMMFace和方法bath。
注意:給TMMBoday加入屬性:face:TMMFace時你也許會遇到困難。步驟如下:在彈出的對話框上的DataType中選class在DataTypeName輸入TMMFace即可。相信你明白這是什麼意思了TMMBoday引用了TMMFace。哪麼他們的關係應該反映在類圖上啊,“Wizards|visualize class relations...”就OK了,看到你期望的哪條線了吧。
5、實現類的方法
在MM中我們可以直接用Delphi代碼實現類的方法(好像Delphi IDE完全沒用了一樣,呵呵)。
在【類成員區】選中要實現的方法,點擊【編輯區】,【實現編輯頁】(Implementation)寫代碼。Implementation頁的功能很簡單這裏就不詳細介紹了,推薦大家回到Delphi IDE中來寫代碼,畢竟這是Delphi IDE的強項。
6、生成Delphi代碼
激動人心的時刻到來了,生成Delphi代碼。
模型建好了,我們還要幹什麼?
1.在界面左上【樹狀視圖區】的【單元視圖】(Units),點“add new unit”按鈕。
2.在path Alias選擇路徑。Relative File name輸入“MMUnit”單元名,ok。
3.工具欄按鈕“Unlock Code Generation”按鈕解鎖(這一步必須要哦)。
4.在【單元視圖】(Units)點擊按鈕“Generate”。
5.趕快在你本地的文件夾(剛纔設置的path Alias)下找找,一個MMUnit.PAS出現了,打開看看Unit的開頭都有了,卻沒有發現TMM們的身影?爲什麼?
6.在【單元視圖】(Units)把“Class not assigned to units”下的類都拖到“MMUnit”下。
7.點擊按鈕“Generate”。
8.我看到你臉上露出了笑意!呵呵,成功了!
7、逆向到模型
下面我們看看在Delphi中對類的修改怎樣返回到MM中,用Delphi打開MMUnit.PAS。
1.我們給類TMMFace增加一個成員(str:string)使其代碼如下:
TMMFace = class(TMMobject)
private
Fcolor: Integer;
str:string;
public
procedure WashFace;
property color: Integer read Fcolor write Fcolor;
end;
2.在Delphi中點菜單“ModelMaker|Jump to ModelMaker ”回到MM中。
3.在【單元視圖】(Units)選“refresh Import”按鈕。
4.查看TMMFace發現【類成員視圖】果然有了str:string。
注意:在【圖編輯頁】(Diagram Editor)查看TMMFace發現沒有str:string。這選項的問題。在圖的空白區域上點右鍵“visual style|Diagram properties”“Member visibility filter”把private,public等全選上就有了。
中間小結:
以上講的過程爲:用MM設計-在Dephi中(實現,修改)-重新映射到MM模型中-重新修改精練設計。這樣一個過程。這是一個正向的開發過程,也是我們在實際開發中正常的流程。
但是在沒有MM以前我們已經有了很多的類,很多的項目。我們能把他們變成漂亮的圖形嗎?
8、完全的逆向工程
逆向工程在MM中十分簡單。但是要提醒你的是不熟悉MM的脾氣的時候先備份一下你的舊代碼。
1.【單元視圖】(Units)選“Import Unit..”
2.選擇你要導入的.pas文件。
3.ok後你在【單元視圖】(Units)可以看見多了一個新的單元。
4.【圖編輯頁】(Diagram Editor),右鍵菜單“Wizards|visualiztion Wizards”選剛導入的單元,單元下的類選到右邊。next,finish,我們的圖上多了剛纔選中類圖。
圖形化我們已有的類就是這麼簡單,一個完全的逆向工程就完成了。
結束語:
MM的功能十分的強大,本文只介紹了很小的一部分,有興趣的讀者可以參考MM的操作手冊
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/fanghong1999/archive/2005/12/09/548266.aspx