您好,登錄后才能下訂單哦!
這篇文章主要介紹“UML類圖關系分為哪幾種”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“UML類圖關系分為哪幾種”文章能幫助大家解決問題。
UML類圖關系分為四種:泛化、依賴、關聯、實現;關聯關系又可以細化為聚合和組合。
1.泛化(Generalization)
泛化是父類和子類之間的關系,子類繼承父類的所有結構和行為。在子類中可以增加新的結構和行為,也可以覆寫父類的行為。
一般化關系表示類與類、接口與接口之間的繼承關系。關系中的箭頭由子類指向父類。在Java中,用extends關鍵字來直接表示這種關系。
例:
publicabstractclassEmployee{
}
publicclassProgrammerextendsEmployee{
}
2.依賴(Dependency)
UML類圖關系中依賴關系是一種使用關系,特定事物的改變有可能會影響到使用該事物的事物,反之不成立。在你想顯示一個事物使用另一個事物時使用。
通常情況下,依賴關系體現在某個類的方法使用另一個類作為參數。
依賴:對于兩個相對獨立的對象,當一個對象負責構造另一個對象的實例,或者依賴另一個對象的服務(方法函數)時,這兩個對象之間主要體現為依賴關系。
[具體表現]
依賴關系表現在1.局部變量(Question:這里指的是方法的局部變量,還是類的成員變量,還是都是???),2.方法的參數,3.以及對靜態方法的調用
[現實例子]
比如說你要去擰螺絲,你是不是要借助(也就是依賴)螺絲刀(Screwdriver)來幫助你完成擰螺絲(screw)的工作
[UML表現]
dependency
[代碼表現]
publicclassPerson{
publicvoidscrew(Screwdriverscrewdriver){
screwdriver.screw();
}
}
3.關聯(Association)
UML類圖關系中關聯是一種結構化的關系,指一種對象和另一種對象有聯系。給定有關聯的兩個類,可以從一個類的對象得到另一個類的對象。關聯有兩元關系和多元關系。兩元關系是指一種一對一的關系,多元關系是一對多或多對一的關系。一般用實線連接有關聯的同一個類或不同的兩個類。當你想要表示結構化關系時使用關聯。
關聯關系是通過類的成員變量來實現的。
3.1聚合(Aggregation)
UML類圖關系中聚合是一種特殊的關聯。它描述了“hasa”關系,表示整體對象擁有部分對象。
關聯關系和聚合關系來語法上是沒辦法區分的,從語義上才能更好的區分兩者的區別。聚合是較強的關聯關系,強調的是整體與部分之間的關系。
聚合是關聯的一種形式,代表兩個類之間的整體/局部關系。聚合暗示著整體在概念上處于比局部更高的一個級別,而關聯暗示兩個類在概念上位于相同的級別。
與關聯關系一樣,聚合關系也是通過類的成員變量來實現的。
3.2組合(Composition)
UML類圖關系中組合是聚合的一種形式,它具有更強的擁有關系,強調整體與部分的生命周期是一致的。整體負責部分的生命周期的管理。如果整體被銷毀,部分也必須跟著一起被銷毀,如果所有者被復制,部分也必須一起被復制。
與關聯關系一樣,組合關系也是通過類的成員變量來實現的。
UML類圖關系中聚合和組合的區別在于:聚合關系是“has-a”關系,組合關系是“contains-a”關系;聚合關系表示整體與部分的關系比較弱,而組合比較強;聚合關系中代表部分事物的對象與代表聚合事物的對象的生存期無關,一旦刪除了聚合對象不一定就刪除了代表部分事物的對象。組合中一旦刪除了組合對象,同時也就刪除了代表部分事物的對象。
我們用淺顯的例子來說明聚合和組合的區別。“國破家亡”,國滅了,家自然也沒有了,“國”和“家”顯然也是組合關系。而相反的,計算機和它的外設之間就是聚合關系,因為它們之間的關系相對松散,計算機沒了,外設還可以獨立存在,還可以接在別的計算機上。在聚合關系中,部分可以獨立于聚合而存在,部分的所有權也可以由幾個聚合來共享,比如打印機就可以在辦公室內被廣大同事共用。
關聯和聚合的區別主要在語義上,關聯的兩個對象之間一般是平等的,例如你是我的朋友,聚合則一般不是平等的,例如一個公司包含了很多員工,其實現上是差不多的。聚合和組合的區別則在語義和實現上都有差別,組合的兩個對象之間其生命期有很大的關聯,被組合的對象是在組合對象創建的同時或者創建之后創建,在組合對象銷毀之前銷毀。一般來說被組合對象不能脫離組合對象獨立存在,而且也只能屬于一個組合對象,例如一個文檔的版本,必須依賴于文檔的存在,也只能屬于一個文檔。聚合則不一樣,被聚合的對象可以屬于多個聚合對象,例如一個員工可能可以屬于多個公司。
我想舉個通俗的例子
你和你的心臟之間是composition關系(心臟只屬于你自己)
你和你買的書之間是aggregation關系(書可能是別人的)
你和你的朋友之間是association關系
4.實現(Realization)
UML類圖關系中實現關系指定兩個實體之間的一個合約。換言之,一個實體定義一個合約,而另一個實體保證履行該合約。
類間關系有很多種,在大的類別上可以分為兩種:縱向關系、橫向關系。
縱向關系就是繼承關系,它的概念非常明確,也成為OO的三個重要特征之一,這里不過多的討論。
橫向關系較為微妙,按照UML的建議大體上可以分為四種:
依賴(Dependency)
關聯(Association)
聚合(Aggregation)
組合(Composition)
它們的強弱關系是沒有異議的:依賴<關聯<聚合<組合<泛化(繼承)
在UML系統開發中有三個主要的模型:
功能模型:從用戶的角度展示系統的功能,包括用例圖。
對象模型:采用對象,屬性,操作,關聯等概念展示系統的結構和基礎,包括類圖。
動態模型:展現系統的內部行為。包括序列圖,活動圖,狀態圖。本節關于UML類圖關系介紹到這里。
關于“UML類圖關系分為哪幾種”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。