欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
使用 Rational XDE 加速 J2EE開(kāi)發(fā)

Rational?XDE TM 為最流行的集成開(kāi)發(fā)環(huán)境(IDE)提供了真正的無(wú)縫集成的可視化建模環(huán)境。Rational XDE 不但具有自動(dòng)化生成代碼和代碼/模型的同步的功能,它還具有其他更多的特性來(lái)輔助軟件的開(kāi)發(fā)。為了能夠更好的利用Rational XDE,你需要了解XDE所提供的強大的J2EE模式和代碼模板的能力,你既可以在開(kāi)發(fā)當中應用J2EE模式和代碼模板,也可以自己來(lái)定義和創(chuàng )建他們。本文將向大家展示如何使用Rational XDE 所提供的能力完成一個(gè)簡(jiǎn)單的J2EE項目的開(kāi)發(fā)。

一個(gè)簡(jiǎn)單應用的概述
為了展示如何使用Rational XDE 的獨特能力,我們將實(shí)現一個(gè)簡(jiǎn)單的Web應用的部分功能,這是一個(gè)貸款管理的應用系統,系統允許貸款者與貸款管理員執行一些簡(jiǎn)單的任務(wù)。

貸款者

  • 在線(xiàn)支付

  • 通過(guò)瀏覽器查看分期付款計劃

貸款管理員

  • 為客戶(hù)建立一個(gè)或多個(gè)貸款項目

  • 獲取有關(guān)預定還貸的信息

我們假設我們必須利用已有的基礎架構平臺:一個(gè)IBM WebSphere 應用服務(wù)器和幾個(gè)數據庫。

首先我們可以使用Rational XDE提供的自由形式的建模能力來(lái)不受限制的表達有關(guān)方案的方向和思想,比如圖1所示。 這種自由形式的圖給我們提供了顯而易見(jiàn)的好處:他們允許你仍然使用相同的工具,并且使將計劃文檔集成到項目中變的十分容易。

圖1: 自由形式圖更加廣泛的展示了方案的要點(diǎn)

自動(dòng)化分析和設計行為
一旦最初的計劃被完成,我們就可以開(kāi)始進(jìn)行分析與設計工作了。雖然Rational XDE運行在某一軟件開(kāi)發(fā)工具中,但它提供了完成傳統的分析與設計活動(dòng)的所有能力-用例建模,時(shí)序圖等等。實(shí)際上Rational XDE也提供了Rational Unified Process? Configuration for Java Developers (RCJD), RCJD為Java軟件的開(kāi)發(fā)提供了已被證明指南。

圖2顯示了簡(jiǎn)單的貸款管理系統的初始用例模型,此模型是通過(guò)與客戶(hù)的討論以及經(jīng)一步的細化而得到的。

圖2:簡(jiǎn)單的貸款管理系統的用例模型

為了簡(jiǎn)單起見(jiàn),我們將只對其中的一個(gè)用例進(jìn)行描述,以展示Rational XDE在此過(guò)程中的作用。我們選擇"顯示分期付款"這個(gè)用例。最初的時(shí)序圖細化了基本的用例場(chǎng)景,見(jiàn)圖3所示。

圖3:細化了顯示分期付款用例的基本流程的時(shí)序圖

顯然,這是一個(gè)高層次上的交互視圖,并沒(méi)有涉及到任何系統內部的工作的細節。Rational Unified Process 建議使用分析級別的類(lèi)來(lái)提供更加細節的內容。見(jiàn)圖4。

圖4:顯示分期貸款用例的細化了的主流程

如何更加精確的描述這個(gè)圖所表達的內容已經(jīng)超出了本文的范圍,你可以從文章最后所列的前三個(gè)資源引用中得到更詳細的信息。注意在例子中,我們選擇了將邊緣類(lèi)劃分為兩個(gè)頁(yè)面。一個(gè)更為簡(jiǎn)單的做法是通過(guò)單一的元素來(lái)接受所有的邊緣交互。

使用自定義模式創(chuàng )建模型
你可能對象"四人組"(Gang of Four)這樣的設計模式有一定的了解。這些已經(jīng)定義好的模式在Rational XDE中是被支持的,我們將在本文的后面部分展示某些模式的用法。Rational XDE更進(jìn)一步的支持了模式,它提供了通過(guò)UML來(lái)簡(jiǎn)化定義你自己的模式的能力。這種自定義模式的能力不但允許你實(shí)現自己的設計,而且可以自動(dòng)化一些在建模過(guò)程中枯燥乏味的工作,比如產(chǎn)生多個(gè)用例流程圖。典型的情況下用例擁有不止一個(gè)事件流。例如顯示分期貸款用例擁有至少兩個(gè)事件流:一個(gè)是成功存檔的場(chǎng)景,另一個(gè)是當盡力的獲取貸款詳細信息時(shí)操作失敗的場(chǎng)景。圖5 顯示了一個(gè)自定義的模式(UCArtifacts),它將為我們產(chǎn)生一個(gè)主事件流(成功),和兩個(gè)失敗的事件流。

圖5:自定義模式(UCArtifacts)自動(dòng)化產(chǎn)生用例的事件流程圖

這個(gè)簡(jiǎn)單的模式包含了兩個(gè)輸入參數:ausecase作為用例模型元素的輸入,anactor作為角色模型元素的輸入。模式用輸入參數的名字創(chuàng )建對象,用例的名字被加到Boundary, Control, or Entity名字中。這些對象被用于定義主事件流圖和兩個(gè)可選的事件流圖的時(shí)序圖的框架,這種定義是基于XDE所提供的標準的UML圖的。為用例創(chuàng )建時(shí)序圖是十分簡(jiǎn)單的,你可以通過(guò)在模型瀏覽器中拖/放相關(guān)的對象來(lái)完成創(chuàng )建時(shí)序圖的工作。兩個(gè)可選事件流的每一個(gè)都可以使用模式創(chuàng )建的角色、任何的邊緣(boundary)對象、控制(control)對象和實(shí)體(entity)對象。我們能夠通過(guò)在不同的對象之間畫(huà)被需要的消息和刪除任何沒(méi)有參與事件流的分析對象來(lái)完成用例圖。

實(shí)現設計

圖6:"顯示分期貸款"用例的初始類(lèi)圖

圖6顯示了"顯示分期貸款"用例初始的類(lèi)圖。

這個(gè)圖顯示了實(shí)現關(guān)鍵需求的基本角色,但并沒(méi)有考慮到其他用例實(shí)現當中用到的類(lèi)。為了實(shí)現統一的分析建模,我們需要用相同的方法分析其他的用例,然后將結果進(jìn)行合并。在這個(gè)階段,我們主要的目標是識別和排除重復的類(lèi),并且將相似和重疊的功能合并到同一個(gè)類(lèi)中。例如,我們可以將Amortization 和MakePaymentControl進(jìn)行合并成為一個(gè)單獨的控制對象,這個(gè)控制對象能夠處理多個(gè)用例。這里我們重點(diǎn)講述了"顯示分期貸款"用例,但并沒(méi)有顯示全部的用例操作。你可以通過(guò)本文最后參考資源部分的前三個(gè)獲取更多的關(guān)于用例的知識。

J2EE實(shí)現方案
到此為止我們所討論的幾乎是與具體的實(shí)現技術(shù)無(wú)關(guān)的?,F在讓我們來(lái)看一下本文之前所講述的XDE的能力是如何被應用到J2EE的開(kāi)發(fā)當中的。通常情況下,我們上面所討論的分析類(lèi)將被映射為以下的J2EE技術(shù):

邊緣對象(Boundary)

  • HTML
  • JavaServer Page(JSP)

控制對象(Control)

  • Servlets
  • Session Beans
  • Message Driven Beans

實(shí)體對象(Entity)

  • Entity Beans
  • JavaBean

對于在開(kāi)發(fā)你的應用系統時(shí)選擇正確合理的J2EE技術(shù),這只是一個(gè)開(kāi)始點(diǎn)。因為不同的技術(shù)可以被用來(lái)實(shí)現相似的方案,最合理的選擇取決于你的實(shí)現細節和系統的需求。

當然,Rational XDE J2EE模式最酷的部分是每一種模式都被XDE完全的實(shí)現了。你所要做的就是為你的應用提供業(yè)務(wù)邏輯。在這部分,我們來(lái)了解一下為了使用Front Controller模式,你所需要知道的具體細節。

建立請求與用例之間的關(guān)系
一個(gè)請求(例如,一個(gè)表單的提交)必須能夠被簡(jiǎn)單的指定給一個(gè)特定的用例。在我們討論的Front Controller模式的實(shí)現中,這個(gè)信息應該通過(guò)表單中的隱藏域來(lái)傳達,用例的名字應該在創(chuàng )建表單時(shí)被設置。當表單被提交時(shí),控制器簡(jiǎn)單的解析參數以決定哪一個(gè)用例應該被調用。當請求沒(méi)有被明確的指定某一用例時(shí),通常一個(gè)缺省的用例功能被設置用來(lái)處理該請求(見(jiàn)下面)。

<FORM Name="Form" METHOD="GET" ACTION="Controller">	<p align="left">	  <b><i><u>Show Amortization</u></i></b>	</p>	<p>	  Enter the following information about the loan:	</p>	<p>	  Principal 	  <input type="text" name="principal" size="8" value="250000"> 	  dollars 	</p>	<p>	  Rate 	  <input type="text" name="rate" size="8" value="10.0"> % 	</p>	<p>	  Duration 	  <input type="text" name="termInYears" size="3" value="30"> 	  years   	</p>	  <input type="hidden" name="UseCase" value="ShowAmortization"> 	<p>	  <input ID="IDCancel" Name="Cancel" Type="reset" Value="Cancel">	  <input ID="IDOK" Name="OK" Type="submit" Value="OK">     	</p></FORM>

通過(guò)控制器(Controller)處理請求
對于控制器來(lái)說(shuō)不需要任何的實(shí)現工作,模式的實(shí)現會(huì )根據所需邏輯抽取隱藏的參數,請求相關(guān)的helper bean,并且委托helper bean完成處理工作。圖7 顯示了頁(yè)面與控制器之間的靜態(tài)關(guān)系。完整的自動(dòng)產(chǎn)生的請求處理代碼,見(jiàn)圖7下方的代碼清單。

圖 7:表單和控制器間的關(guān)系

 // Check if we have a use case name passed on the URL.  String useCase = httpRequest.getParameter("UseCase");  IHelper ihelper = null;  if (useCase != null)  {    // Dynamically instantiate a helper and call it.    ihelper = (IHelper)theHelperFactory.create(useCase);    if (ihelper == null) ihelper = 	  (IHelper)theHelperFactory.createDefaultHelper();  }  else  {    ihelper = (IHelper)theHelperFactory.createDefaultHelper();  }  ihelper.processRequest(httpRequest, httpResponse);

建立用例和Helper Bean之間的映射關(guān)系
你能夠在設計時(shí)通過(guò)在HelperFactory的構造函數中添加映射信息來(lái)建立用例和Helper Bean之間的映射關(guān)系。對于"顯示分期貸款"用例和"設置貸款"用例來(lái)說(shuō)映射是簡(jiǎn)單的,請看下面的代碼片斷。 這段代碼僅僅需要在設計時(shí)被放置到HelperFactory構造函數的適當的、預先定義好的位置上。

// establish ShowAmortization use case mapping to its helper classusecasename = "ShowAmortization";classname = "ShowAmortizationHelper";addMap(usecasename, classname);// establish SetupLoan use case mapping to its respective helper classusecasename = "SetupLoan";classname = "SetupLoanHelper";addMap(usecasename, classname);

Helper Bean的實(shí)現
很明顯,這個(gè)場(chǎng)景下helper Bean的實(shí)現對于不同的用例來(lái)說(shuō)是應該是不同的。一般而言,一個(gè)helper Bean通常需要從請求中、被收集到的等價(jià)的額外信息中和其他參與者(例如:會(huì )話(huà)bean和實(shí)體bean)中提取適當的表單參數,然后,最終產(chǎn)生可以用于顯示的處理結果。

這個(gè)處理過(guò)程的部分例子見(jiàn)下面清單。注意XDE模式引擎完全消除了手工創(chuàng )建helper類(lèi)的需要。你需要做的只是在向導中簡(jiǎn)單的所選擇"Generated Value"選項,并且輸入helper類(lèi)的名字。圖8顯示了這個(gè)向導的截圖。

// extract the info from the request parameter	String sPrincipal = httpRequest.getParameter("principal");…..// locate the amortization EJB using the service locator…...// call the remote method on the session beanfloat totalInterest = theRemote.amortize(principal, rate, termInYears);        // put data in the AmortValueBean	AmortValueBean avb = new AmortValueBean();avb.setPrincipal(principal);…..// set the session attributehttpRequest.getSession().setAttribute("avb", avb);

圖8: 自動(dòng)產(chǎn)生基本的Helper Bean

顯示結果
這里再一次強調,有不同的方法可以完成相同的工作。典型的情況下,數據對于JSP來(lái)說(shuō)應該是可得到的,JSP將負責數據的顯示格式。圖9 顯示了這種靜態(tài)的關(guān)系。對于此方法,JSP源代碼顯示在圖9 的下面。

圖9 :JSP與被格式化/顯示的數據之間的關(guān)系

extracts data from the ‘a(chǎn)vb‘ bean instance and formats/displays it<jsp:useBean class="AmortValueBean" id="avb" scope="session"/><b>Results of your loan amortization request: <br>Pricipal entered: <%= avb.getPrincipal() %><br>YY.Total Payments: <%= avb.getTotalPayments() %><br></b> <p><a HREF="MainLoan.html">Back to Main Page</a>

代碼模板(Code Templates)
代碼模板是另一個(gè)Rational XDE提供的用于簡(jiǎn)化開(kāi)發(fā)人員開(kāi)發(fā)工作的能力。他們?yōu)橐韵路矫嫣峁┓浅S行У臋C制:

  • 代碼片斷和算法的重用
  • 對特定問(wèn)題實(shí)現基于代碼共享的一致性的解決方案以
  • 創(chuàng )建標準的頭信息和注釋

Rational XDE 對代碼模板提供了實(shí)質(zhì)性的支持。除了可擴展的、內建的基礎結構外,它還提供了以下的能力:

  • 綁定一個(gè)或多個(gè)代碼模板到一個(gè)方法
  • 根據需要去除一個(gè)代碼模板的綁定
  • 重新安排綁定順序以滿(mǎn)足代碼產(chǎn)生的需要
  • 參數化代碼模板

在我們的例子中,你能夠創(chuàng )建一個(gè)代碼模板以建立用例和helper類(lèi)的映射。然后你可以將代碼模板多次綁定到構造函數,并且為代碼模板簡(jiǎn)單的提供不同的缺省值以自定義代碼的生成。

圖10顯示了這樣的一個(gè)例子。

圖10:建立用例和Helper Bean映射的代碼模板

代碼模板也可以作為自定義模式的一部分來(lái)使用,因此你就可以使用Rational XDE創(chuàng )建更加有擴展性的應用框架。實(shí)際上,Rational XDE 內部也使用了代碼模板和模式的

能力來(lái)實(shí)現產(chǎn)品的其他各種能力。例如, getters and setters相關(guān)代碼的產(chǎn)生,設計模式的實(shí)現等等,都用到了代碼模板的能力。

端對端的場(chǎng)景
對于本文的簡(jiǎn)單應用我們已經(jīng)函蓋了設計和實(shí)現的具體細節,現在讓我們把這些片斷組合在一起。 接下來(lái)的兩個(gè)時(shí)序圖捕獲了不同對象間端到端的交互,包括來(lái)自于兩個(gè)模式實(shí)現的參與者。

圖11展示了前端的活動(dòng):表單被提交到控制器,控制器獲得helper bean并且要求它來(lái)處理外部的請求。

圖 11:表單被提交并且被控制器處理

圖12 是上一個(gè)時(shí)序圖的繼續。它顯示了helper bean的各種初始化的動(dòng)作,最終請求被轉發(fā)給了負責格式化和顯示計算結果的JSP頁(yè)面,JSP頁(yè)面將結果顯示給最終用戶(hù)。注意在獲取被需要的EJB的過(guò)程中使用了服務(wù)定位器模式。

圖12:Helper Bean執行處理過(guò)程并呈現結果

模式和代碼模板簡(jiǎn)化并加速了J2EE的開(kāi)發(fā)
我希望本文的討論向大家傳達了Rational XDE在J2EE項目中給開(kāi)發(fā)人員帶來(lái)的益處。Rational XDE中的模式和代碼模板給大家提供了一種簡(jiǎn)單的方法來(lái)利用經(jīng)典的解決方案以加速軟件的開(kāi)發(fā)。Rational XDE其他方面的能力-比如自動(dòng)同步和創(chuàng )建自定義模式和代碼模板的能力-將使開(kāi)發(fā)人員從枯燥的、反復的任務(wù)中解放出來(lái)并進(jìn)一步的加速軟件的開(kāi)發(fā)。

參考資料

  • Khawar Ahmed 和 Cary Umrysh,所著(zhù)的《使用J2EE和UML開(kāi)發(fā)企業(yè)級Java應用》 Addison-Wesley, 2001.

  • Ivar Jacobson, Magnus Christerson, Patrik Jonsson, and Gunnar Overgaard, 《面向對象的軟件工程》Addison-Wesley, 1992.

  • 《Rational 統一過(guò)程指南》:分析類(lèi) 部分

  • Grady Booch, James Rumbaugh, and Ivar Jacobson, 《統一建模語(yǔ)言用戶(hù)指南》e. Addison-Wesley, 1999.

關(guān)于作者
Khawar Z. Ahmed 是IBM Rational XDE 技術(shù)市場(chǎng)部門(mén)的一員,他主要負責 XDE 的 Java 平臺版本。同時(shí)他也是書(shū)
《Developing Enterprise Java Applications with J2EE and UML》 的第二作者. 你可以通過(guò) kzahmed@us.ibm.com 與他聯(lián)系。



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=240609

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
軟件開(kāi)發(fā)流程
用Rational Rose和UML開(kāi)發(fā)J2EE應用(1)
spring中的AOP與IOC
Spring中使用FreeMaker或Vilocity模板發(fā)送郵件
基于UML的外國專(zhuān)家管理信息系統的建模設計
都2020年了,這些6到起飛的idea插件你還沒(méi)用過(guò)?
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久