版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第五章 模塊和對象 5.1模塊的概念5.2內(nèi)聚5.3耦合5.4抽象和數(shù)據(jù)封裝5.5信息隱藏5.6對象7/19/202215.1 模塊的概念模塊是由邊界元素限定的相鄰程序元素的序列,而且有一個總體標識符代表它。模塊可以看作是構(gòu)成程序的基本構(gòu)件。把程序劃分成獨立命名且可獨立訪問的模塊,每個模塊完成一個子功能,把這些模塊集成起來構(gòu)成一個整體,可以完成指定的功能滿足用戶的需求,這就是模塊化。7/19/20222把復雜的問題分解成許多容易解決的小問題,原來的問題也就容易解決了。這就是模塊化的根據(jù) 7/19/20223圖5-1 模塊化和軟件成本7/19/202245.2 內(nèi)聚內(nèi)聚是一個模塊內(nèi)部交互的程度。
2、內(nèi)聚用來衡量一個模塊內(nèi)部各個元素彼此結(jié)合的緊密程度。 7/19/202255.2.1 偶然性內(nèi)聚如果一個模塊執(zhí)行多個不相關(guān)的操作,或者這些操作有關(guān)系,關(guān)系也很松散,就叫做偶然性內(nèi)聚。 偶然性內(nèi)聚的模塊出現(xiàn)修改錯誤的概率比其他類型的模塊高,使得整個軟件系統(tǒng)的可維護性降低,可理解性極差,根本就不可重用。一般來說,可以把它分成更小的模塊,使得每個小模塊只完成一個操作。7/19/202265.2.2 邏輯性內(nèi)聚當一個模塊進行一系列相關(guān)的操作,每個操作由調(diào)用模塊來選擇時,這個模塊就具有邏輯性內(nèi)聚。具有邏輯性內(nèi)聚的模塊完成的任務在邏輯上屬于相同或相似的一類。具有邏輯性內(nèi)聚的模塊有一些缺點。第一,模塊整體上
3、不易理解。第二,導致嚴重的維護問題。第三,很難對這種模塊進行重用。7/19/202275.2.3 時間性內(nèi)聚當模塊執(zhí)行一系列與及時性有關(guān)的操作時,該模塊具有時間性內(nèi)聚。具有時間性內(nèi)聚的模塊包含的任務必須在同一段時間內(nèi)執(zhí)行。這種模塊的操作之間的關(guān)聯(lián)很弱,但是與其他模塊的操作關(guān)聯(lián)很強。對時間性內(nèi)聚模塊進行重用的可能性很小。7/19/202285.2.4 過程性內(nèi)聚如果一個模塊執(zhí)行一系列與產(chǎn)品要遵循的步驟順序有關(guān)的操作,則該模塊具有過程性內(nèi)聚。具有過程性內(nèi)聚的模塊內(nèi)部處理單元都是相關(guān)的,而且必須以特定次序執(zhí)行。這種模塊的操作之間是弱連接,重用性也極差。7/19/202295.2.5 通信性內(nèi)聚如果一
4、個模塊執(zhí)行一系列與產(chǎn)品要遵循的步驟順序有關(guān)的操作,并且如果所有操作都在相同的數(shù)據(jù)上進行,則該模塊具有通信性內(nèi)聚。具有通信性內(nèi)聚的模塊中,所有元素都使用同一個輸入數(shù)據(jù)和(或)產(chǎn)生同一個輸出數(shù)據(jù)。這種模塊的操作之間是連接緊密,重用性極差,解決方法是對這種模塊進一步分解,使得每一個模塊單獨執(zhí)行一個操作。7/19/2022105.2.6 功能性內(nèi)聚只執(zhí)行一個操作或只達到一個單一目標的模塊具有功能性內(nèi)聚。具有功能性內(nèi)聚的模塊可重用。具有功能性內(nèi)聚的模塊便于維護。首先,功能性內(nèi)聚可以有效地隔離錯誤。其次,修改容易。最后,修改對其他模塊影響小。7/19/2022115.2.7 信息性內(nèi)聚如果模塊進行許多操作
5、,每個都有各自的入口點,每個操作的代碼相對獨立,而且所有操作都在相同的數(shù)據(jù)結(jié)構(gòu)上完成,則該模塊具有信息性內(nèi)聚。信息性內(nèi)聚和邏輯性內(nèi)聚區(qū)別:邏輯性內(nèi)聚模塊的各個操作互相糾纏在一起,信息性內(nèi)聚模塊的各操作代碼相互獨立。具有信息性內(nèi)聚的模塊主要用來實現(xiàn)一種抽象的數(shù)據(jù)類型。7/19/2022125.2.8 內(nèi)聚的設計原則偶然性內(nèi)聚、邏輯性內(nèi)聚和時間性內(nèi)聚也被認為是低內(nèi)聚,過程性內(nèi)聚和通信性內(nèi)聚被認為是中內(nèi)聚,功能性內(nèi)聚和信息性內(nèi)聚被認為是高內(nèi)聚。設計時應力爭做到高內(nèi)聚,辨認出低內(nèi)聚的模塊,通過修改設計提高模塊的內(nèi)聚程度,獲得較高的模塊獨立性。7/19/2022135.3 耦合耦合是指兩個模塊之間交互的
6、程度。耦合衡量不同模塊彼此間互相依賴(連接)的緊密程度。耦合的強弱取決于模塊間接口的復雜程度,進入或訪問一個模塊的點,以及通過接口的數(shù)據(jù)。耦合按交互照程度從高到低的順序分為內(nèi)容耦合、共用耦合、控制耦合、印記耦合和數(shù)據(jù)耦合五類。7/19/2022145.3.1 內(nèi)容耦合 如果兩個模塊中的一個直接引用了另一個模塊的內(nèi)容,那么它們之間是內(nèi)容耦合。內(nèi)容耦合包括下面一些情況:一個模塊訪問另一個模塊的內(nèi)部數(shù)據(jù);一個模塊不通過正常入口而轉(zhuǎn)到另一個模塊的內(nèi)部;兩個模塊有一部分程序代碼重疊;一個模塊有多個入口。7/19/2022155.3.2 共用耦合如果兩個模塊都可存取相同的全局數(shù)據(jù),則它們之間是共用耦合。7
7、/19/2022165.3.3 控制耦合如果兩個模塊中的一個模塊給另一個模塊傳遞控制要素,則它們之間是控制耦合,也就是說,一個模塊通過傳遞消息中的控制信息明確地控制另一個模塊的邏輯。重用的可能很小。通??刂岂詈吓c具有邏輯性內(nèi)聚的模塊有關(guān)聯(lián),也包含邏輯性內(nèi)聚有關(guān)的困難。7/19/2022175.3.4 印記耦合如果把數(shù)據(jù)結(jié)構(gòu)作為參數(shù)進行傳遞,兩個模塊是印記耦合,但被調(diào)用的模塊指在該數(shù)據(jù)結(jié)構(gòu)的一些個別組件上進行操作。印記耦合增加了系統(tǒng)的復雜程度,并且導致對數(shù)據(jù)的訪問失去控制。7/19/2022185.3.5 數(shù)據(jù)耦合如果兩個模塊的所有參數(shù)是同類數(shù)據(jù)項,則它們之間是數(shù)據(jù)耦合。每個參數(shù)或者是簡單參數(shù),
8、或者是數(shù)據(jù)結(jié)構(gòu)(其中的所有元素為被調(diào)用的模塊所使用)。數(shù)據(jù)耦合是低耦合,也是理想的目標。兩個模塊數(shù)據(jù)耦合,對一個模塊的修改幾乎不會對另一個模塊產(chǎn)生影響,使得維護工作很容易。7/19/2022195.3.6 耦合的設計原則耦合程度越低越好,在設計軟件結(jié)構(gòu)時,盡量使用數(shù)據(jù)耦合,少用特征耦合和控制耦合,限制共用耦合,完全不用內(nèi)容耦合。 7/19/202220耦合例子p、t和u在更新模式下訪問相同的數(shù)據(jù)庫號碼輸入輸出1飛機類型狀態(tài)標志2飛機零件清單3功能代碼4飛機零件清單5零件編號零件制造商6零件編號零件名稱Figure 5.7qrstup數(shù)據(jù)耦合數(shù)據(jù)或標記耦合公共耦合公共耦合q控制耦合數(shù)據(jù)或標記耦合
9、r數(shù)據(jù)耦合s數(shù)據(jù)耦合t公共耦合Figure 5.87/19/2022215.4 抽象和數(shù)據(jù)封裝抽象是通過抑制不必要的細節(jié)并強調(diào)相關(guān)的細節(jié)達到逐步求精的一種方法。抽象就是抽出事物的本質(zhì)特征而暫時不考慮它們的細節(jié)。軟件工程過程的每一步都是對軟件開發(fā)的抽象層次的一次精化,是由抽象到具體的細化過程。數(shù)據(jù)封裝是抽象的一個例子,如果一個數(shù)據(jù)結(jié)構(gòu)含有在這個數(shù)據(jù)結(jié)構(gòu)之上執(zhí)行的操作,這種情況就實現(xiàn)了數(shù)據(jù)封裝。通過數(shù)據(jù)封裝,軟件設計者在開發(fā)的不同時期不同層次上,考慮的內(nèi)容是不同的。數(shù)據(jù)封裝以簡化產(chǎn)品維護的方式支持了數(shù)據(jù)抽象的實現(xiàn),還減小出現(xiàn)退化錯誤的可能性。7/19/2022225.5 信息隱藏信息隱藏原理指出:
10、應該這樣設計和確定模塊,使得一個模塊內(nèi)包含的信息(過程和數(shù)據(jù))對于不需要這些信息的模塊來說,是不能訪問的。在設計產(chǎn)品之前,應列出一個未來可能修改的實現(xiàn)決定的清單。然后設計模塊,對其他模塊隱藏本模塊設計的實現(xiàn)細節(jié)。隱藏的是模塊的實現(xiàn)細節(jié)。7/19/2022235.6 對象面向?qū)ο蠓椒▽W中,對象是封裝了數(shù)據(jù)結(jié)構(gòu)及可以施加在這些數(shù)據(jù)結(jié)構(gòu)上的操作的封裝體,這個封裝體又可以唯一地標識它的名字,而且向外界提供一組服務(對對象施加的操作)。對象可以看作是數(shù)據(jù)類型的一個具體例子(實例),產(chǎn)品根據(jù)抽象數(shù)據(jù)類型進行設計,產(chǎn)品的變量(對象)是抽象數(shù)據(jù)類型的實例。7/19/202224繼承是指新的數(shù)據(jù)類型可定義為先前定義過的類型的擴展,而不是從頭開始定義。面向?qū)ο蟮恼Z言中,類定義為支持繼承的抽象數(shù)據(jù)類型,對象就是類的實例。類是對具有相同數(shù)據(jù)和相同操作的一組相似對象的定義。類是對具有
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 第二章 脊柱疾病的分類與檢查法課件
- 第二章 動物的運動和行為-復習課件
- 浙教版2021-2022學年度七年級數(shù)學上冊模擬測試卷 (827)【含簡略答案】
- Mesotrione-Standard-生命科學試劑-MCE
- 工程質(zhì)量管理責任追究制度
- 財務半年的工作總結(jié)三篇-半年工作總結(jié)
- 教師節(jié)音樂課程設計
- 公司員工生日驚喜策劃方案
- 教師培訓國畫課程設計
- 教師專業(yè)發(fā)展課程設計
- 急診手術(shù)綠色通道流程
- 湖北省宜都市馬家臺礦區(qū)電石用、建筑石料用、水泥用石灰?guī)r礦礦產(chǎn)資源開發(fā)利用與生態(tài)復綠方案
- DLT 817 立式水輪發(fā)電機檢修規(guī)程
- 機房精密空調(diào)改造施工方案
- 《西游記》女性形象研究
- 孫子兵法中的思維智慧智慧樹知到期末考試答案2024年
- 尿管滑脫不良事件分析
- 高中思想政治課運用情境教學研究的開題報告
- 科技改變生活英語作文三年級
- 考研真題:《英語二》2023年考試真題與參考答案
- 盤扣腳手架搭設方案及交底
評論
0/150
提交評論