UML基礎(chǔ)與建模實踐:14、第十四章 Ross的雙向工程_第1頁
UML基礎(chǔ)與建模實踐:14、第十四章 Ross的雙向工程_第2頁
UML基礎(chǔ)與建模實踐:14、第十四章 Ross的雙向工程_第3頁
UML基礎(chǔ)與建模實踐:14、第十四章 Ross的雙向工程_第4頁
UML基礎(chǔ)與建模實踐:14、第十四章 Ross的雙向工程_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

UML基礎(chǔ)與建模實踐

第十四章Rose的雙向工程

主講人:內(nèi)容摘要雙向工程簡介1實例應用2正向工程3逆向工程4小結(jié)與習題514.1雙向工程簡介

正向和逆向工程這兩方面結(jié)合在一起,定義為雙向工程。正向工程把設計模型轉(zhuǎn)換為代碼框架,開發(fā)者不需要編寫類、屬性、方法代碼。一般情況下,開發(fā)人員將系統(tǒng)設計細化到一定的級別,然后應用正向工程把設計模型映射為代碼。逆向工程是指把代碼轉(zhuǎn)換成設計模型。在迭代開發(fā)周期中,一旦某個模型作為迭代的一部分被修改,采用正向工程把新的類、方法、屬性加入代碼;同時,一旦某些代碼被修改,采用逆向工程將修改后的代碼轉(zhuǎn)換為設計模型。14.2正向工程正向工程(代碼生成)是指把Rose模型中的一個或多個類圖轉(zhuǎn)換為Java源代碼的過程。RationalRose中的正向工程是以組件為單位的。即Java源代碼的生成是以組件為單位的,不是以類為單位的。所以,創(chuàng)建一個類后需要把它分配給一個有效的Java組件。如果模型的默認語言是Java,Rose會自動為這個類創(chuàng)建一個組件。當對一個設計模型元素進行正向工程時,模型元素的特征會映射成Java語言的框架結(jié)構(gòu)。例如,Rose中的類會通過它的組件生成一個.java文件,Rose中的包會生成一個java包。另外,當把一個UML包進行正向工程時,將把屬于該包的每一個組件都生成一個.java文件。14.2正向工程Rose工具能夠使代碼與UML模型保持一致,每次創(chuàng)建或修改模型中的UML元素,它都會自動進行代碼生成。默認情況下,這個功能是關(guān)閉的,可以通過【Tools→Java→PrejectSpecification】命令打開該功能,選擇CodeGeneration選項卡,選中AutomaticSynchronizationM復選框,如圖14-1所示。圖14-1打開自動同步14.2正向工程圖14-1所示的CodeGeneration選項卡是代碼生成時最常用的一個選項卡。下面對該選項卡中的選項做詳細的介紹。圖14-1打開自動同步(1)IDE:(2)DefaultDataTypes:(3)Prefixes:(4)GenerateRoseID:(5)GenerateDefaultReturnLine:(6)StoponError:(7)CreateMissingDirectories:14.2正向工程圖14-1所示的CodeGeneration選項卡是代碼生成時最常用的一個選項卡。下面對該選項卡中的選項做詳細的介紹。圖14-1打開自動同步(8)AutomaticSynchronizationMode:(9)ShowProgressIndicator:(10)SourceCodeControl:

指定對哪些文件進行源碼控制。(11)Putsourcecodeoftheprojectunder

SourceControl:(12)InputCheckin/Checkoutcomment:(13)SelectSourceRootPathforSource

Control:選擇存放生成的代碼文件的路徑。下面將詳細介紹如何從模型生成Java代碼。14.2正向工程

1.將UML類加入模型中的Java組件 Rose會將.java文件與模型中的組件聯(lián)系起來。因此,Rose要求模型中的每個Java類都必須屬于組件視圖中的某個Java組件。 有兩種給組件添加Java類的方法。14.2正向工程(1)當啟動代碼生成時,可以讓Rose自動創(chuàng)建組件。如果這樣,Rose會為每個類都生成一個.java文件和一個組件。為使用這個功能,必須將模型的默認語言設置為Java,可以通過【Tools→Options→Notation→DefaultLanguage】命令進行設置。Rose不會自動為多個類生成一個.java文件。如果將Java類分配給一個邏輯包,Rose將為組件視圖中的物理包創(chuàng)建一個鏡像,然后用它創(chuàng)建目錄或是基于模型中包的Java包。14.2正向工程(2)可以自己創(chuàng)建組件,然后顯式地將類添加到組件視圖中。這樣做可以將多個類生成的代碼放在一個.java文件中。注意:有兩種方法可以將一個類添加到組件中。無論選擇哪種方法,都必須首先創(chuàng)建這個組件。14.2正向工程(1)使用瀏覽器將類添加到組件中。首先在瀏覽器視圖中選擇一個類,然后將類拖放到適當?shù)慕M件上。這樣,就會在該類名字后面列出其所在組件的名字。(2)使用Rose中的ComponentSpecification窗口。首先打開組件的標準說明:如果該組件不是一個Java組件(也就是它的語言仍然是Anaysis),雙擊瀏覽器或圖中的組件;如果它已經(jīng)是Java組件,選中它并單擊鼠標,右鍵然后在彈出的快捷菜單中選擇【OpenStandardSpecification】命令。14.2正向工程2.語法檢查 這是一個可選的步驟。可以通過下面的步驟對模型組件進行Java語法錯誤檢查。(1)打開包含將用于生成代碼的組件圖。(2)在該圖中選擇一個或多個包和組件。(3)使用【Tools→Java/J2EE→SysntaxCheck】命令對其進行語法檢查。(4)查看Rose的日志窗口。如果發(fā)現(xiàn)有語法錯誤,生成的代碼有可能不能編譯。(5)對組件進行修改。14.2正向工程3.設置Classpath4.設置CodeGeneration參數(shù)5.備份文件6.生成Java代碼14.3逆向工程逆向工程是分析Java代碼,然后將其轉(zhuǎn)換到Rose模型的類和組件的過程。下面將會詳細介紹逆向工程的過程。14.3逆向工程(1)設置或檢查CALSSPATH環(huán)境變量。Rose要求將CLASSPATH環(huán)境設置為JDK的類庫。根據(jù)使用的JDK的版本不同,CLASSPATH可以指向不同類型的類庫文件,例如.ziprt.jar等。設置CLASSPATH環(huán)境變量的步驟如下:①右擊“我的電腦”,然后選擇【屬性→高級】選項,單擊【環(huán)境變量】按鈕,在“系統(tǒng)變量”選項區(qū)域中,首先查找是否已經(jīng)有了CLASSPATH環(huán)境變量。如果沒有,單擊【新建】按鈕;如果有,則單擊【編輯】按鈕,然后在彈出的對話框中輸入路徑。②為自己的庫創(chuàng)建一個Classpath屬性。可以使用projectSpecification窗口中的Classpath選項卡進行設置。14.3逆向工程(2)啟動逆向工程。有3種方式可以啟動逆向工程。①選擇一個或多個類,然后選擇【Tools→Java/J2EE→ReverseEngineer】命令。②右鍵單擊某個類,然后在彈出的快捷菜單中選擇【Java/J2EE→ReverseEngineer】命令。③將文件拖放到Rose模型中的組件圖或類圖中。當拖放.zip、.cab和.jar文件時,Rose會自動將它們解壓。注意,Rose不能將代碼生成這種文件。14.4實例應用1.生成代碼實例圖14-2類由于Rose的正向工程只能從UML類生成代碼,所以首先必須畫出類圖。以如圖14-2所示的類為例進行介紹。14.4實例應用選中這些類,然后選擇【Tools→Java/J2EE→GenerateCode】命令,如果還沒設置Classpath,那么會彈出如圖14-3所示的對話框,要求選擇Classpath,如果當前還沒有Classpath,單擊Edit按鈕,進行Classpath配置。圖14-3AssignCLASSPATHEntries對話框14.4實例應用單擊圖14-4中右邊的第一個“添加”按鈕,彈出選擇Classpath配置確認框,如圖14-5所示。

圖14-4單擊“添加”按鈕

圖14-5Classpath配置確認框14.4實例應用Classpath配置有以下兩種形式。(1)選擇.jar或.zip+Directory形式,將Classpath指向為JDK的類庫文件(如C:\ProgramFiles\Java\j2sdk1.5.0\lib\rt.jar)。另外,再定義一個Directory(如D:\),可將生成的.java文件放在這個獨立的Directory下。(2)只選擇Directory,將Classpath指向為JDK的類庫Directory(如C:\ProgramFiles\Java\j2sdk1.5.0\lib),則生成的.java文件將放在C:\ProgramFiles\Java\j2sdk1.5.0\lib下。

14.4實例應用這里選擇第一種形式,配置如圖14-6所示。

圖14-6Classpath配置14.4實例應用

單擊“確定”按鈕返回。選擇設定的Classpath,然后在右面選中所有的類,最后單擊【OK】按鈕,Rose就開始生成Java代碼,如圖14-7所示。

圖14-7單擊【OK】按鈕14.4實例應用

在Classpath下可以找到已經(jīng)生成的Java文件,如圖圖14-8所示。圖14-8已經(jīng)生成的Java文件14.4實例應用基類Person的源代碼如下://Sourcefile:D:\\JavaSource\\Person.javapublicclassPerson{

privateStringname;

privateStringID;

privateStringaddress;

privateStringphoneNo;/**@roseuid4921532B01A5*/

publicPerson()

{

}/**@roseuid492152A003A9*/

publicvoidgetName()

{

}14.4實例應用

/**@roseuid4921532B0138*/publicvoidsetName(){}/**@roseuid49215335002E*/publicvoidgetID(){}/**@roseuid4921533E031C*/publicvoidsetID(){}/**@roseuid49215343000F*/publicvoidgetAddress(){}/**@roseuid4921534E030D*/publicvoidsetAddress(){}}14.4實例應用

//Sourcefile:D:\\JavaSource\\Customer.javapublicclassCustomerextendsPerson{privateStringCarType;privateStringlicenceNo;privateStringRequestOrder;/**@roseuid4921539A000F*/publicCustomer(){}}Rose是否在代碼中保持了模型中的繼承關(guān)系,以Customer子類為例,代碼如下:令人欣喜的是,它保持了模型中的繼承關(guān)系。代碼生成后,開發(fā)者就可以在這個代碼框架中實現(xiàn)具體的方法,大大節(jié)省了開發(fā)的時間。14.4實例應用

2.逆向工程實例修改Customer類,在里面加入一個print方法,暫時不加入任何實現(xiàn)內(nèi)容,再刪除RequestOrder成員變量。publicvoidprint(){}14.4實例應用

在RationalRose的邏輯視圖中選擇Customer類,單擊鼠標右鍵,在彈出的快捷菜單中選擇【Java/J2EE→ReverseEngineer】命令,彈出如圖14-9所示的窗口。圖14-9JavaReverseEngineer窗口14.4實例應用

在左邊的目錄結(jié)構(gòu)中選擇D:\JavaSource,然后右邊就會顯示出該目錄下的.java文件,選擇Customer.java文件,單擊【Reverse】按鈕,完成以后單擊【Done】按鈕,可以發(fā)現(xiàn)Customer類發(fā)生了變化,如圖14-10所示。圖14-9JavaReverseEngineer窗口圖14-10Customer類發(fā)生了變化14.5小

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論