內聚類型 與 耦合類型(舉例說明)


一、理解內聚與耦合

https://www.cnblogs.com/jiuhefree/articles/13725621.html

 

二、內聚類型:(低 --> 高)

1、偶然內聚

   模塊的各成分之間沒有關聯,只是把分散的功能合並在一起。

   例:A模塊中有三條語句(一條賦值,一條求和,一條傳參),表面上看不出任何聯系,但是B、C模塊中都用到了這三條語句,於是將這三條語句合並成了模塊A。模塊A中就是偶然內聚。

2、邏輯內聚

   邏輯上相關的功能被放在同一模塊中。

   例:A模塊實現的是將對應的人員信息發送給技術部,人事部和財政部,決定發送給哪個部門是輸入的控制標志決定的。模塊A中就是邏輯內聚。

3、時間內聚

   模塊完成的功能必須在同一時間內執行,但這些功能只是因為時間因素才有關聯。

   例:編程開始時,程序員把對所有全局變量的初始化操作放在模塊A中。模塊A中就是時間內聚。

4、過程內聚

   模塊內部的處理成分是相關的,而且這些處理必須以特定的次序進行執行。

   例:用戶登陸了某某網站,A模塊負責依次讀取用戶的用戶名、郵箱和聯系方式,這個次序是事先規定的,不能改變。模塊A中就是過程內聚。

5、通信內聚

   模塊的所有成分都操作同一數據集或生成同一數據集。

   例:模塊A實現將傳入的Date類型數據轉換成String類型,以及將Date類型數據插入數據庫,這兩個操作都是對“Date類型數據”而言的。模塊A中就是通信內聚。

6、順序內聚

   模塊的各個成分和同一個功能密切相關,而且一個成分的輸出作為另一個成分的輸入。

   例:模塊A實現將傳入的Date類型數據轉換成String類型,然后再將轉換好的String類型數據插入數據庫。模塊A中就是順序內聚。

7、功能內聚

   模塊的所有成分對於完成單一的功能都是必須的。

   例:模塊A實現將新注冊的用戶信息(用戶名,密碼,個性簽名)全部轉換成String類型並插入數據庫。模塊A中就是功能內聚。

 

三、耦合類型:(高 --> 低)

1、內容耦合

   一個模塊直接修改或操作另一個模塊的數據,或者直接轉入另一個模塊。

   例:模塊A中定義了變量a,在模塊B中直接使用了。這種情況下模塊A和模塊B就是內容耦合。

2、公共耦合

   兩個以上的模塊共同引用一個全局數據項。

   例:定義了一個全局變量a,在A、B、C模塊中均調用了a,這種情況下模塊A、模塊B、模塊C就是公共耦合。

3、控制耦合

   一個模塊在界面上傳遞一個信號控制另一個模塊,接收信號的模塊的動作根據信號值進行調整。

   例:模塊A獲取用戶類型(普通用戶、高級用戶)傳遞給模塊B,模塊B根據不同類型的用戶提供不同的服務。這種情況下模塊A和模塊B就是控制耦合。

4、標記耦合

   模塊間通過參數傳遞復雜的內部數據結構。

   例:模塊A向模塊B傳遞Object類型的數據。這種情況下模塊A和模塊B就是標記耦合。

5、數據耦合

   模塊間通過參數傳遞基本類型的數據。

   例:模塊A實現兩個數的加法操作,模塊B實現兩個加數的初始化,模塊B將兩個加數傳給模塊A,模塊A進行相加。這種情況下模塊A和模塊B就是數據耦合。

6、非直接耦合

   模塊間沒有信息傳遞。

   例:模塊A實現輸出字符串,模塊B實現接收int數據,兩者之間沒有信息傳遞。這種情況下模塊A和模塊B就是非直接耦合。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM