国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

使用UML編寫Java應(yīng)用程序 (2)設(shè)計(jì)

2019-11-18 12:19:41
字體:
供稿:網(wǎng)友

  當(dāng)已經(jīng)考慮了所有的技術(shù)細(xì)節(jié)和限制條件,我們就可以進(jìn)入設(shè)計(jì)階段,設(shè)計(jì)階段需要展開和細(xì)化分析模型。設(shè)計(jì)的目的是為了說明一種可以很輕易地翻譯成程序設(shè)計(jì)代碼的工作解決方案。
  
  設(shè)計(jì)階段可以分成兩部分:
  
  1、結(jié)構(gòu)設(shè)計(jì) 這是非常高級的設(shè)計(jì),說明在什么地方定義包(子系統(tǒng)),以及包與包之間的相互依靠與通信機(jī)制。自然,我們的目標(biāo)是構(gòu)建一種清楚而又簡單的體系結(jié)構(gòu),包與包之間的依靠要少,假如可能的話,盡量避免雙向的依靠。
  
  2、具體設(shè)計(jì) 所有的類都應(yīng)描述足夠的細(xì)節(jié),來明確規(guī)定誰來編碼這些類。 UML中的動態(tài)模型用于示范類的對象在具體的環(huán)境中的行為。
  下面我將具體說明。
  
  第一節(jié) 結(jié)構(gòu)設(shè)計(jì)
  一個設(shè)計(jì)良好的體系結(jié)構(gòu)是開發(fā)一個可擴(kuò)展、可改變的系統(tǒng)的基礎(chǔ),程序包所需要關(guān)心的是要么處理一個具體的功能區(qū)域,要么處理一個具體的技術(shù)區(qū)域。從技術(shù)邏輯中把應(yīng)用程序邏輯(域類)區(qū)分開來是極其重要的,這是為了萬一需要修改程序的某一部分而不會對另一部分產(chǎn)生影響:一個目標(biāo)就是標(biāo)識并設(shè)定包與包之間(例如“子系統(tǒng)”)的相互依靠的規(guī)則,并不在包之間創(chuàng)建雙向的依靠(為了避免程序包集成的太過緊密),另一個目標(biāo)是為了表示標(biāo)準(zhǔn)類庫的需要。現(xiàn)在可用的應(yīng)用程序庫強(qiáng)調(diào)的主要還是在技術(shù)領(lǐng)域,比如用戶界面,數(shù)據(jù)庫或通信機(jī)制等等,但是,我們也同樣盼望出現(xiàn)更多的具體的應(yīng)用程序庫。
  
  本案例研究中的程序包或者說是子系統(tǒng)如下:
  
  1、用戶界面包(User-Interface) 這些類都是基于 java AWT包這個Java中用于編寫用戶界面應(yīng)用程序的一個標(biāo)準(zhǔn)的類庫。這個程序包與商業(yè)對象包(Business Object)協(xié)作,商業(yè)對象包包含了實(shí)際上用于儲存數(shù)據(jù)用的類,用戶界面包調(diào)用商業(yè)對象中的方法來取得并向商業(yè)對象中插入數(shù)據(jù)。
  
  2、商業(yè)對象包(Business Object) 它包括來自分析模型,比如 BorrowerInformation, Title, Item, Loan等等的討論域類。 該設(shè)計(jì)完全地定義了它們的操作并且添加了對于持久性的支持。 商業(yè)對象包與數(shù)據(jù)庫包合作,所有的商業(yè)對象類都必須從數(shù)據(jù)庫包中的 Persistent類繼續(xù)而來。
  
  3、數(shù)據(jù)庫包 (Database Package) 數(shù)據(jù)庫包給商業(yè)對象包中的另外一個類提供服務(wù),以使它們能夠持久的儲存信息。在目前的版本,Persistent類將儲存它的子類對象到文件系統(tǒng)中的文件中去。
  
  4、實(shí)用程序包(Utility Package) 實(shí)用程序包包含用于該系統(tǒng)中的另外一個包的服務(wù),現(xiàn)在,該包中只有 ObjId類,它用于引用遍及本系統(tǒng)的持久對象,包括用戶界面,商業(yè)對象和數(shù)據(jù)庫包。
  
  第二節(jié) 具體設(shè)計(jì)
  具體設(shè)計(jì)描述新的類--在用戶界面和數(shù)據(jù)庫包中的類,以及在本分析中描繪的商業(yè)對象類以外的人。本類的狀態(tài)和動態(tài)圖表使用的是與分析過程中一樣的圖表,但是它們被定義在更加具體和更高的技術(shù)層次,分析過程中的使用案例描述用于驗(yàn)證在設(shè)計(jì)階段處理的使用案例,使用序列圖表闡明在系統(tǒng)中,每個使用案例是如何在技術(shù)上實(shí)現(xiàn)的。
  
  數(shù)據(jù)庫包 應(yīng)用程序必須有持久儲存對象,所以必須添加一個數(shù)據(jù)庫層來提供這個服務(wù),為了簡單起見,我們把對象作為文件儲存在磁盤上,關(guān)于存儲器的細(xì)節(jié)就不需要被應(yīng)用程序所知了,它調(diào)用通用操作,比如 store()、update()、delete()和 find()等等,這些都是一個調(diào)用 Persistent的類的一部分,所有的類都需要繼續(xù) Persistent(持久對象)。
  
  持久性處理中的一個重要的因素就是 ObjId類,它的對象用于引用任何系統(tǒng)中的持久對象 (無論對象是在磁盤上還是已經(jīng)被讀入應(yīng)用程序中了 )。 ObjId是Object Identity的簡寫,是一種熟知的技術(shù),用于處理應(yīng)用程序中的對象引用。 通過使用對象標(biāo)識,一個對象標(biāo)識號就能被傳遞到 Persistent.getObject ( )操作,然后該對象將從持久存儲器中取回。 通常,這要通過每個持久類中的 getObject操作來完成,它還要執(zhí)行必要的類型檢查和轉(zhuǎn)換。對象標(biāo)識號還可以很輕易地作為操作的參數(shù)被傳遞 (例如,一個尋找具體對象的搜索窗口可以通過對象標(biāo)識號傳遞它的結(jié)果到另外一個窗口 )。
  
  ObjId標(biāo)識系統(tǒng)(用戶界面、商業(yè)對象和數(shù)據(jù)庫)中所有的包使用的一個常規(guī)類,因此它在設(shè)計(jì)階段就被放進(jìn)實(shí)用程序包中而不是數(shù)據(jù)庫包中。Persistent類的當(dāng)前實(shí)現(xiàn)還可以不夠完善,它的最終目標(biāo)是可以很輕易的改變持久存儲器的實(shí)現(xiàn),目前的替代的辦法是把對象出存在關(guān)系數(shù)據(jù)庫或面向?qū)ο髷?shù)據(jù)庫中,也可以使用Java中的持久對象支持儲存它們。
  
  商業(yè)對象包 在設(shè)計(jì)階段中的商業(yè)對象包基于分析過程中相應(yīng)的包——討論域類。類以及它們的相互關(guān)系和行為沒有變,但是類被描述的更加具體,包括了它們的相互關(guān)系和行為如何實(shí)現(xiàn)。
  
  一些操作已經(jīng)被翻譯成好幾個設(shè)計(jì)模型中的操作,一些還被改了名稱,這都是很正常的,因?yàn)榉治鲋皇敲總€類的能力的描繪,而設(shè)計(jì)則是系統(tǒng)具體的描述,因此設(shè)計(jì)模型中的所有的操作都必須有定義好的特征和返回值,注重,下面給出了設(shè)計(jì)與分析的不同。
  
  系統(tǒng)的當(dāng)前版本不必檢查一本書是否及時歸還,也不必處理預(yù)借書籍的訂單,因此Loan和 Reservation類的日期屬性就沒有實(shí)現(xiàn)。
  
  雜志和書的處理過程是完全相同的,除了借期的不同,而且它還不用處理。 在分析中, Magazine和 Book Title子類已經(jīng)被認(rèn)為不必要的并且在 Title類中只有一個類型屬性指定該書名是否指出一本書或雜志。在以后的應(yīng)用程序版本中,假如認(rèn)為有必要的話,這兩個簡化都可以刪除。
  
  分析過程中的狀態(tài)圖表在設(shè)計(jì)階段又被細(xì)化了,顯示在工作系統(tǒng)中狀態(tài)如何被表示以及被處理。 Title類的設(shè)計(jì)狀態(tài)圖表如圖 6。 其他對象可以通過調(diào)用 addReservation ( )和 removeReservation ( )操作來改變 Title的狀態(tài),就像這張圖表中所顯示的那樣。
  
  用戶界面包 用戶界面包總是在其他包之前,在系統(tǒng)中,它給用戶提供服務(wù)和信息,顯然,這個包基于標(biāo)準(zhǔn)的 Java AWT ( Abstract Window Toolkit )類。設(shè)計(jì)模型中的動態(tài)模型已經(jīng)被分配到 GUI包中,因?yàn)樗械呐c用戶的交互作用都是通過用戶界面開始的, 此外,我們還選擇序列圖表來說明動態(tài)模型,本使用案例的設(shè)計(jì)模型的實(shí)現(xiàn)都是用細(xì)節(jié)描述的,包括類中的實(shí)際的操作。序列圖表實(shí)際上是以一系列迭代的形式創(chuàng)建的。在實(shí)現(xiàn)(即編碼)階段更多的細(xì)節(jié)上的發(fā)掘會產(chǎn)生更進(jìn)一步的迭代。 圖 7表明 Add Title的結(jié)果設(shè)計(jì)序列圖表。
  
  第三節(jié) 用戶界面設(shè)計(jì)
  在設(shè)計(jì)階段,我們使用一個特定活動創(chuàng)建用戶界面。
  
  圖書館應(yīng)用程序中的用戶界面是基于本使用案例的,并且已經(jīng)被分成下列部分,在主窗口上,它的每個部分都已經(jīng)被給予一個單獨(dú)的菜單欄:
  
  1、功能 本系統(tǒng)中的主要功能的窗口就是用來借書、還書以及與借書籍的登記工作等。
  
  2、信息 本系統(tǒng)中的查看信息的窗口就是用來收集書名和借書者的信息。
  
  3、維護(hù) 維護(hù)本系統(tǒng)的窗口用來添加、更新和刪除書名、借書者以及書籍。
  
  一般情況下,每個窗口提供一個系統(tǒng)中的服務(wù)并且映射到一個使用案例 (即使并不是所有的用戶界面都必須從一個使用案例中映射而來), 創(chuàng)建一個成功的用戶界面超出本文討論的范圍,讀者朋友請參閱文后提供的代碼。我以后還會專門輯文探討這個問題。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 南宫市| 开封县| 东山县| 宝丰县| 西昌市| 濮阳县| 淳安县| 同心县| 辛集市| 逊克县| 莎车县| 德保县| 延庆县| 双牌县| 呼玛县| 雅安市| 乌拉特中旗| 浮梁县| 高青县| 景洪市| 子洲县| 昌黎县| 孟津县| 额济纳旗| 德钦县| 张家港市| 恩平市| 澄城县| 湖南省| 姚安县| 磐石市| 根河市| 建宁县| 五华县| 长汀县| 五家渠市| 抚远县| 常熟市| 江川县| 兰考县| 汤原县|