「軟體設計」UML中關聯,聚合和組合區別

2020-12-06 騰訊網

考慮以下對象類之間的差異和相似之處:寵物、狗、尾巴、主人。

我們可以看到以下關係:

主人餵寵物,寵物感謝主人(關聯)

尾巴是狗和貓的一部分(聚集/組成)

貓是一種寵物(遺傳/概括)

下圖顯示了三種類型的關聯連接器:關聯、聚合和組合。我們將在這個UML指南中複習它們。

下圖顯示了一個概括。我們將在稍後的UML指南中討論它。

關聯

如果一個模型中的兩個類需要彼此通信,那麼它們之間必須有一個連結,並且可以通過一個關聯(連接器)來表示。

關聯可以用這些類之間的一條線表示,該線帶有指示導航方向的箭頭。如果兩邊都有箭頭,則這種關聯稱為雙向關聯。

我們可以通過在表示關聯的行中添加多重裝飾來表示關聯的多重性。該示例表明,一個學生有一個或多個導師:

一個學生可以與多個老師關聯:

這個例子表明每個老師都有一個或多個學生:

我們還可以使用角色名指示關聯中對象的行為(例如,對象的角色)。

關聯vs聚合vs組合

「關聯、聚合和組合之間的區別是什麼」這個問題最近經常被問到。

聚合和組合是關聯的子集,意味著它們是特定的關聯案例。在聚合和組合中,一個類的對象「擁有」另一個類的對象。但有一個微妙的區別:

聚合意味著子組件可以獨立於父組件而存在。示例:班級(父類)和學生(子類)。刪除類,學生仍然存在。

組合意味著子元素不能獨立於父元素而存在的關係。例子:房子(父母)和房間(孩子)。房間不能與房子分開。

組合的例子:

除了類A和類B之間的部分關係之外,我們還應該更具體地使用composition連結——這兩個類之間存在很強的生命周期依賴關係,也就是說,當類A被刪除時,類B也會被刪除

聚合的例子:

值得注意的是,聚合連結沒有以任何方式聲明類A擁有類B,也沒有聲明兩者之間存在父子關係(當父類刪除時,其所有的子類也因此被刪除)。事實上,恰恰相反!聚合連結通常用於強調類A實例不是類B實例的獨佔容器,因為實際上同一個類B實例擁有另一個容器/s。

加起來-

總而言之,關聯是一個非常通用的術語,用於表示一個類使用另一個類提供的功能時的情況。如果一個父類對象擁有另一個子類對象,並且如果沒有父類對象,這個子類對象就不能有意義地存在,那麼我們稱它為複合。如果可以,就稱為聚合。

泛化和專業化

泛化是一種機制,用於將類似的對象類組合成一個更一般化的類。泛化標識一組實體之間的共性。共性可以是屬性、行為,或者兩者都有。換句話說,超類擁有最通用的屬性、操作和可以與子類共享的關係。子類可能有更專門化的屬性和操作。

專門化是泛化的反向過程,泛化意味著從現有的類創建新的子類。

例如,銀行帳戶有兩種類型——儲蓄帳戶和信用卡帳戶。儲蓄帳戶和信用卡帳戶從銀行帳戶中繼承了常見的/廣義的屬性,比如帳戶號、帳戶餘額等,也有它們特有的屬性,比如未結算的付款等。

泛化和繼承

泛化是我們用來在UML中表示將公共屬性抽象為基類的術語。UML圖的泛化關聯也稱為繼承。當我們在程式語言中實現泛化時,它通常被稱為繼承。泛化和繼承是相同的。這些術語只是根據使用的上下文而有所不同。

本文:http://jiagoushi.pro/node/1213

謝謝大家關注,轉發,點讚和在看。

相關焦點

  • UML中關聯,組合與聚合等關係的辨析
    UML中關聯,組合與聚合等關係的辨析 以前學習面向對象的時候,常聽到介紹對象之間的各種關係,常見的有關聯,組合與聚合。下面我們分別介紹它們之間的關係。
  • UML對象圖和類圖關係解析
    本節向大家介紹一下UML圖中UML類圖和UML對象圖的關係,主要有依賴關係,實現關係和泛化關係等,相信通過本節的介紹你對UML圖中圖形之間的關係有一定的了解。
  • UML類圖中的四種關係深入剖析
    UML類圖中的關係UML類圖中的關係分為四種:泛化、依賴、關聯、實現;關聯關係又可以細化為聚合和組合。1.泛化(Generalization)UML類圖中的泛化是父類和子類之間的關係,子類繼承父類的所有結構和行為。在子類中可以增加新的結構和行為,也可以覆寫父類的行為。
  • UML解惑:圖說UML中的六大關係
    【技術開發 技術文章】    UML定義的關係主要有六種:依賴、類屬、關聯、實現、聚合和組合。這些類間關係的理解和使用是掌握和應用UML的關鍵,而也就是這幾種關係,往往會讓初學者迷惑。
  • 軟考高項必考點:依賴VS泛化VS關聯VS聚合VS組合VS實現
    UML圖中類之間的關係:依賴,泛化,關聯,聚合,組合,實現類與類圖1) 類(Class)封裝了數據和行為,是面向對象的重要組成部分,它是具有相同屬性、操作、關係的對象集合的總稱。2) 在系統中,每個類具有一定的職責,職責指的是類所擔任的任務,即類要完成什麼樣的功能,要承擔什麼樣的義務。一個類可以有多種職責,設計得好的類一般只有一種職責,在定義類的時候,將類的職責分解成為類的屬性和操作(即方法)。
  • 看懂UML類圖和時序圖
    一起學習、成長、溫情的熱愛生活圖丨pexels這裡不會將UML的各種元素都提到,我只想講講類圖中各個類之間的關係;能看懂類圖中各個類之間的線條、箭頭代表什麼意思後,也就足夠應對日常的工作和交流;同時,我們應該能將類圖所表達的含義和最終的代碼對應起來
  • DDD最佳實踐-理解領域驅動設計中的聚合
    從行業角度,DDD 對於企業級軟體系統和網際網路軟體系統特別適用,但是對於諸如電信產品等行業則未必有那麼大的吸引力。從複雜性角度,軟體系統越複雜,對系統的敏捷性要求越高,應用 DDD 的收益越大。而網際網路業務的急劇興起,加劇了軟體系統的複雜性和業務敏捷的迫切性。學習曲線方面:儘管 Evans 的《領域驅動設計》堪稱經典,但不得不說,這本書對於初學者而言,確實是有些晦澀。
  • 六種UML圖關係的表示及在代碼中體現
    UML圖關係——表示及在代碼中體現,UML圖關係主要有依賴關係,繼承,聚合,合成,關聯關係和接口等,相信通過本文的介紹你對UML圖關係有明確的認識。六種UML圖關係——表示及在代碼中體現1、依賴關係2、繼承關係3、聚合關係4、合成(組合)關係5、關聯關係6、接口一、UML圖關係中依賴:虛線箭頭。有箭頭的那一端為被依賴關係。
  • 從聚合-轉移框架淺談卷積神經網絡的架構設計
    最後,將(a)和(b)兩個網絡的表達式平行地寫在一起,發現兩者唯一的區別就在於聚合函數 A,(a)DenseNet 結構表現為 channel 維度的拼接,(b)ResNet 結構表現為逐元素的相加。二者遵循的都是一個相同的 Dense 的拓撲連接結構。這部分的具體細節可以查看 Mixed Link Network 的論文。提到這裡,不得不回顧一個小往事。
  • 深入剖析靜態UML模型圖
    關聯描述的是類的對象之間邏輯上的關係,這些對象可以是同類的,也可以不是,關聯的兩端稱為角色,如客戶和訂單就存在一種關聯。在UML中關聯主要有三種形式,一種是用一條線段標識雙向的關聯,稱為關聯(Association);第二種是用一個有箭頭的線段標識單向的關聯(UnidirectinalAssociation);第三中是用一個菱形為頭的線段表示關聯的兩端的類是整體和部分的關係,這種關聯也稱為聚合(Aggregation),例如:一個對象a包含另一個對象b的引用,則菱形的一端連接的是對象a,另一段連接的是對象b。
  • 聚合氯化鋁不同顏色的區別和用途
    聚合氯化鋁是一種無機高分子淨水材料,無機高分子混凝劑,又簡稱為聚鋁,英文縮寫為PAC,在形態上又可以分為固體聚鋁和液體聚鋁兩種。
  • 基於UML的校園一卡通管理系統的分析與設計
    面向對象程序設計提出了一種新的系統設計模型,它將系統看成通過交互作用來完成任務的對象的集合,每個對象用自己的方法管理數據。本文將結合"一卡通"管理系統的分析與設計過程來闡述面向對象方法學的思想以及統一建模語言UML 中的具體應用。
  • UML建模工具中的五大視圖
    提供一種簡單的、準備使用的、表現為可視的建模語言,是獨立於過程的,是獨立於語言的2.UML建模工具的五大視圖:UML定義了軟體工程領域中的不同模型。下面給出模型和它們的描述:.5.行為視圖當把現實場景應用於實現特定任務時,方法構成了系統的動態方面UML建模工具中行為視圖描述了軟體系統模型的動態方面協作圖-表示類與它們關聯之間的交互時序圖-描述了類與它們關聯之間的交互(以時間序列)狀態圖-當外部進程或實體訪問時描述了類的行為,在執行動作時它類的狀態和響應,表示為不同的實體的狀態和轉換
  • UML語言中模型元素和通用機制專家解析
    本節繼續向大家介紹UML語言方面的知識,上節我們介紹了UML中的五大視圖和九種圖形,這節向大家介紹一下UML模型元素和通用機制,希望通過本節的學習你對UML語言有一定的了解。下面是具體介紹。模型元素UML語言中的模型元素包括事物和事物之間的聯繫。
  • 企鵝直播關聯公司經營範圍新增遊戲軟體設計、廣播電視節目設計等
    來源:金融界網站天眼查數據顯示,6月15日,企鵝直播的關聯公司——武漢鯊魚網絡直播技術有限公司發生工商變更,公司經營範圍新增遊戲軟體設計、製作;演出經紀服務;影視、廣播電視節目的設計、製作、發布等;此外,該公司其他事項備案也新增設立網際網路上網服務營業場所經營單位審批
  • 軟體測試中的性能測試 負載測試 壓力測試
    最終,負載機會收集被壓伺服器返回的結果再傳遞給控制機顯示在聚合報告中。3.你如何設計負載?標準是什麼?負載測試計劃多少用戶數量、使用什麼類型的機器、以及在什麼環境下進行。主要基於兩個重要的文檔,任務分布圖和事務信息,任務分布圖告訴我們在負載時間段內,某一個事務使用的用戶數,高峰使用率及低峰使用率均來自該文檔;事務信息告訴我們事務名及優先級,在設計場景時可以參考。4.幾個典型的場景,如何基於jmeter設計測試腳本?
  • 在軟體系統設計中如何降低軟體系統中程序類之間耦合關係(上篇)
    軟體項目實訓及課程設計指導——如何降低軟體系統中程序類之間耦合關係(上篇)1、分離軟體應用系統中各個模塊類的接口定義和對應接口的具體功能實現面向對象程序類設計的五大原則中的「開放-封閉原則」 ( OCP,Open-Close Principle)倡導分離接口的定義和接口的具體功能實現的設計原則
  • 視頻聚合軟體「電視貓」又叒陷入糾紛了,這回是因為啥?
    原創:孫芳華中國智慧財產權報編者按:近日,視頻聚合軟體「電視貓」因為版權問題,再次陷入糾紛。日前,上海智慧財產權法院對千杉公司與迅雷公司侵犯作品信息網絡傳播權糾紛案作出終審判決,駁回上訴,維持原判,即判決千杉公司停止相關侵權行為,賠償迅雷公司經濟損失及合理開支共計11.5萬元,駁回迅雷公司的其他訴訟請求。
  • CAD建築設計高級教程:自動生成三維組合模型
    在建築設計中,圖紙後期的檢查非常重要。如何查看建築設施三維關係?如何結合動態觀察效果?如何與水暖電專業協同,排除管線立體交叉現象?最好的方法就是在圖紙中生成三維組合模型。下面以中望CAD建築版為例,詳細教大家如何操作。
  • 共價有機框架白光發光二極體的共軛和聚合定向設計
    共價有機框架白光發光二極體的共軛和聚合定向設計 作者:小柯機器人 發布時間:2021/1/7 13:16:08 馬凱特大學Jier Huang團隊開發了一種共價有機框架白光發光二極體的共軛和聚合定向設計策略