在UML類圖中,常見的有以下幾種關係: 泛化(Generalization), 實現(Realization),關聯(Association),聚合(Aggregation),組合(Composition),依賴(Dependency)
1. 泛化(Generalization)
【泛化關係】:是一種繼承關係,表示一般與特殊的關係,它指定了子類如何特化父類的所有特徵和行爲。例如:老虎是動物的一種,即有老虎的特性也有動物的共性。
【箭頭指向】:帶三角箭頭的實線,箭頭指向父類
2. 實現(Realization)
【實現關係】:是一種類與接口的關係,表示類是接口所有特徵和行爲的實現.
【箭頭指向】:帶三角箭頭的虛線,箭頭指向接口
3. 關聯(Association)
【關聯關係】:是一種擁有的關係,它使一個類知道另一個類的屬性和方法;如:老師與學生,丈夫與妻子關聯可以是雙向的,也可以是單向的。雙向的關聯可以有兩個箭頭或者沒有箭頭,單向的關聯有一個箭頭。
【代碼體現】:成員變量
【箭頭及指向】:帶普通箭頭的實心線,指向被擁有者
上圖中,老師與學生是雙向關聯,老師有多名學生,學生也可能有多名老師。但學生與某課程間的關係爲單向關聯,一名學生可能要上多門課程,課程是個抽象的東西他不擁有學生。
下圖爲自身關聯:
4. 聚合(Aggregation)
【聚合關係】:是整體與部分的關係,且部分可以離開整體而單獨存在。如車和輪胎是整體和部分的關係,輪胎離開車仍然可以存在。
聚合關係是關聯關係的一種,是強的關聯關係;關聯和聚合在語法上無法區分,必須考察具體的邏輯關係。
【代碼體現】:成員變量
【箭頭及指向】:帶空心菱形的實心線,菱形指向整體
5. 組合(Composition)
【組合關係】:是整體與部分的關係,但部分不能離開整體而單獨存在。如公司和部門是整體和部分的關係,沒有公司就不存在部門。
組合關係是關聯關係的一種,是比聚合關係還要強的關係,它要求普通的聚合關係中代表整體的對象負責代表部分的對象的生命週期。
【代碼體現】:成員變量
【箭頭及指向】:帶實心菱形的實線,菱形指向整體
6. 依賴(Dependency)
【依賴關係】:是一種使用的關係,即一個類的實現需要另一個類的協助,所以要儘量不使用雙向的互相依賴.
【代碼表現】:局部變量、方法的參數或者對靜態方法的調用
【箭頭及指向】:帶箭頭的虛線,指向被使用者
各種關係的強弱順序:
泛化 = 實現 > 組合 > 聚合 > 關聯 > 依賴
下面這張UML圖,比較形象地展示了各種類圖關係:
-------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
時序圖
時序圖(Sequence Diagram)是顯示對象之間交互的圖,這些對象是按時間順序排列的。順序圖中顯示的是參與交互的對象及其對象之間消息交互的順序。時序圖中包括的建模元素主要有:對象(Actor)、生命線(Lifeline)、控制焦點(Focus of control)、消息(Message)等等。
二、時序圖元素(Sequence Diagram Elements)
角色(Actor)
系統角色,可以是人、及其甚至其他的系統或者子系統。
對象(Object)
對象包括三種命名方式:
第一種方式包括對象名和類名;
第二中方式只顯示類名不顯示對象名,即表示他是一個匿名對象;
第三種方式只顯示對象名不顯示類明。
生命線(Lifeline)
生命線在順序圖中表示爲從對象圖標向下延伸的一條虛線,表示對象存在的時間,如下圖
控制焦點(Focus of Control)
控制焦點是順序圖中表示時間段的符號,在這個時間段內對象將執行相應的操作。用小矩形表示,如下圖。
消息(Message)
消息一般分爲同步消息(Synchronous Message),異步消息(Asynchronous Message)和返回消息(Return Message).如下圖所示:
同步消息=調用消息(Synchronous Message)
消息的發送者把控制傳遞給消息的接收者,然後停止活動,等待消息的接收者放棄或者返回控制。用來表示同步的意義。
異步消息(Asynchronous Message)
消息發送者通過消息把信號傳遞給消息的接收者,然後繼續自己的活動,不等待接受者返回消息或者控制。異步消息的接收者和發送者是併發工作的。
返回消息(Return Message)
返回消息表示從過程調用返回
自關聯消息(Self-Message)
表示方法的自身調用以及一個對象內的一個方法調用另外一個方法。
Combined Fragments
Ø Alternative fragment(denoted “alt”) 與 if…then…else對應
Ø Option fragment (denoted “opt”) 與 Switch對應
Ø Parallel fragment (denoted “par”) 表示同時發生
Ø Loop fragment(denoted “loop”) 與 for 或者 Foreach對應
三、時序圖實例分析(Sequece Diagram Example Analysis)
時序圖場景
完成課程創建功能,主要流程有:
1、請求添加課程頁面,填寫課程表單,點擊【create】按鈕
2、添加課程信息到數據庫
3、向課程對象追加主題信息
4、爲課程指派教師
5、完成課程創建功能
時序圖實例分析
1、序號1.0-1.3 完成頁面的初始化
2、序號1.4-1.5 課程管理員填充課程表單
3、序號1.6-1.7 課程管理員點擊【Create】按鈕,並響應點擊事件
4、序號1.8 Service層創建課程
5、序號1.9-1.10 添加課程到數據庫,並返回課程編號CourseId
6、序號1.11-1.12 添加課程主題到數據庫,並返回主題編號topicId
7、序號1.13 給課程指派教師
8、序號1.14 向界面拋創建課程成功與否的消息