UML實踐----UML活動圖、順序圖、狀態(tài)圖、協(xié)作圖
本節(jié)和大家一起學習一下UML實踐中的UML活動圖、順序圖、狀態(tài)圖、協(xié)作圖 ,相信通過本節(jié)的學習你對UML實踐中UML圖有一定的了解。下面就讓我們一起來看一下UML圖的詳細介紹吧。
UML實踐----UML活動圖、順序圖、狀態(tài)圖、協(xié)作圖
面向?qū)ο蟮膯栴}的處理的關鍵是建模問題。建??梢园言趶碗s世界的許多重要的細節(jié)給抽象出。許多建模工具封裝了UML(也就是Unified Modeling Language™),這篇課程的目的是展示出UML的精彩之處。
UML中有九種建模的圖標,即:
用例圖
類圖
對象圖
順序圖
協(xié)作圖
狀態(tài)圖
活動圖
組件圖
配置圖
本課程中的某些部分包含了這些圖的細節(jié)信息的頁面鏈接。而且每個部分都有一個小問題,測試一下你對這個部分的理解。
為什么UML很重要?
為了回答這個問題,我們看看建筑行業(yè)。設計師設計出房子。施工人員使用這個設計來建造房子。建筑越復雜,設計師和施工人員之間的交流就越重要。藍圖就成為了這個行業(yè)中的設計師和施工人員的必修課。寫軟件就好像建造建筑物一樣。系統(tǒng)越復雜,參與編寫與配置軟件的人員之間的交流也就越重要。在過去十年里UML就成為分析師,設計師和程序員之間的“建筑藍圖”?,F(xiàn)在它已經(jīng)成為了軟件行業(yè)的一部分了。UML提供了分析師,設計師和程序員之間在軟件設計時的通用語言。
UML被應用到面向?qū)ο蟮膯栴}的解決上。想要學習UML必須熟悉面向?qū)ο蠼鉀Q問題的根本原則――都是從模型的建造開始的。一個模型model就是根本問題的抽象。域domain就是問題所處的真實世界。
模型是由對象objects組成的,它們之間通過相互發(fā)送消息messages來相互作用的。記住把一個對象想象成“活著的”。對象有他們知道的事(屬性 attributes)和他們可以做的事(行為或操作behaviors or operations)。對象的屬性的值決定了它的狀態(tài)state。
類Classes是對象的“藍圖”。一個類在一個單獨的實體中封裝了屬性(數(shù)據(jù))和行為(方法或函數(shù))。對象是類的實例instances。
活動圖
UML實踐中活動圖activitydiagram是一個很特別的流程圖?;顒訄D和狀態(tài)圖之間是有關系的。狀態(tài)圖把焦點集中在過程中的對象身上,而活動圖則集中在一個單獨過程動作流程?;顒訄D告訴了我們活動之間的依賴關系。
對我們的例子來說,我們使用如下的過程。
“通過ATM來取錢?!?BR>這個活動有三個類Customer,ATM和Bank。整個過程從黑色圓圈開始到黑白的同心圓結(jié)束?;顒佑脠A角矩形表示。
活動圖可以被分解成許多對象泳道swimlanes,可以決定哪些對象負責那些活動。每個活動都有一個單獨的轉(zhuǎn)移transition連接這其他的活動。
轉(zhuǎn)移可能分支branch成兩個以上的互斥的轉(zhuǎn)移。保護表達式(在[]中)表示轉(zhuǎn)移是從一個分支中引出的。分支以及分支結(jié)束時的合并merge在圖中用菱形表示。
轉(zhuǎn)移也可以分解fork成兩個以上的并行活動。分解以及分解結(jié)束時的線程結(jié)合join在圖中用粗黑線表示
順序圖
UML實踐中類圖和對象圖是靜態(tài)模型的視圖。交互圖是動態(tài)的。他們描述了對象間的交互作用。
順序圖將交互關系表示為一個二維圖??v向是時間軸,時間沿豎線向下延伸。橫向軸代表了在協(xié)作中各獨立對象的類元角色。類元角色用生命線表示。當對象存在時,角色用一條虛線表示,當對象的過程處于激活狀態(tài)時,生命線是一個雙道線。
消息用從一個對象的生命線到另一個對象生命線的箭頭表示。箭頭以時間順序在圖中從上到下排列。
協(xié)作圖
UML實踐中協(xié)作圖也是互動的圖表。他們像序列圖一樣也傳遞相同的信息,但他們不關心什么時候消息被傳遞,只關心對象的角色。在序列圖中,對象的角色放在上面而消息則是連接線。
對象角色矩形上標有類或?qū)ο竺ɑ蛘叨加校?。類名前面有個冒號(:)。
協(xié)作圖的每個消息都有一個序列號。頂層消息的數(shù)字是1。同一個等級的消息(也就是同一個調(diào)用中的消息)有同樣的數(shù)字前綴,再根據(jù)他們出現(xiàn)的順序增加一個后綴1,2等等。
狀態(tài)圖
UML實踐中對象擁有行為和狀態(tài)。對象的狀態(tài)是由對象當前的行動和條件決定的。狀態(tài)圖statechartdiagram顯示出了對象可能的狀態(tài)以及由狀態(tài)改變而導致的轉(zhuǎn)移。
我們的模型例圖建立了一個銀行的在線登錄系統(tǒng)。登錄過程包括輸入合法的密碼和個人賬號,再提交給系統(tǒng)驗證信息。
登錄系統(tǒng)可以被劃分為四種不重疊的狀態(tài):GettingSSN,GettingPIN,Validating,以及Rejecting。每個狀態(tài)都有一套完整的轉(zhuǎn)移transitions來決定狀態(tài)的順序。
狀態(tài)是用圓角矩形來表示的。轉(zhuǎn)移則是使用帶箭頭的連線表示。觸發(fā)轉(zhuǎn)移的事件或者條件寫在箭頭的旁邊。我們的圖上有兩個自轉(zhuǎn)移。一個是在GettingSSN,另一個則在上GettingPIN。
初始狀態(tài)(黑色圓圈)是開始動作的虛擬開始。結(jié)束狀態(tài)也是動作的虛擬結(jié)束。
事件或條件觸發(fā)動作時用(/動作)表示。當進入Validating狀態(tài)時,對象并不等外部事件觸發(fā)轉(zhuǎn)移。取而代之,它產(chǎn)生一個動作。動作的結(jié)果決定了下一步的狀態(tài)。
【編輯推薦】