UML類圖中箭頭和線條的含義和用法


文章轉載自http://blog.csdn.NET/hewei0241/article/details/7674450

1.UML中關系

本節向大家學習一下UML箭頭、線條代表的意義,UML中關系主要有依賴,聚合,合成,泛化和實現等,下面就讓我們來看一下這些關系如何用UML箭頭和線條來實現。

關系

后面的例子將針對某個具體目的來獨立地展示各種關系。雖然語法無誤,但這些例子可進一步精煉,在它們的有效范圍內包括更多的語義。

依賴(Dependency)

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

圖D

關聯(Association)

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

圖E

聚合(Aggregation)

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

圖F

合成(Composition)

合成(圖G)是聚合的一種特殊形式,UML箭頭暗示“局部”在“整體”內部的生存期職責。合成也是非共享的。所以,雖然局部不一定要隨整體的銷毀而被銷毀,但整體要么負責保持局部的存活狀態,要么負責將其銷毀。局部不可與其他整體共享。但是,整體可將所有權轉交給另一個對象,后者隨即將承擔生存期職責。

Employee和TimeCard的關系或許更適合表示成“合成”,而不是表示成“關聯”。

圖G

泛化(Generalization)

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

圖H

實現(Realization)

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

圖I

 

2、UML說明


UML類圖各符號含義  類圖基本符號可拆分為虛線,箭頭,實線,空心右三角,實心右三角,空心菱形和實心菱形。由這些基本的圖形進行組合構成了類圖的基本符號。這里要注意這幾個符號的順序,代表了類與類之間關系的耦合程 度。越向右耦合度越高。  其中虛線+箭頭是表示即依賴的關系,實線+箭頭表示關聯的關系,虛線+空心右三角表示implements,實線+空心右三角表示的是泛化,即類的繼承關系。實線+空心菱形表示的是聚合的關系,實線+實心菱形則表示 組合的關系。  另外一點是在看類圖的時候要注意。類圖的思想其實也還沒有脫離面向對象的思想,以某個類為中心,有些線是射入的而有些線是射出的。射入的線表示的是這個類被哪些類所調用而射出的線則表示該類調用了 哪些類,包括泛化,關聯,依賴,聚合和組合四種關系。這類似於離散數學中有關圖部分的描述。  
1. 類(Class):使用三層矩形框表示。   第一層顯示類的名稱,如果是抽象類,則就用斜體顯示。   第二層是字段和屬性。  第三層是類的方法。   注意前面的符號,‘+’表示public,‘-’表示private,‘#’表示protected。   
2. 接口:使用兩層矩形框表示,與類圖的區別主要是頂端有<<interface>>顯示 。   第一行是接口名稱。  第二行是接口方法。     
3. 繼承類(extends) :用空心三角形+實線來表示。     
4. 實現接口(implements) :用空心三角形+虛線來表示    
5. 關聯(Association) :用實線箭頭來表示,例如:燕子與氣候   
6. 聚合(Aggregation) :用空心的菱形+實線箭頭來表示   聚合:表示一種弱的‘擁有’關系,體現的是A對象可以包含B對象,但B對象不是A對象的一部分,例如: 公司和員工     
7.組合(Composition):用實心的菱形+實線箭頭來表示  組合:部分和整體的關系,並且生命周期是相同的。例如:人與手     
8. 依賴(Dependency) :用虛線箭頭來表示,例如:動物與氧氣     
9. 基數 :連線兩端的數字表明這一端的類可以有幾個實例,比如:一個鳥應該有兩只翅膀。如果一個類 可能有無數個實例,則就用‘n’來表示。關聯、聚合、組合是有基數的。 
 
類之間的關系     UML把類之間的關系分為以下5種.    
 ● 關聯:類A與類B的實例之間存在特定的對應關系    
● 依賴:類A訪問類B提供的服務     
● 聚集:類A為整體類,類B為局部類,類A的對象由類B的對象組合而成    
● 泛化:類A繼承類B    
● 實現:類A實現了B接口   關聯(Association)    
 
關聯指的是類之間的特定對應關系,在UML中用帶實線的箭頭表示。按照類之間的數量對比,關聯  可以分為以下三種:
● 一對一關聯  
● 一對多關聯    
● 多對多關聯  
注意:關聯還要以分為單向關聯和雙向關聯 
 
依賴(Dependency)     依賴指的是類之間的調用關系,在UML中用帶虛線的箭頭表示。如果類A訪問類B的屬性或者方法,  或者類A負責實例化類B,那么可以說類A依賴類B。和關聯關系不同,無須在類A中定義類B類型的屬性。  
 
聚集(Aggregation)     聚集指的是整體與部分之間的關系,在UML中用帶實線的菱形箭頭表示。 聚集關系還可以分為兩種類型:    
●被聚集的子系統允許被拆卸和替換,這是普通聚集關系。     
● 被聚集的子系統不允許被拆卸和替換,這種聚集稱為強聚集關系,或者組成關系。     
注:強聚集(組成)可用帶實線的實心菱形箭頭表示。   
 
泛化(Generalization)泛化指的是類之間的繼承關系,在UML中用帶實線的三角形箭頭表示。   
 
實現(Realization) 實現指的是類與接口之間的關系,在UML中用帶虛線的三角形箭頭表示。
1.
2.
3.
4.
5.
6.
7.
8.
9.

 

生命不息,折騰不止!


免責聲明!

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



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