1. 程式人生 > >UML圖中類之間的關係:依賴,泛化,關聯,聚合,組合,實現

UML圖中類之間的關係:依賴,泛化,關聯,聚合,組合,實現

類與類圖 1) 類(Class)封裝了資料和行為,是面向物件的重要組成部分,它是具有相同屬性、操作、關係的物件集合的總稱。 2) 在系統中,每個類具有一定的職責,職責指的是類所擔任的任務,即類要完成什麼樣的功能,要承擔什麼樣的義務。一個類可以有多種職責,設計得好的類一般只有一種職責,在定義類的時候,將類的職責分解成為類的屬性和操作(即方法)。 3) 類的屬性即類的資料職責,類的操作即類的行為職責

 一、依賴關係(Dependence)

依賴關係(Dependence):假設A類的變化引起了B類的變化,則說名B類依賴於A類。

•  依賴關係(Dependency) 是一種使用關係,特定事物的改變有可能會影響到使用該事物的其他事物,在需要表示一個事物使用另一個事物時使用依賴關係。大多數情況下,依       賴關係體現在某個類的方法使用另一個類的物件作為引數。 •   在UML中,依賴關係用帶箭頭的虛線表示,由依賴的一方指向被依賴的一方。
  1. public class Driver  
  2. {  
  3.     public void drive(Car car)  
  4.     {  
  5.         car.move();  
  6.     }  
  7.     ……  
  8. }  
  9. public class Car  
  10. {  
  11.     public void move()  
  12.     {  
  13.         ......  
  14.     }  
  15.     ……  
  16. }  

依賴關係有如下三種情況:

1、A類是B類中的(某中方法的)區域性變數;

2、A類是B類方法當中的一個引數;

3、A類向B類傳送訊息,從而影響B類發生變化;

 二、泛化關係(Generalization)

泛化關係(Generalization):A是B和C的父類,B,C具有公共類(父類)A,說明A是B,C的一般化(概括,也稱泛化)

•  泛化關係(Generalization)也就是繼承關係,也稱為“is-a-kind-of”關係,泛化關係用於描述父類與子類之間的關係,父類又稱作基類或超類,子類又稱作派生類。在UML中,泛      化關係用帶空心三角形的直線來表示。 •  在程式碼實現時,使用面向物件的繼承機制來實現泛化關係,如在Java語言中使用extends關鍵字、在C++/C#中使用冒號“:”來實現。 

  1. public class Person   
  2. {  
  3.     protected String name;  
  4.     protected int age;  
  5.     public void move()   
  6.     {  
  7.         ……  
  8.     }  
  9.     public void say()   
  10.    {  
  11.         ……  
  12.     }  
  13. }  
  14. public class Student extends Person   
  15. {  
  16.     private String studentNo;  
  17.     public void study()   
  18.     {  
  19.         ……  
  20.     }  
  21. }  

在UML當中,對泛化關係有三個要求:

1、子類與父類應該完全一致,父類所具有的屬性、操作,子類應該都有;

2、子類中除了與父類一致的資訊以外,還包括額外的資訊;

3、可以使用父類的例項的地方,也可以使用子類的例項;

 三、關聯關係(Association)

關聯關係(Association):類之間的聯絡,如客戶和訂單,每個訂單對應特定的客戶,每個客戶對應一些特定的訂單,再如籃球隊員與球隊之間的關聯(下圖所示)。

其中,關聯兩邊的"employee"和“employer”標示了兩者之間的關係,而數字表示兩者的關係的限制,是關聯兩者之間的多重性。通常有“*”(表示所有,不限),“1”(表示有且僅有一個),“0...”(表示0個或者多個),“0,1”(表示0個或者一個),“n...m”(表示n到m個都可以),“m...*”(表示至少m個)。 •  關聯關係(Association) 是類與類之間最常用的一種關係,它是一種結構化關係,用於表示一類物件與另一類物件之間有聯絡。 •  在UML類圖中,用實線連線有關聯的物件所對應的類,在使用Java、C#和C++等程式語言實現關聯關係時,通常將一個類的物件作為另一個類的屬性。 •  在使用類圖表示關聯關係時可以在關聯線上標註角色名。 1)  雙向關聯: 預設情況下,關聯是雙向的。
  1. public class Customer  
  2. {  
  3.     private Product[] products;  
  4.     ……  
  5. }  
  6. public class Product  
  7. {  
  8.     private Customer customer;  
  9.     ……  
  10. }  

2 ) 單向關聯:類的關聯關係也可以是單向的,單向關聯用帶箭頭的實線表示.
  1. public class Customer  
  2. {  
  3.     private Address address;  
  4.     ……  
  5. }  
  6. public class Address  
  7. {  
  8.     ……  
  9. }  
3) 自關聯: 在系統中可能會存在一些類的屬性物件型別為該類本身,這種特殊的關聯關係稱為自關聯。
  1. public class Node  
  2. {  
  3.     private Node subNode;  
  4.     ……  
  5. }   
 
4) 重數性關聯: 重數性關聯關係又稱為多重性關聯關係(Multiplicity),表示一個類的物件與另一個類的物件連線的個數。在UML中多重性關係可以直接在關聯直線上增加一個數字表示與之對應的另一個類的物件的個數。

表示方式

多重性說明

1..1

表示另一個類的一個物件只與一個該類物件有關係

0..*

表示另一個類的一個物件與零個或多個該類物件有關係

1..*

表示另一個類的一個物件與一個或多個該類物件有關係

0..1

表示另一個類的一個物件沒有或只與一個該類物件有關係

m..n

表示另一個類的一個物件與最少m、最多n個該類物件有關係 (m<=n)

  1. public class Form  
  2. {  
  3.     private Button buttons[];  
  4.     ……  
  5. }   
  6. public class Button  
  7. {  
  8.     …  
  9. }  

 四、聚合關係(Aggregation)

聚合關係(Aggregation):表示的是整體和部分的關係,整體與部分 可以分開.

•  聚合關係(Aggregation) 表示一個整體與部分的關係。通常在定義一個整體類後,再去分析這個整體類的組成結構,從而找出一些成員類,該整體類和成員類之間就形成了聚合   關係。 •  在聚合關係中,成員類是整體類的一部分,即成員物件是整體物件的一部分,但是成員物件可以脫離整體物件獨立存在。在UML中,聚合關係用帶空心菱形的直線表示。 
  1. public class Car  
  2. {  
  3.     private Engine engine;  
  4.     public Car(Engine engine)  
  5.    {  
  6.         this.engine = engine;  
  7.     }  
  8.     public void setEngine(Engine engine)  
  9.     {  
  10.         this.engine = engine;  
  11.     }  
  12.     ……  
  13. }  
  14. public class Engine  
  15. {  
  16.     ……  
  17. }  

如:電話機包括一個話筒

       電腦包括鍵盤、顯示器,一臺電腦可以和多個鍵盤、多個顯示器搭配,確定鍵盤和顯示器是可以和主機分開的,主機可以選擇其他的鍵盤、顯示器組成電腦;

 五、組合關係(Composition)

組合關係(Composition):也是整體與部分的關係,但是整體與部分不可以分開.

•  組合關係(Composition)也表示類之間整體和部分的關係,但是組合關係中部分和整體具有統一的生存期。一旦整體物件不存在,部分物件也將不存在,部分物件與整體物件之    間具有同生共死的關係。 •  在組合關係中,成員類是整體類的一部分,而且整體類可以控制成員類的生命週期,即成員類的存在依賴於整體類。在UML中,組合關係用帶實心菱形的直線表示。
  1. public class Head  
  2. {  
  3.     private Mouth mouth;  
  4.     public Head()  
  5.     {  
  6.     mouth = new Mouth();  
  7.     }  
  8.     ……  
  9. }  
  10. public class Mouth  
  11. {  
  12.     ……  
  13. }  

如:公司和部門,部門是部分,公司是整體,公司A的財務部不可能和公司B的財務部對換,就是說,公司A不能和自己的財務部分開; 人與人的心臟.

 六、實現關係(Implementation)

實現關係(Implementation):是用來規定介面和實線介面的類或者構建結構的關係,介面是操作的集合,而這些操作就用於規定類或者構建的一種服務。

• 介面之間也可以有與類之間關係類似的繼承關係和依賴關係,但是介面和類之間還存在一種實現關係(Realization),在這種關係中,類實現了介面,類中的操作實現了介面中所     宣告的操作。在UML中,類與介面之間的實現關係用帶空心三角形的虛線來表示。
  1. public interface Vehicle   
  2. {  
  3.     public void move();  
  4. }  
  5. public class Ship implements Vehicle  
  6. {  
  7.     public void move()   
  8.     {  
  9.     ……  
  10.     }  
  11. }  
  12. public class Car implements Vehicle  
  13. {  
  14.     public void move()   
  15.     {  
  16. 相關推薦

    UML之間關係 依賴 泛化 關聯 聚合 組合 實現

    分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

    UML之間關係:依賴,泛化,關聯,聚合,組合,實現

    類與類圖 1) 類(Class)封裝了資料和行為,是面向物件的重要組成部分,它是具有相同屬性、操作、關係的物件集合的總稱。 2) 在系統中,每個類具有一定的職責,職責指的是類所擔任的任務,即類要完成什麼樣的功能,要承擔什麼樣的義務。一個類可以有多種職責,設計得好的

    UML之間關係,聚合,組合,依賴總結

    下面我就根據下面這個圖來講解一下UML類圖。 類圖 首先,看動物那個矩形框,他就表示為一個類(Class)。類圖分為三層: 第一層顯示類的名稱 如果是抽象類,就用斜體表示 第二層顯示類的特性,通常是欄位和屬性。 第三

    設計模式之UML(一)以及關係泛化實現依賴關聯聚合組合

    類圖用於描述系統中所包含的類以及它們之間的相互關係,幫助人們簡化對系統的理解,它是系統分析和設計階段的重要產物,也是系統編碼和測試的重要模型依據。接下來我們就來談談類圖的組成,在下一篇中我們將討論一下類圖之間的關係。 一、類圖的組成 1. 普通類 上圖

    淺談UML之間的5種關係

    什麼是UML類圖? 類圖顯示了一組類、介面、協作以及他們之間的關係。在UML中問題域最終要被逐步轉化,通過類來建模,通過程式語言構建這些類從而實現系統。類加上他們之間的關係就構成了類圖,類圖中還可以包

    UML之間的6種關係與區別

    原文:https://blog.csdn.net/it_zjyang/article/details/51355062兩個類之間的關係分為兩種,一種是強關聯一種是弱關聯,強關聯是在編譯時期就已經確定的,無法在執行時期動態的改變的關聯;弱關聯是可以動態地確定並且可以在執行時期動

    UML的關系

    更強 soc house 技術 包含關系 con log has-a 方法 1.一般化關系(也叫泛化(generalization):表示is-a的關系),包括繼承/實現,圖網上找的,謝謝了 註意:繼承是實線,而實現是虛線 2. 關聯關系(Association)

    UML的使用

    類圖無非就是在說明類與類之間的關係。 類與類之間的關係,無非分為兩種:上下級關係和平級關係。 上下級關係包括繼承父類和實現一個介面,用類圖分別表示為: 繼承父類: 實線加空心三角表示。 實現一個介面: 虛線加空心三角表示。 平級關係:關聯關係和依賴關係。

    之間依賴關聯聚合組合關係

    一、繼承關係     繼承指的是一個類(稱為子類、子介面)繼承另外的一個類(稱為父類、父介面)的功能,並可以增加它自己的新功能的能力。在Java中繼承關係通過關鍵字extends明確標識,在設計時一般沒有爭議性。在UML類圖設計中,繼承用一條帶空心三角箭頭的實線表示,從子類指向父類,或者子介面指向父介面。  

    面向物件設計物件之間關係---依賴關聯聚合組合

    在學習面向物件設計物件關係時,依賴、關聯、聚合和組合這四種關係之間區別比較容易混淆。特別是後三種,僅僅是在語義上有所區別,所謂語義就是指上下文環境、特定情景等。他們在程式語言中的體現卻是基本相同的,但是基本相同並不等於完全相同,這一點在我的前一篇博文《設計模式中類的關係》

    java物件間的關係(依賴關聯組合聚合)

    組合,聚合,關聯,依賴 的區別 依賴與關聯依賴(Dependency ) : 含義:是類與類之間的連線,表示一個類依賴於另外一個類的定義;依賴關係僅僅描述了類與類之間的一種使用與被使用的關係; 體現:在Java和C++中體現為區域性變數、方法/函式的引數或者是對靜態方法的呼

    java物件間的關係(依賴關聯組合聚合,繼承)

    java類之間最常見的幾種關係: 依賴 ("uses-a") 依賴關係描述了類與類之間使用與被使用的關係。 表現在程式碼上,為依賴的類的某個方法以被依賴的類作為其引數。或者是class A 的某個方法創造了 class B 的例項抑或對class B的靜態方法的呼叫。如

    UML之間的主要關係:關聯,依賴,泛化,聚合,組合,實現

    UML中,類與類之間的關係分為:關聯,依賴,泛化,聚合,組合,實現 關聯: 體現的是類與類的例項之間的關係,而不是類本身的屬性.

    UML關係泛化 、繼承、實現依賴關聯聚合組合)-轉

    繼承、實現、依賴、關聯、聚合、組合的聯絡與區別 分別介紹這幾種關係: 繼承 指的是一個類(稱為子類、子介面)繼承另外的一個類(稱為父類、父介面)的功能,並可以增加它自己的新功能的能力,繼承是類與類或者介面與介面之間最常見的關係;在Java中此類關係通過關鍵字extends明確標識,在設計

    UML之間的幾種關係小結(包括之間關係符號符號)

    由於最近這段時間一直在看設計模式,因此接觸了很多類關係圖,發現自己以前對於UML中類之間的關係的基礎知識掌握的不是很牢固,因此,寫一篇博文用來重溫與鞏固一下相關的知識。在面向物件程式設計時,類與類之間的關係主要分為繼承,實現,依賴,關聯,聚合,組合六種關係。其中前兩種理解很簡

    UML之間關係及畫法

      類與類之間的關係通常有4種,即依賴關係(Dependency)、泛化關係(Generalization)、關聯關係(Association)、實現關係(Realization) 依賴關係(Depe

    UML關係泛化 、繼承、實現依賴關聯聚合組合

    繼承、實現、依賴、關聯、聚合、組合的聯絡與區別 分別介紹這幾種關係: 繼承 指的是一個類(稱為子類、子介面)繼承另外的一個類(稱為父類、父介面)的功能,並可以增加它自己的新功能的能力,繼承是類與類或者介面與介面之間最常見的關係;在Java中此類關係通過關鍵字extends明確標識,在設計時一般沒有爭議性; 

    UML的三種關系----關聯聚合泛化

    ron 內存 gre 區別 分享 聚合 兩個 說明 鍵盤 一、關聯association 1、解釋說明:   表示兩種類實例間的關系。如果一個類的實例必須要用另一個類的實例才能完成工作時就要用關聯。關聯關系時在類中是使用實例變量來定義實現的。 2、在圖中,關聯用兩個類之間的

    UML常見關係詳解(泛化實現依賴關聯組合聚合

    UML中類與類,已經類與介面,介面與介面的關係有:泛化(generalization),關聯(association),依賴(dependency),實現(realization)這幾種。   泛化(generalization)關係時指一個

    UML之間的六大關係

    理解六大關係中在程式碼中的體現,就可以輕鬆的閱讀設計模式 一、泛化關係(Generalization)        說明:這種關係就是面嚮物件語言中的繼承關係,邏輯上可以用"is a"表示。       &nbs