類圖-繼承、實現、泛化、依賴、關聯、聚合、組合

截至目前,畫了幾個Yii2類圖,得到最多的反饋,竟然與Yii2無關,而是圖例說明。

那為了使關注我的朋友更好的看我所畫的類圖,今天就對類圖中的圖例,做一下說明:

類(介面)與類(介面)之間的關係,大概有以下幾種:

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

下面分別對這幾種關係,做一個說明:

繼承,inherit

一個類(介面)A使用了另外一個類(介面)B中定義的成員,那麼A就繼承自B。在這組關係中,A也稱之為子類(介面),擴展類(介面),派生類(介面。B也成父類(介面),基礎類(介面)。

例如,所有的模型類,都是yiiaseModel的子類。這就是繼承關係。

在類圖中,使用空心三角箭頭來表示,箭頭執行父類(介面),例如

實現,Realitization

一個類實現了介面中定義的介面方法。

例如,ArrayAccess介面定義了可以像訪問數組元素一樣訪問屬性的實現介面。如果一個類實現了該介面那麼該類實例化對象的屬性,就可以通過[]的形式進行訪問

在類圖中,使用虛線條+空心三角來表示。如圖所示:

泛化,generalization

繼承和實現的另一種表述角度,通常是表示父類(介面)被子類(介面)所泛化!因此圖例與實現和繼承一致,不是一種新的關係,只能算一種更加概括性,抽象性的關係!

依賴,關聯,聚合,組合

這四種關係,都表示類與類之間的關聯關係,說明兩個類之間有某種聯繫。而依據與聯繫的緊密程度,由弱到強,依次成為 依賴<關聯<聚合<組合。

依賴,dependency

如果一個類,偶爾用到某個類,例如,客戶吃飯偶爾用到叉子(偶爾吃西餐的時候),那麼客戶類和叉子類之間就是依賴關係。

在圖例中,使用 虛線+箭頭 的方式表示.如圖

關聯,association

比依賴關係稍微強些。例如,客戶需要與商家進行溝通,此時客戶與商家就是關聯關係。通常關聯關係中的兩類,相對平等,都可以獨立存在維護。

圖例中,使用 實線+箭頭 的形式表示,如圖

關聯關係,可以是單向的也可以是雙向的!

聚合,aggregation

比關聯更強些,通常是整體與部分之間的關係,例如 公司和員工。此時的整體和部分,都可以獨立存在。

圖例中,使用空心菱形+實線+箭頭(箭頭可選)的方式表示,如圖

組合,composition,又叫合成

比聚合更強的整體與部分的關係,通常整體和部分都不能獨立存在,必須要組合到一起存在,例如 人和頭,汽車和變速器。

圖例中使用實心菱形+實線+箭頭(箭頭可選)表示,如圖

以上就是典型的類和類的關係圖。其實只有,繼承,實現,關聯三種,不過將關聯做了細緻劃分而已!

一家之言,歡迎補充,拍磚!

請關註: 小韓說理 微信公眾號

推薦閱讀:

每一次遇見都值得珍惜
歐豪和馬思純有什麼關係?
陳文帝和韓子高的關係怎麼樣?
李連杰和黃秋燕什麼關係?
沈騰和馬麗是什麼關係?

TAG:原型圖 | 關係 | 設計 |