Model Maker上手指南

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章