2.設計模式常用的UML圖分析(用例圖、類圖與時序圖)


1-用例圖

概述

  1. 展現了一組用例、參與者以及他們之間的關系

  2. 用例圖從用戶角度描述系統的靜態使用情況,用於建立需求模型

用例特征

  • 保證用例能夠正確捕捉功能性需求,判斷用例是否准確的依據。
  1. 用例是動賓短語

  2. 用例是相互獨立的

  3. 用例是由用戶參與者啟動的

  4. 用例要有可觀測的執行結果

  5. 一個用例是一個單元

參與者 Actor

  • UML中,參與者使用一個小人表示: image
  1. 參與者為系統外部與系統直接交互的人或事務,於系統外部與系統發生交互作用

  2. 參與者是角色而不是具體的人

  3. 代表參與者在與系統打交道時所扮演的角色

  4. 系統實際運作中,一個實際用戶可能對應系統的多個參與者。不同角色也可以只對應一個參與者,從而代表同一參與者的不通實例

用例 Use Case

系統外部可見的一個系統功能單元。系統的功能由系統單元所提供,並通過一系列系統單元與一個或多個參與者之間交換的消息所表達。

系統單元用橢圓表示,橢圓中的文字簡述系統功能:image

關系 Relationship

常見關系類型有關聯、泛化、包含和擴展
image

關聯 Association

表示參與者與用例之間的通信,任何一方都可發送或接受消息。
箭頭指向:指向消息接收方:image

子系統 SubSystem
  • 用來展示系統的一部分功能(緊密聯系)
    image

泛化 Inheritance

繼承關系,子用例和父用例相似,但表現出更特別的行為;子用例將繼承父用例的所有結構、行為和關系。子用例可以使用父用例的一段行為,也可以重載它。父用例通常是抽象。。
箭頭指向:指向父用例
image

2-類圖

  • 描述系統中的類,以及各個類之間的關系的靜態試圖
  • 表示類、接口以及它們之間的協作關系,用於程序設計階段

注意:

  1. 抽象類或抽象方法用斜體表示
  2. 如果是接口,則在類名上方加 <<Interface>>
  3. 字段和方法返回值的數據類型非必需
  4. 靜態類或靜態方法加下划線
    類圖實例:image

類圖中的事務及解釋

image
如圖,類圖從上到下分為三部分,分別為類名、屬性和操作

  1. 屬性:如果有屬性,則每一個屬性都必須有一個名字,另外還可以有其它的描述信息,如可見性、數據類型、缺省值等
  2. 操作:如果有操作,則每一個操作也都有一個名字,其它可選的信息包括可見性、參數的名字、參數類型、參數缺省值和操作的返回值的類型等

類圖中的六種關系

1.實現關系 implements (類實現接口)

  • 用空心三角虛線表示
    image

2.泛化關系 extends (表示一般與特殊的關系) is-a

  • 用空心三角實線表示
    image

3.組合關系 (整體與部分的關系) contains-a

  • 實心菱形實現表示
    image
    eg.有頭類、身體類與人類類三個類,則人類類中應包含頭類及身體類這兩個屬性,則人類類與頭類和身體的關系即為組合關系。

注: 在組合關系中,整體對象可以控制部分對象的生命周期,一旦整體對象不存在,部分對象也將不存在,部分對象不能脫離整體對象而存在。例如,頭和嘴的關系,沒有了頭,嘴也就不存在了。

4.聚合關系 (整體與部分的關系) has-a

  • 空心菱形實線表示
    eg.BusDriver類有Hat類與Clothes屬性,BusDriver類沒了Hat與Clothes仍可存在
    image
    注:聚合關系也是通過成員對象來實現的,其中成員對象是整體對象的一部分,但是成員對象可以脫離整體對象而獨立存在

5.關聯關系(一般關聯關系) (對象之間的一種引用關系)

  • 關聯可以是雙向的,也可以是單向的。在 UML 類圖中,雙向的關聯可以用帶兩個箭頭或者沒有箭頭的實線來表示,單向的關聯用帶一個箭頭的實線來表示,箭頭從使用類指向被關聯的類。也可以在關聯線的兩端標注角色名,代表兩種不同的角色。
    image
    關聯關系是類與類之間最常用的一種關系,分為一般關聯關系、聚合關系和組合關系。

6.依賴關系

  • 依賴關系使用帶箭頭的虛線來表示,箭頭從使用類指向被依賴的類
    image

類關系的記憶

image

3-時序圖

時序圖將交互關系表示為一個二維圖

注:

  1. 主要用於展示對象之間交互的順序。
  2. 縱向代表時間軸,時間沿豎線向下延伸。
  3. 橫向代表了在協作中各獨立對象的類元角色。
  4. 類元角色用生命線表示。
  5. 當對象存在時,角色用一條虛線表示。
  6. 當對象的過程處於激活狀態時,生命線是一個雙道線。
  7. 消息用從一個對象的生命線到另一個對象生命線的箭頭表示。箭頭以時間順序在圖中從上到下排列。
    image
生命線
  1. 生命線可帶下划線
  2. 當使用下划線時意味着序列圖中的生命線代表一個類的特定實體。
    image
同步消息&

同步消息: 發送人再它繼續之前將等待同步消息相應
image

異步消息:在發送方繼續之前無需等待相應的消息
image

注釋

虛線引出一條說明注釋
image

約束

約束格式: [Boolean Test]
image

組合片段

用來解決交互執行的條件和方式,它允許在時序圖中直接表示邏輯組件,用於通過指定條件或子進程的應用區域。
類型與說明如下:
image

抉擇Alt:抉擇用來指明在兩個或更多的消息序列之間的互斥的選擇,相當於經典的if..else..。

image

選項Opt:包含一個可能發生或不發生的序列

image

循環Loop:片段重復一定次數。 可以在臨界中指示片段重復的條件。

image

時序圖的畫法及應用實踐

  1. 繪制交互場景中的角色及對象梳理出來
  2. 從出發某個交互的某個消息開始,在生命線之間從上到下依次畫出所有消息。

eg.學生在教務系統中查詢其課程的成績

在本例中,角色有學生,對象有教務系統、課程、成績。
對象的梳理是一個相對主觀的過程,比如本例中,課程以及成績分別作為了對象存在,也可以合並為數據庫這一個對象。請注意:角色以及對象,都為名詞,動詞不可作為角色和對象,如“成績查詢”不可作為對象。
image

學生的登錄驗證作為本時序圖的前置行為,可直接引用到本時序圖中,也可忽略不畫;學生進入成績查詢頁面后,頁面會加載本學生的成績查詢課程列表,並顯示出課程對應的成績。
image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM