版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
軟件工程張爽東北大學(xué)軟件學(xué)院第四章面向?qū)ο笏枷肱c范型4.3耦合4.3耦合模塊之間的耦合Coupling按照從強到弱分為5個級別:強弱內(nèi)容耦合公共耦合控制耦合印記耦合數(shù)據(jù)耦合1、內(nèi)容耦合如果兩個模塊中的一個直接引用了另一個模塊的內(nèi)容,則它們之間就是內(nèi)容耦合ContentCoupling。模塊由語句和數(shù)據(jù)構(gòu)成,所謂訪問另一個模塊的內(nèi)容,就是指訪問另一個模塊中的語句或數(shù)據(jù)。1、內(nèi)容耦合例子1.在結(jié)構(gòu)化系統(tǒng)中,把指向變量的指針作為參數(shù)傳遞,則調(diào)用模塊將不僅能夠獲得該變量的值,還能直接訪問該指針?biāo)赶虻拇鎯卧?,也就是說它可以直接重寫該存儲單元的數(shù)值。例子2.一個對象直接訪問另一個對象的屬性。1、內(nèi)容耦合publicclassProduct{ publicfloatunitPrice; ……}publicclassOrder{ privateProductmyProduct; …... publicvoiddiscount(floatdiscountedPrice){
myProduct.unitPrice=discountedPrice; } …...}1、內(nèi)容耦合內(nèi)容耦合非常不好,因為這會造成很多問題和危險:必然造成兩個模塊的耦合度高,互相的交織和滲透較多,導(dǎo)致這兩個模塊的可讀性、可理解性差、可維護(hù)性差。模塊之間的高度耦合。必然導(dǎo)致模塊的獨立性差,可重用性差。模塊中的內(nèi)容可以被直接訪問,能夠篡改或損壞系統(tǒng)中重要的數(shù)據(jù),給計算機犯罪以可乘之機。1、內(nèi)容耦合publicclassProduct{
privatefloatunitPrice; publicvoidsetUnitPrice(floatdiscountPrice){ unitPrice=discountPrice; }}publicclassOrder{ privateProductmyProduct; …... publicvoiddiscount(floatdiscountPrice){
myProduct.setUnitPrice(100.0); } …...}2、公共耦合如果兩個模塊都可以存取相同的全局?jǐn)?shù)據(jù),則它們之間是公共耦合,也稱為公共耦合CommonCoupling。2、公共耦合如某C語言開發(fā)的系統(tǒng)中模塊A和模塊B都直接訪問、讀寫某些全局變量,則模塊A和B之間具有公共耦合。再如Java或C++等面向?qū)ο笳Z言中利用存取控制定義符public來定義公共數(shù)據(jù),類似于全局變量。2、公共耦合問題和危險:(1)具有公共耦合的模塊的可讀性很差do{ ...... f1(); ...... f2(); ......}while(globalFlag<0||globalFlag>100)2、公共耦合問題和危險:(2)公共耦合的模塊很難維護(hù)(3)公共耦合的模塊很難重用(4)存在公共耦合的軟件系統(tǒng)的潛在危險很大盡量避免使用公共耦合慎用finalget*()和set*()3、控制耦合如果兩個模塊中的一個模塊向另一個模塊傳遞控制元素,則它們之間具有控制耦合ControlCoupling,即一個模塊明確地控制另一個模塊的邏輯。3、控制耦合3、控制耦合控制耦合導(dǎo)致被調(diào)用模塊模塊的邏輯性內(nèi)聚。反之,邏輯性內(nèi)聚的模塊必然導(dǎo)致與其調(diào)用模塊之間的控制耦合。應(yīng)該盡量避免控制耦合。4、印記耦合一些編程語言支持模塊之間傳遞復(fù)雜的數(shù)據(jù)結(jié)構(gòu),如數(shù)據(jù)集合、記錄集等,如果被調(diào)用模塊只利用到傳遞的數(shù)據(jù)結(jié)構(gòu)中的一部分?jǐn)?shù)據(jù),則這兩個模塊之間具有印記耦合StampCoupling。4、印記耦合printStudentNameList(ResultSetrsStudent){ ArrayListalStudent=newArrayList();
while(rsStudent.next()){
StringStudentName=
rsStudent.getString("StudentName");
alStudent.add(StudentName);
}}4、印記耦合傳遞的數(shù)據(jù)多于所需要,這將占用多于所必要的資源;接口復(fù)雜,難讀、難懂、難維護(hù);如果預(yù)重用該模塊,那么就得向該模塊提供同樣的復(fù)雜的數(shù)據(jù)結(jié)構(gòu),這給重用造成很大的麻煩;多余的數(shù)據(jù),將增加危險性;對于系統(tǒng)運行環(huán)境資源有限的情況,更要注意避免出現(xiàn)空間資源被不必要地占用的情況。設(shè)計和開發(fā)軟件時,應(yīng)該盡量避免印記耦合。5、數(shù)據(jù)耦合如果兩個模塊之間傳遞的參數(shù),無論是簡單數(shù)據(jù)類型還是復(fù)雜的數(shù)據(jù)結(jié)構(gòu),在被調(diào)用模塊中都被全部利用,則這兩個模塊之間具有數(shù)據(jù)耦合DataCoupling。數(shù)據(jù)耦合是低耦合,是最理想的情況,它克服了前面四種耦合的不足,既不會造成模塊之間過多的依賴性,也不會造成接口的復(fù)雜性,也不會造成過多數(shù)據(jù)的傳遞,這種模塊易讀、易懂、易維護(hù)、易重用。小節(jié)理想的低耦合,如數(shù)據(jù)耦合,模塊之間的接口簡單,所傳遞的參數(shù)數(shù)據(jù)在調(diào)研模塊中全部被使用,模塊有較強的獨立性,而且易讀、易懂、易維護(hù)、易重用。低耦合能夠促進(jìn)模塊的高內(nèi)聚,反之,高耦合則增加模塊之間的依賴程度,導(dǎo)致模塊的低內(nèi)聚。因此低耦合應(yīng)該是設(shè)計與實現(xiàn)軟件系統(tǒng)時所追求的。小節(jié)內(nèi)聚與耦合是不能割離的兩個概念,它們息息相關(guān),相輔相成。耦合必然對內(nèi)聚產(chǎn)生影響,同樣,內(nèi)聚也對耦合產(chǎn)生必然的影響:高內(nèi)聚必然使低依賴性、低耦合成為可能,而低內(nèi)聚必然導(dǎo)致
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 安徽省蕪湖市無為市部分學(xué)校2025-2026學(xué)年八年級上學(xué)期1月期末考試地理試卷(含答案)
- 文明停車題庫及答案
- 網(wǎng)約外賣題庫及答案
- 初中數(shù)學(xué)知識一本全課件
- 數(shù)媒技能考試題目及答案
- 三基基本操作試題及答案
- 2025~2026學(xué)年濟南市天橋區(qū)七年級歷史第一學(xué)期期末考試試題以及答案
- 2025屆浙江省精誠聯(lián)盟高三下學(xué)期二模物理試題(含答案)
- 廣西柳州市2024-2025學(xué)年八年級上學(xué)期期末地理試卷(含答案)
- 氫能燃料電池咨詢專屬委托合同
- 國家自然基金形式審查培訓(xùn)
- 2026馬年卡通特色期末評語(45條)
- NCCN臨床實踐指南:肝細(xì)胞癌(2025.v1)
- 免租使用協(xié)議書
- ?;穾靺^(qū)風(fēng)險動態(tài)評估-洞察與解讀
- 激光焊接技術(shù)規(guī)范
- 消防聯(lián)動排煙天窗施工方案
- 2025年高考物理 微專題十 微元法(講義)(解析版)
- 2025年國家能源投資集團(tuán)有限責(zé)任公司校園招聘筆試備考題庫含答案詳解(新)
- 形位公差培訓(xùn)講解
- 醫(yī)學(xué)影像肺部結(jié)節(jié)診斷與處理
評論
0/150
提交評論