UML中關聯,組合與聚合等關係的辨析

2020-12-06 51CTO

UML中關聯,組合與聚合等關係的辨析

以前學習面向對象的時候,常聽到介紹對象之間的各種關係,常見的有關聯,組合與聚合。下面我們分別介紹它們之間的關係。

作者:frank-liu來源:frank-liu的博客|2012-01-05 11:20

以前學習面向對象的時候,常聽到介紹對象之間的各種關係,常見的有關聯,組合與聚合。

關聯:

關聯是一種最普遍和常見的關係形式。一般是指一個對象可以發消息給另外一個對象。典型的實現情況下指某個對象有一個指針或者引用指向一個實體變量,當通過方法的參數來傳遞或者創建本地變量來訪問這種情況也可以稱之為關聯。

典型的代碼如下:

  1. class A  
  2. {  
  3.     private B itemB;  
  4. }  

也可能有如下的形式:

  1. class A  
  2. {  
  3.     void test(B b) {...}  

籠統的情況下,一般兩個對象的引用,參數傳遞等形式產生的關係,我們都可以稱之為關聯關係。

聚合(aggregation):

聚合表示的是一種has-a的關係,同時,它也是一種整體-部分關係。它的特點在於,它這個部分的生命周期並不由整體來管理。也就是說,當整體這個對象已經不存在的時候,部分的對象還是可能繼續存在的。它的uml圖表示形式如下:

我們用一個空心的箭頭來表示聚合關係。

籠統的說聲明周期管理還是比較模糊。我們就以如圖的Person和Address類來進一步的解釋。假設我們要定義這兩個對象,對於每個人來說,他有一個關聯的地址。人和地址的關係是has-a的關係。但是,我們不能說這個地址是這個人的一個組成部分。同時,我們建立地址對象和人的對象是可以相對獨立存在的。

用代碼來表示的話,典型的代碼樣式如下:

  1. public class Address  
  2. {  
  3. . . .  
  4. }  
  5.  
  6. public class Person  
  7. {  
  8.      private Address address;  
  9.      public Person(Address address)  
  10.      {  
  11.          this.address = address;  
  12.      }  
  13.      . . .  

我們通常通過如下的方式來使用Person對象:

  1. Address address = new Address();  
  2. Person person = new Person(address); 

或者:

  1. Person person = new Person( new Address() ); 

我們可以看到,我們是創建了一個獨立的Address對象,然後將這個對象傳入了Person的構造函數。當Person對象聲明周期結束的時候,Address對象如果還有其他指向它的引用,是可能繼續存在的。也就是說,他們的聲明周期是相對獨立的。

組合(Composition):

當理解了聚合的關係之後,再來看組合的關係就相對來說要好很多。和聚合比起來,組合是一種更加嚴格的has-a關係。它表示一種嚴格的組成關係。以汽車和引擎為例子,引擎是汽車的一個組成部分。他們是一種嚴格的部分組成關係,因此他們的聲明周期也應該是一致的。也就是說引擎的聲明周期是通過汽車對象來管理。

組合的uml圖表示如下:

一般用一個實心的箭頭表示組合。

組合代碼的典型示例如下:

  1. public class Engine  
  2. {  
  3. . . .   
  4. }  
  5.  
  6. public class Car  
  7. {  
  8.     Engine e = new Engine();  
  9.     .......  

Engine對象是在Car對象裡面創建的,所以在Car對象生命周期結束的時候,Engine對象的生命周期也同樣結束了。

參考連結:

http://www.c-sharpcorner.com/UploadFile/pcurnow/compagg07272007062838AM/compagg.aspx

http://ootips.org/uml-hasa.html

原文連結:http://shmilyaw-hotmail-com.iteye.com/blog/1333887

【編輯推薦】

  1. 製作完整的Java可執行文件
  2. 簡單實例:JAVA灰度化 二值化圖片
  3. J2EE總結:Java命名與目錄接口JNDI
  4. Java讀取WEB應用中的資源
  5. Java中運用數組的四種排序方法

【責任編輯:

小林

TEL:(010)68476606】

點讚 0

相關焦點

  • 「軟體設計」UML中關聯,聚合和組合區別
    尾巴是狗和貓的一部分(聚集/組成) 貓是一種寵物(遺傳/概括) 下圖顯示了三種類型的關聯連接器:關聯、聚合和組合。我們將在這個UML指南中複習它們。 下圖顯示了一個概括。我們將在稍後的UML指南中討論它。 關聯 如果一個模型中的兩個類需要彼此通信,那麼它們之間必須有一個連結,並且可以通過一個關聯(連接器)來表示。
  • UML對象圖和類圖關係解析
    本節向大家介紹一下UML圖中UML類圖和UML對象圖的關係,主要有依賴關係,實現關係和泛化關係等,相信通過本節的介紹你對UML圖中圖形之間的關係有一定的了解。
  • UML解惑:圖說UML中的六大關係
    【技術開發 技術文章】    UML定義的關係主要有六種:依賴、類屬、關聯、實現、聚合和組合。這些類間關係的理解和使用是掌握和應用UML的關鍵,而也就是這幾種關係,往往會讓初學者迷惑。
  • UML類圖中的四種關係深入剖析
    UML類圖中的關係UML類圖中的關係分為四種:泛化、依賴、關聯、實現;關聯關係又可以細化為聚合和組合。1.泛化(Generalization)UML類圖中的泛化是父類和子類之間的關係,子類繼承父類的所有結構和行為。在子類中可以增加新的結構和行為,也可以覆寫父類的行為。
  • 六種UML圖關係的表示及在代碼中體現
    ——表示及在代碼中體現,UML圖關係主要有依賴關係,繼承,聚合,合成,關聯關係和接口等,相信通過本文的介紹你對UML圖關係有明確的認識。六種UML圖關係——表示及在代碼中體現1、依賴關係2、繼承關係3、聚合關係4、合成(組合)關係5、關聯關係6、接口一、UML圖關係中依賴:虛線箭頭。有箭頭的那一端為被依賴關係。
  • 軟考高項必考點:依賴VS泛化VS關聯VS聚合VS組合VS實現
    UML圖中類之間的關係:依賴,泛化,關聯,聚合,組合,實現類與類圖1) 類(Class)封裝了數據和行為,是面向對象的重要組成部分,它是具有相同屬性、操作、關係的對象集合的總稱。: 在系統中可能會存在一些類的屬性對象類型為該類本身,這種特殊的關聯關係稱為自關聯。
  • 看懂UML類圖和時序圖
    ,使用帶空心箭頭的虛線表示;3.小汽車為與SUV之間也是繼承關係,它們之間的關係為泛化關係,使用帶空心箭頭的實線表示;4.小汽車與發動機之間是組合關係,使用帶實心箭頭的實線表示;5.學生與班級之間是聚合關係,使用帶空心箭頭的實線表示;6.學生與身份證之間為關聯關係
  • 深入剖析靜態UML模型圖
    類之間的相互關係包括:關聯(Association)、依賴(Dependency)、泛化(Generalization)以及實現(Realize)。關聯描述的是類的對象之間邏輯上的關係,這些對象可以是同類的,也可以不是,關聯的兩端稱為角色,如客戶和訂單就存在一種關聯。
  • UML語言中模型元素和通用機制專家解析
    事物是UML中重要的組成部分,它代表任何可以定義的東西。事物之間的關係能夠把事物聯繫在一起,組成有意義的結構模型。每一個模型元素都有一個與之相對應的圖形元素。一、事物UML語言中事物可以分為結構事物、動作事物、分組事物和注釋事物。
  • DDD最佳實踐-理解領域驅動設計中的聚合
    例如:如果採購請求被刪除,則相應的和該採購請求相關的採購項以及它們之間的關聯都需要被刪除——在資料庫設計中,這種約束可以通過資料庫外鍵來保證。如果多個用戶在對具有相關關係的數據進行並發處理,則可能涉及到複雜的鎖定機制。
  • 圖說Java中的OOPs(面向對象編程系統)基本概念
    Association(關聯)關聯是指兩個對象之間存在某種聯繫,它定義了對象之間的多樣性。例如,學生與老師之間存在著關聯,學生上老師的課,老師教學生知識。在Java中,關聯關係可以有一對一關聯,一對多關聯,多對多關聯和多對一關聯。8. Aggregation(聚合)聚合是關聯的一種特定情況,屬於關聯的子集。
  • 語文複習之詞語(成語)| 學霸都知道的8種辨析方法,收藏速看!
    同時,在日常讀書和寫作中,要注意正確使用成語,碰到拿不準的,就得勤查詞典,這雖是笨功夫,但不失為最有效的方法。 二、近義詞辨析題解題技巧 近義詞辨析題在中考中經常出現,但因為近義詞「易混難辨」,學生答題時往往分辨不清,不知如何下手,所以該題得分不高。
  • 五個詞語辨析方法,詞語辨析題怎麼做?看完你就知道了
    五個詞語辨析方法,詞語辨析題怎麼做?四川華圖教育小編了解到的情況,在四川公務員考試中行測言語理解是四川公務員考試行測考試內容的重點。而四川行測考試中言語理解的邏輯填空題又是演繹考核的重點,因為它不僅考察了考生對言語語句的理解能力,也考察考生的表達能力。
  • UML建模工具中的五大視圖
    ◆用戶視圖–表示系統的目的和目標◆結構視圖–表示系統的靜態或空閒的狀態◆行為視圖–表示系統的動態狀態或狀態的變動◆實現視圖–表示系統的邏輯元素的分布◆環境視圖–表示系統物理元素的分布3.用戶視圖系統的用戶視圖由用例圖組成,用例圖包含執行者、用例、及它們的關係,用例圖表示了系統對外部實體提供的功能
  • 聚合支付+精準營銷 米雅科技用技術重塑人與商業的關係
    對於目前競爭激烈的數據營銷市場,杭州米雅信息科技有限公司以其龐大的聚合支付平臺為基礎,打造了一個完整的大數據營銷閉環,成功突圍。聚合支付+精準營銷長期以來,線下門店收銀臺前的排隊問題就一直在影響著消費者的購物體驗。
  • 乳液聚合過程中常用乳化劑介紹
    乳液聚合在現代社會運用非常廣泛,工業化品種有聚丙烯酸酯乳液,乳膠丁苯橡膠,聚乙酸乙烯酯乳液等。乳化劑作為乳液聚合體系重要的添加劑,其作用也是非常大的。大家都知道,在乳液聚合體系中,乳化劑雖然不直接參加化學反應,但它是最重要的組分之一。乳化劑的種類和濃度將直接影響引發速率及鏈增長速率。
  • 鏡頭組合與形成鏡頭語言關係的三個基本要素
    我們知道,為了使鏡頭與鏡頭之間緊密、有機、合理地組合、排列在一起,並能很好地完成鏡頭語言的聯繫、段落間的敘事任務及要傳達的視覺信息,必須具備以上三要素,也就是必須滿足三個基本的構成條件。不管看電影還是看電視,首先展現給觀眾的是一塊固定不變的平面,例如,要表現一個人物主體全景,也就是全景中表現一個演員時,基於構圖或調度的需要,演員要站在畫面空間的右側,在拍攝完此鏡頭(全景)後,下一個鏡頭(近景)要考慮到鏡頭組合形式及鏡頭語言關係的需要,應該把近景鏡頭中的人物所佔的畫面空間也處理在畫面偏右的位置,使得兩個鏡頭畫面中的人物的視線均看畫的左方。
  • 確認勞動者與關聯企業勞動關係,應當考慮緊密程度
    勞動者主張與用人單位的關聯企業存在勞動關係,法官從勞動者與該企業聯繫的緊密程度出發認定雙方不存在勞動關係。用人單位訴稱:本公司與禾某公司確實屬於關聯公司,但王某海的社保由禾某公司繳納,而且王某海所生產的防腐管道屬於禾某公司的經營範圍,故王某海與禾某公司存在勞動關係,與本公司不存在勞動關係。
  • 2017考研英語詞彙:同義詞辨析(4)
    考研英語詞彙部分分析不只是死記硬背大綱詞彙,對詞彙的的掌握還需注重一詞多義、熟詞僻意,同義詞辨析等,下面新東方網考研頻道就分享一些考研中常見的同義詞,考生注意掌握它們的用法和不同。
  • 一次有趣的Elasticsearch+矩陣變換聚合實踐
    業務數據模型轉換示意圖聚合模型聚合數據模型說明基於前面的原始業務模型數據聚合,按照區域+其它部分條件聚合,統計組合後條件下的分組客戶數量聚合後的數據模型示意圖03技術探索業務需求是一個很典型的聚合統計,多數大數據產品或者傳統關係資料庫都支持