文章目錄
概要:
UML共9個標準圖形。可分為靜態視圖(StaticViews)和動態視圖(DynamicViews)
靜態視圖:
1.使用案例圖(Use Case Diagram)
可以將特定的用例(Use Case)與角色間的關係表現出來。
2.類圖(Class Diagram)
表現系統中類和邏輯在視圖上的關係,但不描述其行為。
3.對象圖(Object Diagram)
描述在特定時刻系統的靜態結構。
4.元件圖表(Component Diagram)
可以看出系統中組件與組件間的組織依賴關係。
5.部署圖(Deployment Diagram)
將系統在運行時的結點設定和存在於該節點上的相關組件表現出來。
動態視圖:
1.順序圖(Sequence Diagram)
規劃模型流程的控制以及描述活動的發展過程。
2.合作圖(Collaboration Diagram)
強調對象間的資料流,控制流程程和訊息的傳遞活動,可以分析出各個對象間的關係。
3.狀態圖(StateChart Diagram)
主要用來說明行為的狀態和響應。可用來作為模型中各對象生命週期的指示和響應。
4.活動圖表(Activity Diagram)
將系統中活動和活動間的執行流程表現出來,指出一個執行動作的類中的活動和行為,並描述此為響應內部動作所作的所有響應。
一 使用案例圖
1.用例之間的關係Include和extend區別:
Include:一個用例(基本用例)的行為包含了另一個用例(包含用例)。在內含項目關聯性中,箭頭從主用例(基本用例)指向輔助用例(包含用例)。主用例沒有包含輔助用例則不能執行。(執行主用例時,一定執行輔助用例)
Extend:主用例在沒有其他擴充用例時也可以執行。(擴充用例指向基本用例)擴充用例可執行也可不執行
舉例:用例DealWithXX(A)包含了CheckXX(B),包含箭頭從A到B。
SendEmail (C)擴充了DealWithXX(A),包含箭頭從C到A。
2.角色之間的類屬關係:
類屬關係,會員同時也是網路訪問者
二.元件圖表
1.用例之間的關係Include和extend區別:
:表示組件要求的介面(required)。(插座)
:表示組件提供的介面(provided)。(棒棒糖)
2.組件之間的關係:
表示外部組件與組件之間的聯絡:
當表現組件與其他組件之間的關係時,“棒棒糖”(provided interface)與“插座”(required interface)之間有一支依存(dependency)箭頭。從required指向provided。
表示組件內部中嵌套組件的協作:
(1) 組件內部的組件之間通過元件連線器( )來串連。
(2) 連接埠(port):Store的 OrderEntry 和Account介面符號在組件邊緣上的方塊( )。
連接埠顯示了組件要求或提供的連接埠。
三.類圖
1.抽象類別和抽象方法:
抽象類別(animal)和抽象(move)方法用斜體表示
2.軟體包:
可以理解為C#中的命名空間。Package1中包含了Class1,Class2和另一個包Package2。
類animal引用了Package1(命名空間)。
3.繼承與實現:
繼承: (實線)。
實現: (虛線)。
4.依賴和關聯:
依賴是比較弱的關係,而關聯是一種結構化關係。
1. 關聯:若類C單向關聯指向類D,則在類D中存在一個屬性B(b)。
2. 依賴:若類A依賴類B,則不會有這個屬性,類B的執行個體可能存在於某個方法調用的參數中,或某個方法的局部變數中(即類A用到類B)。
例:人吃飯,需要用到筷子,此時人與筷子之間的關係就是依賴。
5.彙總與組合:
1.
彙總:
是關聯關係的一種特例,體現了整體與部分,擁有的關係。(has a)。
此時整體與部分之間是可分離的,具有各自的生命週期。部分可以屬於多個整體。如電腦與CPU,公司與員工。表現在代碼層,與關聯關係是相同的,只能從語義層級區分。
Family與Child之間為彙總。
2.
組合:
也是關聯關係的一種特例,體現了contains a。關係比彙總強。同樣體現了整體與部分的關係,但此時整體與部分是不可分的,整體的生命週期結束就意味著部分的生命週期結束。表現在代碼層,與關聯關係是相同的,只能從語義層級區分。
Persion與Brain是組合關係。
關係間的強弱程度依次是:組合>彙總>關聯>依賴
6. 類的自關聯(反射關聯):
Employee通過manager/manages角色與他自身相關聯。
類關聯到自身時,並非是一個類的執行個體與它自身關聯,而是類的一個執行個體與另一個執行個體相關。
7. 類的可見度標誌
+ :Public - :Private
# :Protected ~ :Package(internal)包可見(程式集可見)
8. 關聯類別(需要進一步明確概念)
關聯類別是具有關聯和類特性的模型元素。Person和Company間有工作關係。Job描述了
Person和Company之間的關係(崗位,薪水等)。如果沒有Job,將薪水這一屬性放在Person類或Company類都不合適。因此,此屬性應該放在關聯關係上。
四.時序圖
1.時序圖中的跳轉(break):
跳轉(break)最常用來做異常處理,此處,如果餘額(balance)少於金額(amount),則跳入break塊,然後會退出序列(不再走1.7addDebitTransaction());
2.並行(par)
代表methodB和methodC是兩個並行運算的線程。
五.對象圖
1. 對象圖與類圖的區別和聯絡:
對象圖主要描述在特定的系統時刻,對象與對象之間的關係。
類圖描述一個系統中所有可能的狀況,對象圖描述系統中特定的狀況。對象圖可以看成一個類圖的特殊用例。
六.狀態圖
1.狀態圖建模:
狀態圖所描述的對象往往具有多個屬性,一般狀態圖應該在具有以下兩個特性的屬性上建模:
(1) 屬性具有較少的可能取值。
(2) 屬性在這些值之間的轉移有一定限制。
七.活動圖表
1.動作狀態(Action state)和活動狀態(Activity state)
動作狀態是原子的,不能被分解,沒有內部轉移,沒有內部活動,動作狀態的工作所佔用的時間是可以忽略的。動作狀態的目的是執行進入動作(entry action),然後轉向另一個狀態。
活動狀態是可分解的,不是原子的,其工作完成需要一定時間。可以把動作狀態看成活動狀態的特例。
2.狀態圖與活動圖表的比較
(1)描述重點不同,狀態圖描述的是對象狀態之間的轉移,而活動圖表描述的是從活動到活動的控制流程。
(2)使用場合不同。如果目的是為了顯示一個對象在其生命週期內的行為,則使用狀態圖較好。如果目的是為了分析用例,或理解涉及多個用例的工作流程,或處理多線程應用,則使用活動圖表。