天天看點

活動圖、類圖、順序圖、狀态圖

1. 活動圖

活動圖描述了在一個過程中, 順序的/并行的活動及其之間的關系

  • 應用于商業過程、 工作流(業務過程) 、 複雜算法的模組化

活動圖是頂點和弧的集合

  • 活動節點
  • 動作
  • 對象值
  • 注解和限制等

1.1 活動圖的開始、結束、對象

活動圖、類圖、順序圖、狀态圖

1.2 活動節點

  • 一個活動是一個過程中進行的非原子的執行單元
  • 活動的執行最終延伸為一些獨立動作(Action,原子的)的執行
活動圖、類圖、順序圖、狀态圖

1.3 分支

  • 一個分支可以有一個進入流和多個離去流
  • 在每個離去流上必須設定一個監護條件
    • 條件放在方括号裡
    • 條件不能重疊,以免二義性
      • 可以有 [else] 分支
  • 兩個控制路徑可以重新合并,無需監護條件
活動圖、類圖、順序圖、狀态圖

1.4 分岔和彙合( Forking and Joining)

  • 分岔表示把一個單獨的控制流分成兩個或多個并發的控制流
  • 彙合表示兩個或多個并發控制流的同步發生, 一個彙合可以有兩個或多個進入轉移和一個輸出轉移
  • 在UML中, 用同步棒來說明并行控制流的分岔和彙合
    • 同步棒是一條水準或垂直的粗線條
活動圖、類圖、順序圖、狀态圖

1.5 泳道(Swimlanes)

  • 将一個活動圖中的活動分組, 每一組表示一個特定的類别、 人或部門, 他們負責完成組内的活動
  • 每個組被稱為一個泳道
    • 用一條垂直的實線把它們分開
  • 每個活動(不可再分割的)嚴格地屬于一個泳道
    • 轉移可以跨越泳道
  • 同步棒可以跨越泳道
  • 泳道是包的一種

1.6 活動圖小結

  • 活動圖與用例模型互為補充,主要用于需求分析階段
  • 活動圖中的基本要素包括

    活動(動作)、轉移、分支、分叉和彙合、泳道、對象流等

2. 類圖

2.1 類圖定義

  • 類class的定義
    • 具有相同屬性、 操作、 方法、 關系或者行為的一組對象的描述符
    • 類是真實世界事物的抽象
    • 問題領域的類: 在對系統模組化時, 将會涉及到如何識别業務系統中的事物, 這些事物構成了整個業務系統。 在UML中, 把所有的這些事物都模組化為類 (class)
  • 對象object的定義
    • 當這些事物存在于真實世界中時, 它們是類的執行個體, 并被稱為對象
    • 同一個類的各對象具有
      • 相同的屬性, 但屬性的取值可以不同
      • 提供相同的操作、 有相同的語義

把類相關的元素畫在一起, 即為類圖

2.2 類圖中常用的UML元素

活動圖、類圖、順序圖、狀态圖
活動圖、類圖、順序圖、狀态圖

2.3 UML中類的表示

類的圖形表示:用四部分來表示,它是分為三個分隔區(compartment)的長方形

活動圖、類圖、順序圖、狀态圖

在顯示時,隻有名稱部分是必須的,其餘部分可以隐藏 (模型裡面還是存在的!)

活動圖、類圖、順序圖、狀态圖

2.4 類元素的命名

  • 類的命名

    類名中的每個詞的第一個字母通常要大寫

    例如, Student、 Teacher、 Book、 Store etc.

  • 操作的命名

    操作名 除第一個詞之外的每個詞的第一個字母要大寫

    例如, selectCourse();

  • 屬性的命名

    屬性名 除第一個單詞之外的每個單詞的第一個字母要大寫

    例如, myAddress、 employeeID、 stdNumber

2.5 關聯關系的修飾

  1. 名稱及其方向
    活動圖、類圖、順序圖、狀态圖
  2. 角色
    • 在關聯的每一端,表明相連的類在該關聯關系中的作用
      活動圖、類圖、順序圖、狀态圖
  3. 多重性Multiplicity
    活動圖、類圖、順序圖、狀态圖
    例子:
    活動圖、類圖、順序圖、狀态圖
    • 公司剛好有7名員工
    • 一個人隻能被一家公司雇傭
    • 一個銀行賬戶隻能有一個所有者
    • 一個銀行賬戶可以有一個或多個操作員

      比如說你的銀行卡,你可以用,你的老婆也可以用

    • 一個人可以有0到多個銀行賬戶
    • 一個人可以操作0到多個銀行賬戶
  4. 聚合/組合:表示部分與整體的關聯關系
    • 聚合: ‘整體’有管理‘部分’的特有的職責;它用端點帶有空菱形的線段表示, 空菱形與‘整體’類相連接配接
    • 組合: ‘整體’擁有‘部分’的生命;它用端點帶有實菱形的線段表示, 實菱形與‘整體’類相連接配接
    聚合與組合的差別:

    聚合:has-a關系,父類包含子類,子類可以獨立于父類存在

    ​ 班級和學生是一種聚合關系。一個班級,可以有學生,也可以沒有學生;反過來,當我們把班級解散,學生仍然存在。

    組合:part-of關系,父類擁有子類,子類不能獨立于父類存在

    ​ 身體與細胞是一個組合關系。但我們建立一個身體,細胞随之被建立;反過來,當我們銷毀一個身體,細胞随之被銷毀。

    活動圖、類圖、順序圖、狀态圖
    • 每個表示部分的類與表示整體的類之間有單獨的關聯, 但是為了友善起見, 連線結合在一起
      活動圖、類圖、順序圖、狀态圖

2.6 關聯類 Association Class

關聯類它也是一個類,由類、關聯和虛線組成。

它可能有屬性、操作和關系

當任何一對對象在任何時間點之間隻有一個唯一連結時,就可以使用關聯類

如果一對對象在一個給定的時間點上彼此之間可能有許多連結,那麼你可以通過用一個普通的類替換它來具體化這種關系

活動圖、類圖、順序圖、狀态圖

3. 順序圖

活動圖、類圖、順序圖、狀态圖

3.1 相關概念

  • 互動:對象之間為實作某一功能而必須實施的協作過程、 動态行為, 稱為互動
  • 消息:對象間的協作與交流表現為一個對象以某種方式啟動另一個對象的活動,這種交流在UML裡被定義為消息
  • 順序圖的模組化元素
    • 對象或角色(role)
    • 參與者
    • 消息
  • 互動圖
    • 互動的過程表現出來,就是互動圖
    • 順序圖、通信圖,都是互動圖

3.2 互動的基本概念--消息

  • 同步消息:發送消息的對象要等到接收消息的對象執行完所有操作後,發送消息的對象才能繼續執行自己的操作。
    活動圖、類圖、順序圖、狀态圖
  • 異步消息:發送消息的對象發送消息後,不用等待接收對象是否執行,繼續執行自己的操作。
    活動圖、類圖、順序圖、狀态圖

3.3 基本模組化元素

對象、生命期(對象生命線)、控制焦點、消息、消息序号(可選)

活動圖、類圖、順序圖、狀态圖

3.4 順序圖小結

  • 順序圖可以動态驗證類模型的可行性
  • 順序驗證的某一功能, 屬于某個用例描述的功能中的一部分
    • 又被稱為用例實作 “usecase realization”
  • 順序圖從上到下, 反映了個對象互相協作的時間順序!

4. 狀态圖

4.1 狀态圖的概念

  1. 狀态(state):
    • 是對象的生命期中的一個條件或狀況
    • 在此期間,對象可以響應事件、執行某活動等
    • 例如,燈,有幾個狀态?2個:亮和暗
  2. 狀态機(state machine) :
    • 是一種行為,
    • 說明對象在它的生命期中, 響應事件所經曆的狀态序列 以及它們對每個事件的響應
  3. 狀态圖(state diagram, State Chart ):
    • 狀态機可以用狀态圖來可視化。
    • 狀态圖顯示了一個狀态機,它強調從狀态到狀态的控制流

4.2 狀态組成

  • 名稱(name),每個單詞首字母大寫
  • 進入/退出動作(entry/exit action)
  • 内部遷移(internal transition)
  • 子狀态 (substate)
  • 延遲事件 (deferred event)

4.3 事件 Event

  • 事件是對一個在時間和空間上占有一定位置的有意義的事情的描述
    • 在狀态機的語境中,一個事件是一個激勵的發生,它能夠觸發一個狀态遷移
  • UML 對4種事件進行模組化
    • 參量變化 change event
      • 布爾表達式值變化、定時器、溢出:是内部事件
    • 信号 signal (異步)
    • 調用 call (同步)
    • 時間事件 time event
      • 時間事件 是表示一段時間的推移

        用關鍵字after 後面跟着時間表達式

        用關鍵字at 表示某個絕對時間點上發生的時間事件

      • 變化事件 表示狀态的一個變化或某些條件得到滿足的事件

        用關鍵字 when後跟一個布爾表達式,當條件滿足,則引發變化事件

4.4 遷移Transition

  • 在狀态A,發生事件并滿足一定條件,轉到狀态B
  • 一個遷移由5部分組成
    • 源狀态 source state
    • 事件觸發器 event trigger (觸發事件名稱)
    • 觸發條件 guard condition
    • 效應(effect) (或稱,遷移動作):可執行的動作
    • 目标狀态
  • 特殊的遷移
    • 自身遷移 self transition:從狀态A遷移到狀态A
    • 内部遷移 internal transition:在狀态A内部 行為

4.5 狀态圖的模組化元素

  • 狀态
    • 一般狀态:圓角矩形
    • 初始狀态:實心圓
    • 結束狀态:“牛眼” (bull’s eye)
    活動圖、類圖、順序圖、狀态圖
  • 事件
    • 觸發事件名[觸發條件]/遷移動作
      • 這三個部分都是可以省略的,但至少有一部分
      • 事件依附于表示遷移的箭線
    活動圖、類圖、順序圖、狀态圖
    • 叉形箭頭實線
      • 從初始狀态指向目标狀态

4.6 狀态圖模組化注意事項

  • 不允許孤立的狀态存在
  • 不允許隻進不出的狀态遷移 (“黑洞” )
  • 不允許隻出不進的狀态遷移 (“奇迹” )
  • 不允許沒有事件發生的遷移

4.7 小結