欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

統(tǒng)一建模語言_動力節(jié)點Java學(xué)院整理

 更新時間:2017年06月05日 11:14:27   投稿:mrr  
這篇文章主要介紹了統(tǒng)一建模語言的相關(guān)知識,非常不錯,具有參考借鑒價值,需要的的朋友參考下吧

到了21世紀(jì)——準(zhǔn)確地說是2003年,UML已經(jīng)獲得了業(yè)界的認(rèn)同。在我所見過的專業(yè)人員的簡歷中,75%都聲稱具備UML的知識。然而,在同絕大多數(shù)求職人員面談之后,可以明顯地看出他們并不真正了解UML。通常地,他們將UML用作一個術(shù)語,或?qū)ML一知半解。大家對UML缺乏理解的這種狀況,促進(jìn)我撰寫這篇關(guān)于UML 1.4的快速入門文章。當(dāng)閱讀完本文時,您還不具備足夠的知識可以在簡歷上聲稱自己掌握了UML,但是您已具有了進(jìn)一步鉆研該語言的良好起點。

  背景知識

  正如前面曾提到過的,UML的本意是要成為一種標(biāo)準(zhǔn)的統(tǒng)一語言,使得IT專業(yè)人員能夠進(jìn)行計算機應(yīng)用程序的建模。UML的主要創(chuàng)始人是Jim Rumbaugh、Ivar Jacobson和Grady Booch,他們最初都有自己的建模方法(OMT、OOSE和Booch),彼此之間存在著競爭。最終,他們聯(lián)合起來創(chuàng)造了一種開放的標(biāo)準(zhǔn)。(聽起來是不是很熟悉?這個現(xiàn)象類似J2EE、SOAP和Linux的誕生。)UML成為"標(biāo)準(zhǔn)"建模語言的原因之一在于,它與程序設(shè)計語言無關(guān)。(IBM Rational的UML建模工具被廣泛應(yīng)用于J2EE和.NET開發(fā)。)而且,UML符號集只是一種語言而不是一種方法學(xué)。這點很重要,因為語言與方法學(xué)不同,它可以在不做任何更改的情況下很容易地適應(yīng)任何公司的業(yè)務(wù)運作方式。

  既然UML不是一種方法學(xué),它就不需要任何正式的工作產(chǎn)品(即IBM Rational Unified Process術(shù)語中所定義的"工件")。而且它還提供了多種類型的模型描述圖(diagram),當(dāng)在某種給定的方法學(xué)中使用這些圖時,它使得開發(fā)中的應(yīng)用程序的更易理解。UML的內(nèi)涵遠(yuǎn)不只是這些模型描述圖,但是對于入門來說,這些圖對這門語言及其用法背后的基本原理提供了很好的介紹。通過把標(biāo)準(zhǔn)的UML圖放進(jìn)您的工作產(chǎn)品中,精通UML的人員就更加容易加入您的項目并迅速進(jìn)入角色。最常用的UML圖包括:用例圖、類圖、序列圖、狀態(tài)圖、活動圖、組件圖和部署圖。

  深入討論每類圖的細(xì)節(jié)問題已超出了這篇入門文章的范圍。因此,下面僅給出了每類圖的簡要說明,更詳細(xì)的信息將在以后的文章中探討。

  用例圖

  用例圖描述了系統(tǒng)提供的一個功能單元。用例圖的主要目的是幫助開發(fā)團隊以一種可視化的方式理解系統(tǒng)的功能需求,包括基于基本流程的"角色"(actors,也就是與系統(tǒng)交互的其他實體)關(guān)系,以及系統(tǒng)內(nèi)用例之間的關(guān)系。用例圖一般表示出用例的組織關(guān)系 —— 要么是整個系統(tǒng)的全部用例,要么是完成具有功能(例如,所有安全管理相關(guān)的用例)的一組用例。要在用例圖上顯示某個用例,可繪制一個橢圓,然后將用例的名稱放在橢圓的中心或橢圓下面的中間位置。要在用例圖上繪制一個角色(表示一個系統(tǒng)用戶),可繪制一個人形符號。角色和用例之間的關(guān)系使用簡單的線段來描述,如圖1所示。

圖1:示例用例圖

  圖字(從上到下):CD銷售系統(tǒng);查看樂隊CD的銷售統(tǒng)計;樂隊經(jīng)理;查看Billboard 200排行榜報告;唱片經(jīng)理;查看特定CD的銷售統(tǒng)計;檢索最新的Billboard 200排行榜報告;排行榜報告服務(wù)

  用例圖通常用于表達(dá)系統(tǒng)或者系統(tǒng)范疇的高級功能。如圖1所示,可以很容易看出該系統(tǒng)所提供的功能。這個系統(tǒng)允許樂隊經(jīng)理查看樂隊CD的銷售統(tǒng)計報告以及Billboard 200排行榜報告。它也允許唱片經(jīng)理查看特定CD的銷售統(tǒng)計報告和這些CD在Billboard 200排行榜的報告。這個圖還告訴我們,系統(tǒng)將通過一個名為"排行榜報告服務(wù)"的外部系統(tǒng)提供Billboard排行榜報告。

  此外,在用例圖中,沒有列出的用例表明了該系統(tǒng)不能完成的功能。例如,它不能提供給樂隊經(jīng)理收聽Billboard 200上不同專輯中的歌曲的途徑 —— 也就是說,系統(tǒng)沒有引用一個叫做"收聽Billboard 200上的歌曲"的用例。這種缺少不是一件小事。在用例圖中提供清楚的、簡要的用例描述,項目贊助商就很容易看出系統(tǒng)是否提供了必須的功能。

  類圖

  類圖表示不同的實體(人、事物和數(shù)據(jù))如何彼此相關(guān);換句話說,它顯示了系統(tǒng)的靜態(tài)結(jié)構(gòu)。類圖可用于表示邏輯類,邏輯類通常就是業(yè)務(wù)人員所談及的事物種類 —— 搖滾樂隊、CD、廣播?。换蛘哔J款、住房抵押、汽車信貸以及利率。類圖還可用于表示實現(xiàn)類,實現(xiàn)類就是程序員處理的實體。實現(xiàn)類圖或許會與邏輯類圖顯示一些相同的類。然而,實現(xiàn)類圖不會使用相同的屬性來描述,因為它很可能具有對諸如Vector和HashMap這種事物的引用。

  類在類圖上使用包含三個部分的矩形來描述,如圖2所示。最上面的部分顯示類的名稱,中間部分包含類的屬性,最下面的部分包含類的操作(或者說"方法")。


圖2:類圖中的示例類對象

  根據(jù)我的經(jīng)驗,幾乎每個開發(fā)人員都知道這個類圖是什么,但是我發(fā)現(xiàn)大多數(shù)程序員都不能正確地描述類的關(guān)系。對于像圖3這樣的類圖,您應(yīng)該使用帶有頂點指向父類的箭頭的線段來繪制繼承關(guān)系1,并且箭頭應(yīng)該是一個完全的三角形。如果兩個類都彼此知道對方,則應(yīng)該使用實線來表示關(guān)聯(lián)關(guān)系;如果只有其中一個類知道該關(guān)聯(lián)關(guān)系,則使用開箭頭表示。

圖3:一個完整的類圖,包括了圖2所示的類對象

  在圖3中,我們同時看到了繼承關(guān)系和兩個關(guān)聯(lián)關(guān)系。CDSalesReport類繼承自Report類。一個CDSalesReport類與一個CD類關(guān)聯(lián),但是CD類并不知道關(guān)于CDSalesReport類的任何信息。CD類和Band類都彼此知道對方,兩個類彼此都可以與一個或者多個對方類相關(guān)聯(lián)。

  一個類圖可以整合其他許多概念,這將在本系列文章的后續(xù)文章中介紹。

  序列圖

  序列圖顯示具體用例(或者是用例的一部分)的詳細(xì)流程。它幾乎是自描述的,并且顯示了流程中不同對象之間的調(diào)用關(guān)系,同時還可以很詳細(xì)地顯示對不同對象的不同調(diào)用。

  序列圖有兩個維度:垂直維度以發(fā)生的時間順序顯示消息/調(diào)用的序列;水平維度顯示消息被發(fā)送到的對象實例。

  序列圖的繪制非常簡單。橫跨圖的頂部,每個框(參見圖4)表示每個類的實例(對象)。在框中,類實例名稱和類名稱之間用空格/冒號/空格來分隔,例如,myReportGenerator : ReportGenerator。如果某個類實例向另一個類實例發(fā)送一條消息,則繪制一條具有指向接收類實例的開箭頭的連線,并把消息/方法的名稱放在連線上面。對于某些特別重要的消息,您可以繪制一條具有指向發(fā)起類實例的開箭頭的虛線,將返回值標(biāo)注在虛線上。就我而言,我總喜歡繪制出包括返回值的虛線,這些額外的信息可以使得序列圖更易于閱讀。

  閱讀序列圖也非常簡單。從左上角啟動序列的"驅(qū)動"類實例開始,然后順著每條消息往下閱讀。記?。弘m然圖4所示的例子序列圖顯示了每條被發(fā)送消息的返回消息,但這只是可選的。

圖4:一個示例序列圖

  通過閱讀圖4中的示例序列圖,您可以明白如何創(chuàng)建一個CD銷售報告(CD Sales Report)。其中的aServlet對象表示驅(qū)動類實例。aServlet向名為gen的ReportGenerator類實例發(fā)送一條消息。該消息被標(biāo)為generateCDSalesReport,表示ReportGenerator對象實現(xiàn)了這個消息處理程序。進(jìn)一步理解可發(fā)現(xiàn),generateCDSalesReport消息標(biāo)簽在括號中包括了一個cdId,表明aServlet隨該消息傳遞一個名為cdId的參數(shù)。當(dāng)gen實例接收到一條generateCDSalesReport消息時,它會接著調(diào)用CDSalesReport類,并返回一個aCDReport的實例。然后gen實例對返回的aCDReport實例進(jìn)行調(diào)用,在每次消息調(diào)用時向它傳遞參數(shù)。在該序列的結(jié)尾,gen實例向它的調(diào)用者aServlet返回一個aCDReport。

  請注意:圖4中的序列圖相對于典型的序列圖來說太詳細(xì)了。然而,我認(rèn)為它才是足夠易于理解的,并且它顯示了如何表示嵌套的調(diào)用。對于初級開發(fā)人員來說,有時把一個序列分解到這種詳細(xì)程度是很有必要的,這有助于他們理解相關(guān)的內(nèi)容。

  狀態(tài)圖

  狀態(tài)圖表示某個類所處的不同狀態(tài)和該類的狀態(tài)轉(zhuǎn)換信息。有人可能會爭論說每個類都有狀態(tài),但不是每個類都應(yīng)該有一個狀態(tài)圖。只對"感興趣的"狀態(tài)的類(也就是說,在系統(tǒng)活動期間具有三個或更多潛在狀態(tài)的類)才進(jìn)行狀態(tài)圖描述。

  如圖5所示,狀態(tài)圖的符號集包括5個基本元素:初始起點,它使用實心圓來繪制;狀態(tài)之間的轉(zhuǎn)換,它使用具有開箭頭的線段來繪制;狀態(tài),它使用圓角矩形來繪制;判斷點,它使用空心圓來繪制;以及一個或者多個終止點,它們使用內(nèi)部包含實心圓的圓來繪制。要繪制狀態(tài)圖,首先繪制起點和一條指向該類的初始狀態(tài)的轉(zhuǎn)換線段。狀態(tài)本身可以在圖上的任意位置繪制,然后只需使用狀態(tài)轉(zhuǎn)換線條將它們連接起來。

圖5:顯示類通過某個功能系統(tǒng)的各種狀態(tài)的狀態(tài)圖

  圖5中的狀態(tài)圖顯示了它們可以表達(dá)的一些潛在信息。例如,從中可以看出貸款處理系統(tǒng)最初處于Loan Application狀態(tài)。當(dāng)批準(zhǔn)前(pre-approval)過程完成時,根據(jù)該過程的結(jié)果,或者轉(zhuǎn)到Loan Pre-approved狀態(tài),或者轉(zhuǎn)到Loan Rejected狀態(tài)。這個判斷(它是在轉(zhuǎn)換過程期間做出的)使用一個判斷點來表示 —— 即轉(zhuǎn)換線條間的空心圓。通過該狀態(tài)圖可知,如果沒有經(jīng)過Loan Closing狀態(tài),貸款不可能從Loan Pre-Approved狀態(tài)進(jìn)入Loan in Maintenance狀態(tài)。而且,所有貸款都將結(jié)束于Loan Rejected或者Loan in Maintenance狀態(tài)。

  活動圖

  活動圖表示在處理某個活動時,兩個或者更多類對象之間的過程控制流?;顒訄D可用于在業(yè)務(wù)單元的級別上對更高級別的業(yè)務(wù)過程進(jìn)行建模,或者對低級別的內(nèi)部類操作進(jìn)行建模。根據(jù)我的經(jīng)驗,活動圖最適合用于對較高級別的過程建模,比如公司當(dāng)前在如何運作業(yè)務(wù),或者業(yè)務(wù)如何運作等。這是因為與序列圖相比,活動圖在表示上"不夠技術(shù)性的",但有業(yè)務(wù)頭腦的人們往往能夠更快速地理解它們。

  活動圖的符號集與狀態(tài)圖中使用的符號集類似。像狀態(tài)圖一樣,活動圖也從一個連接到初始活動的實心圓開始?;顒邮峭ㄟ^一個圓角矩形(活動的名稱包含在其內(nèi))來表示的?;顒涌梢酝ㄟ^轉(zhuǎn)換線段連接到其他活動,或者連接到判斷點,這些判斷點連接到由判斷點的條件所保護(hù)的不同活動。結(jié)束過程的活動連接到一個終止點(就像在狀態(tài)圖中一樣)。作為一種選擇,活動可以分組為泳道(swimlane),泳道用于表示實際執(zhí)行活動的對象,如圖6所示。

圖6:活動圖,具有兩個泳道,表示兩個對象的活動控制:樂隊經(jīng)理,以及報告工具

  圖字(沿箭頭方向):樂隊經(jīng)理;報告工具;選擇"查看樂隊的銷售報告";檢索該樂隊經(jīng)理所管理的樂隊;顯示報告條件選擇屏幕;選擇要查看其銷售報告的樂隊;從銷售數(shù)據(jù)庫檢索銷售數(shù)據(jù);顯示銷售報告。

  該活動圖中有兩個泳道,因為有兩個對象控制著各自的活動:樂隊經(jīng)理和報告工具。整個過程首先從樂隊經(jīng)理選擇查看他的樂隊銷售報告開始。然后報告工具檢索并顯示他管理的所有樂隊,并要求他從中選擇一個樂隊。在樂隊經(jīng)理選擇一個樂隊之后,報告工具就檢索銷售信息并顯示銷售報告。該活動圖表明,顯示報告是整個過程中的最后一步。

  組件圖

  組件圖提供系統(tǒng)的物理視圖。它的用途是顯示系統(tǒng)中的軟件對其他軟件組件(例如,庫函數(shù))的依賴關(guān)系。組件圖可以在一個非常高的層次上顯示,從而僅顯示粗粒度的組件,也可以在組件包層次2上顯示。

  組件圖的建模最適合通過例子來描述。圖7顯示了4個組件:Reporting Tool、Billboard Service、Servlet 2.2 API和JDBC API。從Reporting Tool組件指向Billboard Service、Servlet 2.2 API和JDBC API組件的帶箭頭的線段,表示Reporting Tool依賴于那三個組件。

圖7:組件圖顯示了系統(tǒng)中各種軟件組件的依賴關(guān)系

  部署圖

  部署圖表示該軟件系統(tǒng)如何部署到硬件環(huán)境中。它的用途是顯示該系統(tǒng)不同的組件將在何處物理地運行,以及它們將如何彼此通信。因為部署圖是對物理運行情況進(jìn)行建模,系統(tǒng)的生產(chǎn)人員就可以很好地利用這種圖。

  部署圖中的符號包括組件圖中所使用的符號元素,另外還增加了幾個符號,包括節(jié)點的概念。一個節(jié)點可以代表一臺物理機器,或代表一個虛擬機器節(jié)點(例如,一個大型機節(jié)點)。要對節(jié)點進(jìn)行建模,只需繪制一個三維立方體,節(jié)點的名稱位于立方體的頂部。所使用的命名約定與序列圖中相同:[實例名稱] : [實例類型](例如,"w3reporting.myco.com : Application Server")。

  圖8:部署圖

  圖字:由于Reporting Tool組件繪制在IBM WebSphere內(nèi)部,后者又繪制在節(jié)點w3.reporting.myco.com內(nèi)部,因而我們知道,用戶將通過運行在本地機器上的瀏覽器來訪問Reporting Tool,瀏覽器通過公司intranet上的HTTP協(xié)議與Reporting Tool建立連接。

  圖8中的部署圖表明,用戶使用運行在本地機器上的瀏覽器訪問Reporting Tool,并通過公司intranet上的HTTP協(xié)議連接到Reporting Tool組件。這個工具實際運行在名為w3reporting.myco.com的Application Server上。這個圖還表明Reporting Tool組件繪制在IBM WebSphere內(nèi)部,后者又繪制在w3.reporting.myco.com節(jié)點內(nèi)部。Reporting Tool使用Java語言通過IBM DB2數(shù)據(jù)庫的JDBC接口連接到它的報告數(shù)據(jù)庫上,然后該接口又使用本地DB2通信方式,與運行在名為db1.myco.com的服務(wù)器上實際的DB2數(shù)據(jù)庫通信。除了與報告數(shù)據(jù)庫通信外,Report Tool組件還通過HTTPS上的SOAP與Billboard Service進(jìn)行通信。

  結(jié)束語

  盡管本文僅提供了對統(tǒng)一建模語言UML的簡要介紹,但還是鼓勵大家把從這里學(xué)到的基本信息應(yīng)用到自己的項目中,同時更深入地鉆研UML。已經(jīng)有多種軟件工具可以幫助您把UML圖集成到軟件開發(fā)過程中,不過即使沒有自動化的工具,您也可以使用白板上的標(biāo)記或者紙和筆來手工繪制UML圖,仍然會獲益匪淺。

相關(guān)文章

  • Springboot文件上傳出現(xiàn)找不到指定系統(tǒng)路徑的解決

    Springboot文件上傳出現(xiàn)找不到指定系統(tǒng)路徑的解決

    這篇文章主要介紹了Springboot文件上傳出現(xiàn)找不到指定系統(tǒng)路徑的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java Hibernate中的查詢策略和抓取策略

    Java Hibernate中的查詢策略和抓取策略

    Hibernate是一種Java對象關(guān)系映射框架,提供了多種查詢和抓取策略,用于優(yōu)化數(shù)據(jù)庫訪問性能。查詢策略包括延遲加載、立即加載、查詢緩存等,抓取策略包括join抓取、子查詢抓取、批量抓取等。這些策略可以根據(jù)實際應(yīng)用場景進(jìn)行選擇和配置,提高數(shù)據(jù)訪問的效率和穩(wěn)定性
    2023-04-04
  • java微信公眾號開發(fā)案例

    java微信公眾號開發(fā)案例

    這篇文章主要為大家詳細(xì)介紹了java微信公眾號開發(fā)案例,如何接入公眾號,訂閱號怎么樣接收消息,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • 在Java中使用redisTemplate操作緩存的方法示例

    在Java中使用redisTemplate操作緩存的方法示例

    這篇文章主要介紹了在Java中使用redisTemplate操作緩存的方法示例,在Redis中可以存儲String、List、Set、Hash、Zset。感興趣的可以了解一下
    2019-01-01
  • SpringBoot集成P6Spy實現(xiàn)SQL日志的記錄詳解

    SpringBoot集成P6Spy實現(xiàn)SQL日志的記錄詳解

    P6Spy是一個框架,它可以無縫地攔截和記錄數(shù)據(jù)庫活動,而無需更改現(xiàn)有應(yīng)用程序的代碼。一般我們使用的比較多的是使用p6spy打印我們最后執(zhí)行的sql語句
    2022-11-11
  • Spring對靜態(tài)變量無法注入的解決方案

    Spring對靜態(tài)變量無法注入的解決方案

    這篇文章主要介紹了使用Spring對靜態(tài)變量無法注入的解決方案,具有很好的參考價值,希望對大家有所幫助。
    2021-07-07
  • java隨機抽取指定范圍不重復(fù)的數(shù)字

    java隨機抽取指定范圍不重復(fù)的數(shù)字

    這篇文章主要介紹了java隨機抽取指定范圍不重復(fù)的數(shù)字的相關(guān)資料,需要的朋友可以參考下
    2016-06-06
  • 關(guān)于Openfire集群源碼的分析

    關(guān)于Openfire集群源碼的分析

    這篇文章主要介紹了關(guān)于Openfire集群源碼的分析,內(nèi)容比較詳細(xì),具有一定參考價值,需要的朋友可以了解下。
    2017-09-09
  • Java給實體每一個字段賦默認(rèn)值詳細(xì)代碼示例

    Java給實體每一個字段賦默認(rèn)值詳細(xì)代碼示例

    這篇文章主要給大家介紹了關(guān)于Java給實體每一個字段賦默認(rèn)值的相關(guān)資料,在編程過程中有時會出現(xiàn)這樣一種情況,在查詢無結(jié)果時我們需要給實體賦默認(rèn)值,需要的朋友可以參考下
    2023-09-09
  • JavaScript的基本類型值-String類型

    JavaScript的基本類型值-String類型

    String類型用于表示由零或多個16位Unicode字符組成的字符序列,即字符串。在JavaScript中沒有單個的字符型,都是字符串。這篇文章主要介紹了JavaScript的基本類型值String類型,需要的朋友可以參考下
    2017-02-02

最新評論