UML建模
前言
常見的UML的類型
UML 比前兩題是更難的(略高,但是學會就可以了。前兩題是:數據流圖,數據庫的設計),因為UML圖有很多類型:用例圖,類圖與對象圖,順序圖,活動圖,狀態圖,通信圖,構件圖
### 用例圖:
在案例分析中,主要考試2個方面:
1有關項目的詳細描述(會把一個完整的用例圖的某些參與者和某些用例給扣掉,讓大家根據題干的內容以及用例圖已有的結構來分析哪個位置的用例叫什么名稱,哪個位置的參與者對應的是哪個角色)
2要根據題目的意思,來分析2個用例之間是什么關系,是包含還是擴展,或者是泛化關系。
要求:對參與者和用例,緊扣題干,做一一匹配(前提是,需要知道在用例圖中,基本的圖例所表達的含義。)
例如:
圖中人是參與者,用箭頭指向的各個用例代表了這個參與者會使用到這些用例,然后要區分上面的用例是新增書籍,下方是查詢書籍,往往是分析用例之間的關系,來分析這2個用例。在這里涉及到了擴展關系。根據是否涉及到擴展關系,來分析,哪個位置是新增書籍信息,哪個是查詢書籍信息。
包含關系是include.(必須)
擴展關系是extent(非必須)
包含關系是指A用例會使用到某個用例,就是包含關系。
區分包含和擴展: 例如,查詢書籍,我可以直接查詢,不需要使用其他用例,但是我發現查詢到的信息有誤,我需要修改信息,那么我需要用到擴展,修改有時候需要有時不需要,但是包含是必須。
例如,在取款的時候,默認每次都會吐錢 ,那么每次都是包含關系。但是每次都提示是否打印憑條,那么打印憑條就不是必須的,就是擴展。
類圖與對象圖:
考察的方式有3種:
1 填類名(主要),方法名,屬性名
填類名(最常考):要根據題干的信息,要確定在一個類圖當中哪一個類的類名 是什么,例如,把圖中的類名都刪掉,刪除之后只知道,有這么幾個類或者說對象,又知道之間的關系,來分析,哪個位置是哪個類。
2 填多重度(主要)
有以下幾種表達方式,第一種代表了一個集合中的一個對象對應另外一個集合中的幾個對象,1就是對應一個對象,2就是對應2個對象
還有另外的幾種表達方式,其中,0…(0到)和*是等價的,它們都代表了一個集合的一個對象對應了另一個集合的多個對象,這多個對象可以是0個,也可以是多個。
另外一種形式 ,就是一個集合的一個對象對應了另一個集合的一個或多個對象。或者是1個到多個,但是至少是一個
填多重度: 在這里也有多重度,例如圈起來的1, 0…*,這就是多重度
填關系:
關系包括: 依賴關系,泛化關系,關聯關系,實現關系
其實真正要了解的是泛化、組合、聚合。依賴都出現的少。
一般呢,記得泛化以及實現,因為實現是對接口,泛化是對類,所以泛化和實現的箭頭都是空心箭頭,只是泛化關系用的是實線,實現關系用的是虛線。
組合關系和聚合關系都是用菱形來表示的, 組合關系是實心的菱形,聚合關系是空心的菱形。
書籍列表和書籍之間的聚合關系,空心的菱形,借閱記錄列表和借閱記錄也是空心的菱形,也就是聚合關系。
非計算機類書籍與書籍, 計算機類書籍與書籍都是空心的箭頭,也就是泛化關系
活動圖:
活動圖是和我們之前接觸的程序里的流程圖非常接近的一種圖。這種圖能表現整個處理流程的基本情況、分支的狀態,例如在圖中首先,用戶下訂單,然后從一個粗的橫線,引出了兩個分支,一方面是生成送貨單,另一方面是用戶選擇支付方式,在支付方式選擇這塊,是一個菱形,菱形指示了如果判斷為真如何,判斷為假如何,這種結構和程序流程圖是保持一致的。
這個粗橫線代表的是,從這個粗橫線開始產生了多少的并行的線程。注意: 并行的線程。如圖,產生了2個分支,然后在下一個粗橫線進行了合并,也就是在這里產生了2個分支。
活動圖分為帶甬道的活動圖和不帶甬道的活動圖,帶甬道的活動圖里指示了不同的對象,這樣劃分出來后,我們可以更加明確,哪個活動是歸屬與誰的,有它相應的責任人。
對于這種圖,我們需要了解: 一個流程和一個圖的對應,我們扣出一些空來,我們是否能夠給它還原的問題。其實,所有的圖要解決的問題是類似的,都是把完整的圖摳出一些空,看能不能把它恢復完整。解決機制也是一樣的,就是自己根據表述,來嘗試畫這個圖, 自己畫這個圖會怎么畫,然后再根據標準的圖例來判定哪些位置應該有哪些操作。
狀態圖:
表現得是狀態的變遷,所以把狀態圖也歸為動態圖,所以在狀態圖中,往往是以狀態為節點。
例如圖中的off on 都是狀態。
那么,建線代表的是事件,觸發事件。 由一種狀態,觸發一個事件,會進入另外一種狀態,從而導致了狀態的變遷,這就是狀態圖。
狀態圖在考試的時候,如何考察: 往往會給出一個系統描述,描述的過程中會給出多種狀態的變遷,然后會把狀態圖扣掉,大家來填充狀態以及狀態變遷的條件,也就是觸發的事件(這種題往往比較容易解決,因為狀態在描述的過程中,我們好識別有哪些狀態,需要先識別一共有哪幾種狀態,一種狀態到另一種 狀態需要什么條件,恢復到上一種狀態需要什么條件都列出來)會員的升級和降級就可以使用狀態圖來表現。例如,普通的會員,有銀卡會員,金卡會員,鉆石會員,積分達到多少可以升級會員,從5000到銀卡,累積10000到金卡,狀態圖可以清晰的展示出來。
順序圖:
順序圖有這么一些組成的基本元素。有對象,一般寫在頂端,每一個對象引出一條生命線,用虛線畫下來,例如,在圖中每一個對象都是如此。
整體的執行順序是從上到下走,可以根據圖中的標號看出第n步,例如圖中第一步是卡片的插入,第二部是創建相應的session,第3,4步依次下來。有箭頭的方向代表了對象之間進行相應的交互的時候是從誰到誰來發送相應的消息,每一個箭頭所對應的其實是消息,以第一個消息為例,實際上是CardReader(讀卡器)想ATM系統發送了相應的消息。
順序圖最大的特點就是表現出了處理事物的時候,它的時間順序情況如何,按照順序一步一步下來的。
順序圖里,考試中考察方式: 核心點是放在消息里,因為順序圖是一種動態圖,動態圖表現的是對象之間的交互關系,所以往往會把順序圖中的某些消息摳掉,讓大家根據處理流程來分析某一步是干嘛的,例如圖中分析第6,7號是干嘛的,需要我們依據題目給出的描述,根據前面已有的1234條已有的完成的任務綜合分析后面還有哪些步驟要走(往往已經把這些專有的消息、名稱都已經列出來了,相當于做選擇題,讓大家選擇合適的詞語來填到這個位置來)。其次是填對象名。
順序圖往往比較簡單。
通信圖:
又稱之為協作圖,其實是順序圖的另一種表達方式。
我們知道順序圖是上面一排對象,引出相應的生命線(虛線),對象之間的一些交互,以順序的方式表達了一些消息的傳遞,通過這種方式來讓人清晰的了解,整個流程執行順序是怎么樣的,涉及到了哪些對象,哪些對象參與什么操作。
通信圖和順序圖是類似的。
通信圖是和順序圖結構有了很大的變化,通信圖的對象是一些節點,對象的交互還是通過箭頭來標識,消息是在箭頭旁邊標注。通信圖和順序圖相比,就是時間上沒有那么明晰,其他方面基本保持一致。所以,順序圖和通信圖統稱為交互圖。
考試的時候一般會把對象摳掉一些,把需要傳遞的消息摳掉一些,然后做成填空題。通信圖和順序圖的差異: 順序圖會強調時間順序。