1. 程式人生 > 實用技巧 >為每種內聚和耦合舉例

為每種內聚和耦合舉例

參考:https://www.cnblogs.com/xiaym896/p/5400677.html

學習中補上些自己的理解。

一、內聚

1、偶然內聚:模組的各成分之間沒有關聯,只是把分散的功能合併在一起。

//程式1
double d1,d2,d3;
if(d1 > d2)
    d3 = d1;
else 
    d3 = d2;

//程式2
int i1,i2,i3;
if(i1 > i2)
    i3 = i1;
else 
    i3 = i2;

以上分別是int double型求最值,沒有關聯,而都是進行同樣的操作求max,故把他們進行合併成一個模組。(可用c++的模板)

2、邏輯內聚:邏輯上相關的功能被放在同一模組中。

例:A模組實現的是將對應的人員資訊傳送給技術部,人事部和財政部,決定傳送給哪個部門是輸入的控制標誌決定的。

人員資訊傳送(任務)的結果是“傳送給技術部,人事部和財政部”,他們在邏輯上都是要進行處理人員資訊,故屬於類似的一類。所以,模組A中就是邏輯內聚。

3、時間內聚:模組完成的功能必須在同一段時間內執行。(但這些功能只是因為時間因素才有關聯。)

例:class類的建構函式的初始化資訊,必須得是同一段時間內執行。

4、過程內聚:模組內部的處理成分是相關的,而且這些處理必須以特定的次序進行執行。

例:使用者進行購買商品(先付後用)場景中,使用者訂單生效的前提是他得付款。故對於購買支付這個模組,其內部得是:付款->訂單生效。

5、通訊內聚:模組的所有成分都操作同一資料集或生成同一資料集。

例:模組A實現將傳入的Date型別資料轉換成String型別,以及將Date型別資料插入資料庫,這兩個操作都是對“Date型別資料”而言的。模組A中就是通訊內聚。

6、順序內聚:模組的各個成分和同一個功能密切相關,而且一個成分的輸出作為另一個成分的輸入。

例:查詢使用者的密碼場景中,使用者輸入的賬戶ID是到資料庫中查詢使用者密碼的輸入。沒有使用者ID怎麼查其對應的密碼呢?

7、功能內聚:模組的所有成分對於完成單一的功能都是必須的。(成分沒有多餘)

例:模組A實現將新註冊的使用者資訊(使用者名稱,密碼,個性簽名)全部轉換成String型別並插入資料庫。模組A中就是功能內聚。