簡單地說,對象之間的耦合度就是對象之間的依賴性。指導使用和維護對象的主要問題是對象之間的多重依賴性。對象之間的耦合越高,維護成本越高。因此對象的設計應使類和構件之間的耦合最小。
有軟硬體之間的耦合,還有軟體各模組之間的耦合。
耦合性是程式結構中各個模組之間相互關聯的度量.它取決於各個模組之間的介面的複雜程度、調用模組的方式以及哪些資訊通過介面.一般模組之間可能的串連方式有七種,耦合性由低到高分別是:非直接耦合、資料耦合、標記耦合、控制耦合、外部耦合、公用耦合、內容耦合。
耦合是對一個軟體結構內各個模組之間互連程度的度量。
內聚標誌一個模組內各個元素彼此結合的緊密程度,它是資訊隱蔽和局部化概念的自然擴充。
1. 什麼是內聚?什麼是耦合?
內聚是從功能角度來度量模組內的聯絡,一個好的內聚模組應當恰好做一件事。它描述的是模組內的功能聯絡; 耦合是軟體結構中各模組之間相互串連的一種度量,耦合強弱取決於模組間介面的複雜程度、進入或訪問一個模組的點以及通過介面的資料。
2. 內聚分為哪幾類?耦合分為哪幾類?
內聚有如下的種類,它們之間的內聚度由弱到強排列如下:
(1) 偶然內聚。模組中的代碼無法定義其不同功能的調用。但它使該模組能執行不同的功能,這種模組稱為巧合強度模組。
(2) 邏輯內聚。這種模組把幾種相關的功能組合在一起, 每次被調用時,由傳送給模組參數來確定該模組應完成哪一種功能
(3) 時間內聚
(4) 過程內聚
(5) 通訊內聚
(6) 順序內聚
(7) 功能內聚
耦合可以分為以下幾種,它們之間的耦合度由高到低排列如下:
(1) 內容耦合:如果發生下列情形,兩個模組之間就發生了內容耦合
1. 一個模組直接存取另一個模組的內部資料;
2. 一個模組不通過正常入口轉到另一模組內部;
3.兩個模組有一部分程式碼重迭(只可能出現在組合語言中);
4.一個模組有多個入口。
(2) 公用耦合:若一組模組都訪問同一個公用資料環境,則它們之間的耦合就稱為公用耦合。公用的資料環境可以是全域資料結構、共用的通訊區、記憶體的公用覆蓋區等。
(3) 外部耦合: 一組模組都訪問同一全域簡單變數而不是同一全域資料結構,而且不是通過參數表傳遞該全域變數的資訊,則稱之為外部耦合。
(4) 控制耦合:如果一個模組通過傳送開關、標誌、名字等控制資訊,明顯地控制選擇另一模組的功能,就是控制耦合。
(5) 標記耦合:一組模組通過參數表傳遞記錄資訊,就是標記耦合。這個記錄是某一資料結構的子結構,而不是簡單變數。
(6) 資料耦合:一個模組訪問另一個模組時,彼此之間是通過簡單資料參數 (不是控制參數、公用資料結構或外部變數) 來交換輸入、輸出資訊的。
(7) 非直接耦合:兩個模組之間沒有直接關係,它們之間的聯絡完全是通過主模組的控制和調用來實現的。
(8)順序耦合:是靜態耦合性的一種,為了保持正確性,兩個元素(一般是函數或API)必須以特定的順序出現。