UML

 在UML類圖中,常見的有以下幾種關係: 泛化(Generalization),  實現(Realization),關聯(Association),聚合(Aggregation),組合(Composition),依賴(Dependency)

         1. 泛化(Generalization)

        【泛化關係】:是一種繼承關係,表示一般與特殊的關係,它指定了子類如何特化父類的所有特徵和行爲。例如:老虎是動物的一種,即有老虎的特性也有動物的共性。

        【箭頭指向】:帶三角箭頭的實線,箭頭指向父類

UML類圖幾種關係的總結 

        2. 實現(Realization)

        【實現關係】:是一種類與接口的關係,表示類是接口所有特徵和行爲的實現.

        【箭頭指向】:帶三角箭頭的虛線,箭頭指向接口

UML類圖幾種關係的總結 

        3. 關聯(Association)

        【關聯關係】:是一種擁有的關係,它使一個類知道另一個類的屬性和方法;如:老師與學生,丈夫與妻子關聯可以是雙向的,也可以是單向的。雙向的關聯可以有兩個箭頭或者沒有箭頭,單向的關聯有一個箭頭。

        【代碼體現】:成員變量

        【箭頭及指向】:帶普通箭頭的實心線,指向被擁有者

UML類圖幾種關係的總結 

        上圖中,老師與學生是雙向關聯,老師有多名學生,學生也可能有多名老師。但學生與某課程間的關係爲單向關聯,一名學生可能要上多門課程,課程是個抽象的東西他不擁有學生。 

        下圖爲自身關聯: 

UML類圖幾種關係的總結

        4. 聚合(Aggregation)

        【聚合關係】:是整體與部分的關係,且部分可以離開整體而單獨存在。如車和輪胎是整體和部分的關係,輪胎離開車仍然可以存在。

        聚合關係是關聯關係的一種,是強的關聯關係;關聯和聚合在語法上無法區分,必須考察具體的邏輯關係。

        【代碼體現】:成員變量

        【箭頭及指向】:帶空心菱形的實心線,菱形指向整體

UML類圖幾種關係的總結 

        5. 組合(Composition)

        【組合關係】:是整體與部分的關係,但部分不能離開整體而單獨存在。如公司和部門是整體和部分的關係,沒有公司就不存在部門。

       組合關係是關聯關係的一種,是比聚合關係還要強的關係,它要求普通的聚合關係中代表整體的對象負責代表部分的對象的生命週期。

【代碼體現】:成員變量

【箭頭及指向】:帶實心菱形的實線,菱形指向整體

UML類圖幾種關係的總結

        6. 依賴(Dependency)

        【依賴關係】:是一種使用的關係,即一個類的實現需要另一個類的協助,所以要儘量不使用雙向的互相依賴.

        【代碼表現】:局部變量、方法的參數或者對靜態方法的調用

        【箭頭及指向】:帶箭頭的虛線,指向被使用者

UML類圖幾種關係的總結 

        各種關係的強弱順序:

        泛化 = 實現 > 組合 > 聚合 > 關聯 > 依賴 

        下面這張UML圖,比較形象地展示了各種類圖關係:

UML類圖幾種關係的總結

-------------------------------------------------------------------------------------------------------

在UML建模中,對類圖上出現元素的理解是至關重要的。開發者必須理解如何將類圖上出現的元素轉換到Java中。以java爲代表結合網上的一些實例,下面是個人一些基本收集與總結:
 
基本元素符號:
 
1. 類(Classes)
類包含3個組成部分。第一個是Java中定義的類名。第二個是屬性(attributes)。第三個是該類提供的方法。
屬性和操作之前可附加一個可見性修飾符。加號(+)表示具有公共可見性。減號(-)表示私有可見性。#號表示受保護的可見性。省略這些修飾符表示具有package(包)級別的可見性。如果屬性或操作具有下劃線,表明它是靜態的。在操作中,可同時列出它接受的參數,以及返回類型,如下圖所示:

 
  2. 包(Package)
包是一種常規用途的組合機制。UML中的一個包直接對應於Java中的一個包。在Java中,一個包可能含有其他包、類或者同時含有這兩者。進行建模時,你通常擁有邏輯性的包,它主要用於對你的模型進行組織。你還會擁有物理性的包,它直接轉換成系統中的Java包。每個包的名稱對這個包進行了惟一性的標識。

  3. 接口(Interface)
接口是一系列操作的集合,它指定了一個類所提供的服務。它直接對應於Java中的一個接口類型。接口既可用下面的那個圖標來表示(上面一個圓圈符號,圓圈符號下面是接口名,中間是直線,直線下面是方法名),也可由附加了<<interface>>的一個標準類來表示。通常,根據接口在類圖上的樣子,就能知道與其他類的關係。

關 系:
 
1. 依賴(Dependency)
實體之間一個“使用”關係暗示一個實體的規範發生變化後,可能影響依賴於它的其他實例。更具體地說,它可轉換爲對不在實例作用域內的一個類或對象的任何類型的引用。其中包括一個局部變量,對通過方法調用而獲得的一個對象的引用(如下例所示),或者對一個類的靜態方法的引用(同時不存在那個類的一個實例)。也可利用“依賴”來表示包和包之間的關係。由於包中含有類,所以你可根據那些包中的各個類之間的關係,表示出包和包的關係。

  2. 關聯(Association)
實體之間的一個結構化關係表明對象是相互連接的。箭頭是可選的,它用於指定導航能力。如果沒有箭頭,暗示是一種雙向的導航能力。在Java中,關聯轉換爲一個實例作用域的變量,就像圖E的“Java”區域所展示的代碼那樣。可爲一個關聯附加其他修飾符。多重性(Multiplicity)修飾符暗示着實例之間的關係。在示範代碼中,Employee可以有0個或更多的TimeCard對象。但是,每個TimeCard只從屬於單獨一個Employee。

 
 
3. 聚合(Aggregation)
聚合是關聯的一種形式,代表兩個類之間的整體/局部關係。聚合暗示着整體在概念上處於比局部更高的一個級別,而關聯暗示兩個類在概念上位於相同的級別。聚合也轉換成Java中的一個實例作用域變量。
關聯和聚合的區別純粹是概念上的,而且嚴格反映在語義上。聚合還暗示着實例圖中不存在迴路。換言之,只能是一種單向關係。

  4. 合成(Composition)
合成是聚合的一種特殊形式,暗示“局部”在“整體”內部的生存期職責。合成也是非共享的。所以,雖然局部不一定要隨整體的銷燬而被銷燬,但整體要麼負責保持局部的存活狀態,要麼負責將其銷燬。
局部不可與其他整體共享。但是,整體可將所有權轉交給另一個對象,後者隨即將承擔生存期職責。Employee和TimeCard的關係或許更適合表示成“合成”,而不是表示成“關聯”。

  5. 泛化(Generalization)
泛化表示一個更泛化的元素和一個更具體的元素之間的關係。泛化是用於對繼承進行建模的UML元素。在Java中,用extends關鍵字來直接表示這種關係。

 
  6. 實現(Realization)
實例關係指定兩個實體之間的一個合同。換言之,一個實體定義一個合同,而另一個實體保證履行該合同。對Java應用程序進行建模時,實現關係可直接用implements關鍵字來表示。

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

時序圖

時序圖(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 fragmentdenoted “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         向界面拋創建課程成功與否的消息


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章