版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
軟件工程張爽東北大學(xué)軟件學(xué)院第四章面向?qū)ο笏枷肱c范型4.3耦合4.3耦合模塊之間的耦合Coupling按照從強(qiáng)到弱分為5個(gè)級(jí)別:強(qiáng)弱內(nèi)容耦合公共耦合控制耦合印記耦合數(shù)據(jù)耦合1、內(nèi)容耦合如果兩個(gè)模塊中的一個(gè)直接引用了另一個(gè)模塊的內(nèi)容,則它們之間就是內(nèi)容耦合ContentCoupling。模塊由語(yǔ)句和數(shù)據(jù)構(gòu)成,所謂訪問(wèn)另一個(gè)模塊的內(nèi)容,就是指訪問(wèn)另一個(gè)模塊中的語(yǔ)句或數(shù)據(jù)。1、內(nèi)容耦合例子1.在結(jié)構(gòu)化系統(tǒng)中,把指向變量的指針作為參數(shù)傳遞,則調(diào)用模塊將不僅能夠獲得該變量的值,還能直接訪問(wèn)該指針?biāo)赶虻拇鎯?chǔ)單元,也就是說(shuō)它可以直接重寫該存儲(chǔ)單元的數(shù)值。例子2.一個(gè)對(duì)象直接訪問(wèn)另一個(gè)對(duì)象的屬性。1、內(nèi)容耦合publicclassProduct{ publicfloatunitPrice; ……}publicclassOrder{ privateProductmyProduct; …... publicvoiddiscount(floatdiscountedPrice){
myProduct.unitPrice=discountedPrice; } …...}1、內(nèi)容耦合內(nèi)容耦合非常不好,因?yàn)檫@會(huì)造成很多問(wèn)題和危險(xiǎn):必然造成兩個(gè)模塊的耦合度高,互相的交織和滲透較多,導(dǎo)致這兩個(gè)模塊的可讀性、可理解性差、可維護(hù)性差。模塊之間的高度耦合。必然導(dǎo)致模塊的獨(dú)立性差,可重用性差。模塊中的內(nèi)容可以被直接訪問(wèn),能夠篡改或損壞系統(tǒng)中重要的數(shù)據(jù),給計(jì)算機(jī)犯罪以可乘之機(jī)。1、內(nèi)容耦合publicclassProduct{
privatefloatunitPrice; publicvoidsetUnitPrice(floatdiscountPrice){ unitPrice=discountPrice; }}publicclassOrder{ privateProductmyProduct; …... publicvoiddiscount(floatdiscountPrice){
myProduct.setUnitPrice(100.0); } …...}2、公共耦合如果兩個(gè)模塊都可以存取相同的全局?jǐn)?shù)據(jù),則它們之間是公共耦合,也稱為公共耦合CommonCoupling。2、公共耦合如某C語(yǔ)言開發(fā)的系統(tǒng)中模塊A和模塊B都直接訪問(wèn)、讀寫某些全局變量,則模塊A和B之間具有公共耦合。再如Java或C++等面向?qū)ο笳Z(yǔ)言中利用存取控制定義符public來(lái)定義公共數(shù)據(jù),類似于全局變量。2、公共耦合問(wèn)題和危險(xiǎn):(1)具有公共耦合的模塊的可讀性很差do{ ...... f1(); ...... f2(); ......}while(globalFlag<0||globalFlag>100)2、公共耦合問(wèn)題和危險(xiǎn):(2)公共耦合的模塊很難維護(hù)(3)公共耦合的模塊很難重用(4)存在公共耦合的軟件系統(tǒng)的潛在危險(xiǎn)很大盡量避免使用公共耦合慎用finalget*()和set*()3、控制耦合如果兩個(gè)模塊中的一個(gè)模塊向另一個(gè)模塊傳遞控制元素,則它們之間具有控制耦合ControlCoupling,即一個(gè)模塊明確地控制另一個(gè)模塊的邏輯。3、控制耦合3、控制耦合控制耦合導(dǎo)致被調(diào)用模塊模塊的邏輯性內(nèi)聚。反之,邏輯性內(nèi)聚的模塊必然導(dǎo)致與其調(diào)用模塊之間的控制耦合。應(yīng)該盡量避免控制耦合。4、印記耦合一些編程語(yǔ)言支持模塊之間傳遞復(fù)雜的數(shù)據(jù)結(jié)構(gòu),如數(shù)據(jù)集合、記錄集等,如果被調(diào)用模塊只利用到傳遞的數(shù)據(jù)結(jié)構(gòu)中的一部分?jǐn)?shù)據(jù),則這兩個(gè)模塊之間具有印記耦合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ù),將增加危險(xiǎn)性;對(duì)于系統(tǒng)運(yùn)行環(huán)境資源有限的情況,更要注意避免出現(xiàn)空間資源被不必要地占用的情況。設(shè)計(jì)和開發(fā)軟件時(shí),應(yīng)該盡量避免印記耦合。5、數(shù)據(jù)耦合如果兩個(gè)模塊之間傳遞的參數(shù),無(wú)論是簡(jiǎn)單數(shù)據(jù)類型還是復(fù)雜的數(shù)據(jù)結(jié)構(gòu),在被調(diào)用模塊中都被全部利用,則這兩個(gè)模塊之間具有數(shù)據(jù)耦合DataCoupling。數(shù)據(jù)耦合是低耦合,是最理想的情況,它克服了前面四種耦合的不足,既不會(huì)造成模塊之間過(guò)多的依賴性,也不會(huì)造成接口的復(fù)雜性,也不會(huì)造成過(guò)多數(shù)據(jù)的傳遞,這種模塊易讀、易懂、易維護(hù)、易重用。小節(jié)理想的低耦合,如數(shù)據(jù)耦合,模塊之間的接口簡(jiǎn)單,所傳遞的參數(shù)數(shù)據(jù)在調(diào)研模塊中全部被使用,模塊有較強(qiáng)的獨(dú)立性,而且易讀、易懂、易維護(hù)、易重用。低耦合能夠促進(jìn)模塊的高內(nèi)聚,反之,高耦合則增加模塊之間的依賴程度,導(dǎo)致模塊的低內(nèi)聚。因此低耦合應(yīng)該是設(shè)計(jì)與實(shí)現(xiàn)軟件系統(tǒng)時(shí)所追求的。小節(jié)內(nèi)聚與耦合是不能割離的兩個(gè)概念,它們息息相關(guān),相輔相成。耦合必然對(duì)內(nèi)聚產(chǎn)生影響,同樣,內(nèi)聚也對(duì)耦合產(chǎn)生必然的影響:高內(nèi)聚必然使低依賴性、低耦合成為可能,而低內(nèi)聚必然導(dǎo)致
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高考物理總復(fù)習(xí)專題九磁場(chǎng)第3講帶電粒子在勻強(qiáng)磁場(chǎng)、復(fù)合場(chǎng)中的運(yùn)動(dòng)練習(xí)含答案
- 生產(chǎn)車間承包設(shè)備租賃
- 高中化學(xué) 第三冊(cè) 第九章 初識(shí)元素周期律 9.2 元素周期表教學(xué)設(shè)計(jì)1 滬科版
- 2024年四年級(jí)品德與社會(huì)上冊(cè) 第三單元 生活在這里真好 第11課《我家來(lái)了新鄰居》教案 粵教版
- 2024秋七年級(jí)英語(yǔ)上冊(cè) Unit 5 Family and Home Lesson 28 A Family Picnic教學(xué)設(shè)計(jì) (新版)冀教版
- 2023一年級(jí)數(shù)學(xué)下冊(cè) 五 認(rèn)識(shí)人民幣 1認(rèn)識(shí)人民幣教案 西師大版
- 2023九年級(jí)道德與法治下冊(cè) 第一單元 我們共同的世界 第一課 同住地球村第2課時(shí) 復(fù)雜多變的關(guān)系說(shuō)課稿 新人教版
- 文書模板-建設(shè)工程施工分包合同
- 外匯存款代辦委托書
- 銀行合同范本(2篇)
- 洪恩識(shí)字配套字庫(kù)完整版識(shí)字啟蒙200字-生字組詞句子完整版可打印-點(diǎn)讀指讀
- 幼兒園園長(zhǎng)的幼教教研與項(xiàng)目管理
- 兒童超重與肥胖培訓(xùn)課件
- 廢棄物管理與處理培訓(xùn)分類與安全處置技巧
- 2024年黑龍江建筑職業(yè)技術(shù)學(xué)院高職單招(英語(yǔ)/數(shù)學(xué)/語(yǔ)文)筆試歷年參考題庫(kù)含答案解析
- 曲臂登高車管理與維護(hù)
- 鐵路邊坡水害分析報(bào)告
- 手術(shù)中獲得性壓力性損傷護(hù)理課件
- 你畫我猜題目
- 醫(yī)保藥品目錄培訓(xùn)課件
- 通信工程的職業(yè)生涯規(guī)劃
評(píng)論
0/150
提交評(píng)論