UML中類之間的關係
依賴是指一個類使用了另一個類,它是一種使用關係,描述了一個事物的規格說明的變化可能會影響到使用它的另一個事物(反之不一定)。最常見的依賴關係是一個類內部中使用到了另一個類的定義。在UML中表示為一條指向被依賴事物的虛線。
依賴可以採取多種方式來實現,如以下程式碼
Code
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->internal class DependReturnType
{
}
internal class DependParameter
{
}
internal class DependVarible
{
}
class Depend
{
public DependReturnType Test(DependParameter param)
{
DependVarible var = new DependVarible();
return new DependReturnType();
}
}
當類之間在概念上有連線關係時,類之間的連線稱之為關聯,關聯是一種結構關係,說明一個事物的物件與另一個事物的物件相聯絡。給定一個連線兩各類的關聯,可以從一個類的物件導航到另一個類的物件。
一般把關聯畫為連線相同或者不同的類一條實線。關聯可以有方向,即導航。一般不作說明的時候,導航是雙向的,不需要線上上標出箭頭。大部分情況下導航是單向的,可以加一個箭頭表示。
關聯一般採取全域性變數的方式來實現,如以下程式碼
Code
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->internal class Employee
{
public void DoWork()
{
}
}
class Association
{
private Employee myEmployee;
public Employee MyEmployee
{
get
{
return myEmployee;
}
set
{
myEmployee = value;
}
}
public void DoSomething()
{
myEmployee.DoWork();
}
}
依賴和關聯都是一個類中使用了另一個類,那它們有什麼區別呢?
依賴和關聯都是兩個或多個相對獨立的類之間的關係。當一個物件負責構造另一個物件的例項,或者依賴另一個物件的服務時,這兩個物件之間主要體現為依賴關係;當一個物件的例項與另一個物件的一些特定例項存在固定的對應關係時,這兩個物件之間為關聯關係。依賴關係表現在區域性變數,方法的引數,以及對靜態方法的呼叫;關聯關係是使用例項變數來實現。
泛化就是物件導向中的繼承。它表示類與類之間的繼承關係,介面與介面之間的繼承關係,或類對介面的實現關係。一般化的關係是從子類指向父類的,與繼承或實現的方法相反。
程式碼如下
Code
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->internal class Father
{
}
internal class Child : Father
{
}
class Generalization
{
public void Test()
{
Father father = new Child();
}
}
當物件A被加入到物件B中,成為物件B的組成部分時,物件B和物件A之間為聚合關係。聚合是關聯關係的一種,是較強的關聯關係,強調的是整體與部分之間的關係。
與關聯關係一樣,聚合關係也是通過例項變數來實現這樣關係的。關聯關係和聚合關係來語法上是沒辦法區分的,從語義上才能更好的區分兩者的區別。
聚合用帶一個空心菱形(整體的一端)的實線表示。
聚合與關聯的區別:關聯關係所涉及的兩個物件是處在同一個層次上的。比如人和自行車就是一種關聯關係,而不是聚合關係,因為人不是由自行車組成的。
組合是一種特殊的聚合關係,它是一種強型別的聚合,組合中的部分不能脫離整體而獨立存在。例如Windows的視窗和視窗上的選單就是組合關係。組合中的整體和部分的生命週期一致,即部分必須在組合建立的同時或者之後建立,在組合銷燬之前或者同時銷燬,部分的生命週期不會超出組合的生命週期。
組合是用帶實心菱形(整體的一端)的實線來表示。
組合與聚合的區別:
- 生命週期的實現上,組成需要負責其部分的建立和銷燬,聚合不需要
- 組合中的一個物件在同一時刻只能屬於一個組成物件,而聚合的一個部分物件可以被多個整體物件聚合,例如一個學生可以在多個學校就讀,而一個選單在同一時刻只能是某個視窗內的物件。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-441857/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- UML類圖--類之間的關係
- 【java】類之間的關係Java
- 類與類之間的基本關係
- 介面、抽象類、普通類之間的關係抽象
- UML 之 各種檢視簡介 & UML類圖幾種關係的總結
- UML類圖介紹&類的六大關係
- Java設計模式-類之間的關係Java設計模式
- 類之間的6種關係詳解
- 五分鐘看懂UML類圖與類的關係詳解
- Window、WindowManager、View 之間的關係View
- git、github、gitlab之間的關係GithubGitlab
- 頁面中多個script塊之間的關係
- Python中怎樣改變集合之間的關係?Python
- 設計模式-UML關係基礎設計模式
- TLS與SSL之間關係TLS
- React、Ant Design、DvaJS之間的關係ReactJS
- Activity、View、Window之間關係的分析View
- 思考 TPS 與 RT 之間的關係
- Window, WindowManager和WindowManagerService之間的關係
- IntelliJ IDEA 中uml外掛檢視某類的所有繼承或實現關係 + outline功能IntelliJIdea繼承
- 在Linux中,Unix和Linux之間的關係是什麼?Linux
- 探討PostgreSQL例項中資料庫之間的關係SQL資料庫
- react、redux、react-redux之間的關係ReactRedux
- Linux Shell檔案之間的包含關係Linux
- GeoTools應用-JTS(Geometry之間的關係)
- Java類關係之代理(代理模式)Java模式
- 效能測試中,TPS和RT之間的關係,你知道嗎?
- CPU、記憶體、磁碟IO之間的關係記憶體
- Kubernetes和Docker之間的關係是什麼?Docker
- 網站和伺服器之間的關係網站伺服器
- ERP與精益生產之間的關係
- Web3和元宇宙之間的關係Web元宇宙
- Maven專案之間關係介紹Maven
- 關於Java中的物件、類、抽象類、介面、繼承之間的聯絡Java物件抽象繼承
- Linux中終端介面與圖形介面之間的切換關係Linux
- Android中Module之間介面呼叫發現不了繼承關係Android繼承
- 前端之DOM解析和渲染與CSS、JS之間的關係前端CSSJS
- 集合類關係
- 淺析 UART、RS232、TTL 之間的關係