想想耦合和內聚

2021-09-17 22:29:39 字數 1729 閱讀 7024

耦合:軟體工程中物件之間的耦合度就是物件之間的依賴性。

總結:耦合==依賴

耦合有兩個衡量標準

1.耦合的數量,即耦合的多少。

2.耦合的質量等級。

耦合可以分為以下幾種,它們之間的耦合度由高到低排列如下:

(1) 內容耦合。當乙個模組直接修改或操作另乙個模組的資料時,或乙個模組不通過正常入口而轉入另乙個模組時,這樣的耦合被稱為內容耦合。內容耦合是最高程度的耦合,應該避免使用之。

(2) 公共耦合。兩個或兩個以上的模組共同引用乙個全域性資料項,這種耦合被稱為公共耦合。在具有大量公共耦合的結構中,確定究竟是哪個模組給全域性變數賦了乙個特定的值是十分困難的。

(3) 外部耦合 。一組模組都訪問同一全域性簡單變數而不是同一全域性資料結構,而且不是通過參數列傳遞該全域性變數的資訊,則稱之為外部耦合。

(4) 控制耦合 。乙個模組通過介面向另乙個模組傳遞乙個控制訊號,接受訊號的模組根據訊號值而進行適當的動作,這種耦合被稱為控制耦合。

(5) 標記耦合 。若乙個模組a通過介面向兩個模組b和c傳遞乙個公共引數,那麼稱模組b和c之間存在乙個標記耦合。

(6) 資料耦合。模組之間通過引數來傳遞資料,那麼被稱為資料耦合。資料耦合是最低的一種耦合形式,系統中一般都存在這種型別的耦合,因為為了完成一些有意義的功能,往往需要將某些模組的輸出資料作為另一些模組的輸入資料。

(7) 非直接耦合 。兩個模組之間沒有直接關係,它們之間的聯絡完全是通過主模組的控制和呼叫來實現的。

以上都是從資料關係的角度來將耦合的,那麼從物件導向關係來講耦合要如何區分呢?

五種關係:

一般化關係、關聯關係、聚合關係、合成關係、依賴關係。

一般化關係(generalization)

表示類與類之間的繼承關係,介面與介面之間的繼承關係,或類對介面的實現關係。

關聯關係(association)

是類與類之間的聯接,它使乙個類知道另乙個類的屬性和方法。可以單向和雙向。

聚合關係(aggregation)

關聯關係的一種,是強關聯關係。表示整體和個體之間的關係。

合成關係(composition)

關聯關係的一種。比聚合關係更強。要求整體物件負責部分物件的生命週期。

依賴關係(dependency)

類與類之間的聯接,單向。表示乙個類依賴於另乙個類的定義。

對5關係進行分類

繼承關係:一般化關係

關聯呼叫關係:合成關係》聚合關係》關聯關係

定義關係:依賴關係

下面在對以上分類進行分級

一般化關係》關聯呼叫關係》定義關係

最終形成的物件導向的關係。

一般化關係》合成關係》聚合關係》關聯關係》定義關係

那麼用耦合的角度對評價上面的關係是否可以呢?

可以的。如果耦合度的角度來講,應該盡可能的用依賴,而少用繼承。

這樣的設計是降低耦合度的。

但是如果設計用到了繼承和組合聚會的時候,說明他們的關係是很緊密的。

就應該有這樣的關係。

那麼設計可規劃的空間就剩鏈結和耦合了。

對其實我們設計中儘量減少耦合和鏈結的數量就可以了,這一定是乙個趨向好的方向的設計。

關於耦合+內聚+物件導向的五中關係在設計中的應用就說這些了。

都是個人偏向很明顯的理解,有共鳴最好,希望別給別人造成錯誤的引導。

這裡我提一句,對什麼東西,一定要理解,那怕理解的錯了,也比只記得概念強。

概念只能唬弄了考卷,對實實在在的設計沒有多少用處。

對一些抽象的概念,一定要理解的很具體。

內聚和耦合

內聚 1.偶然內聚 模組的各成分之間沒有關聯,只是把分散的功能合併在一起。例 a模組中有三條語句 一條賦值,一條求和,一條傳參 表面上看不出任何聯絡,但是b c模組中都用到了這三條語句,於是將這三條語句合併成了模組a。模組a中就是偶然內聚。2.邏輯內聚 邏輯上相關的功能被放在同一模組中。例 a模組實...

內聚和耦合

內聚和耦合 內聚 cohesion 是乙個模組內部各成分之間相關聯程度的度量。耦合 coupling 是模組之間依賴程度的度量。內聚和耦合是密切相關的,與其它模組存在強耦合的模組通常意味著弱內聚,而強內聚的模組通常意味著與其它模組之間存在弱耦合。模組設計追求強內聚,弱耦合。一 內聚強度 內聚按強度從...

內聚與耦合

內聚與耦合 內聚 cohesion 是乙個模組內部各成分之間相關聯程度的度量。耦合 coupling 是模組之間依賴程度的度量。內聚和耦合是密切相關的,與其它模組存在強耦合的模組通常意味著弱內聚,而強內聚的模組通常意味著與其它模組之間存在弱耦合。模組設計追求強內聚,弱耦合。一 內聚強度 內聚按強度從...