• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      淺談OOP中的耦合、內(nèi)聚

      2014-04-29 00:00:00趙磊

      摘 要:耦合、內(nèi)聚是軟件工程中的一個概念。低耦合、高內(nèi)聚是面向?qū)ο缶幊讨械膽?yīng)遵守的基本原則。不同的設(shè)計人員對于這個原則的理解不同,其所設(shè)計、開發(fā)的系統(tǒng)也不盡相同。本文以學(xué)生信息管理系統(tǒng)為例,詮釋了筆者對于低耦合、高內(nèi)聚的理解。

      關(guān)鍵詞:耦合;內(nèi)聚

      中圖分類號:TP312.2-4

      1 耦合

      所謂耦合指的是軟件系統(tǒng)中一個代碼模塊與另一個代碼模塊之間的關(guān)系。耦合度越高說明模塊間的關(guān)系越緊密;反之模塊之間的關(guān)系越少。為了提高軟件系統(tǒng)應(yīng)對變更的能力、提高代碼的重用率、減少因變更而花費(fèi)的變更成本,在進(jìn)行系統(tǒng)設(shè)計時應(yīng)盡量降低模塊之間的耦合度,使各個模塊相對獨(dú)立。這樣即使一個模塊發(fā)生了變更,也不會對其他的模塊產(chǎn)生較大的影響。

      以學(xué)生信息管理系統(tǒng)為例,學(xué)生類和班級類是針對學(xué)生和班級這兩個業(yè)務(wù)實(shí)體的實(shí)體類。從低耦合的原則上講它們之間應(yīng)相對獨(dú)立,不產(chǎn)生過多的交互。學(xué)生類提供學(xué)生信息相關(guān)的操作;班級類提供班級信息相關(guān)的服務(wù)。如圖1所示:

      學(xué)生類Student中包含了與學(xué)生這個業(yè)務(wù)實(shí)體相關(guān)的屬性和操作,如學(xué)號、姓名、班級、住址、手機(jī)號、添加學(xué)生信息、修改學(xué)生信息、刪除學(xué)生信息、查詢學(xué)生信息等。通常一個學(xué)生只屬于一個班級,為此在Student類中包含了一個Classes類型的屬性。實(shí)現(xiàn)了Student類對Classes類的多對一關(guān)聯(lián)。此外Student類中還包含了通過班級號查詢學(xué)生的操作。雖然該操作以學(xué)號作為參數(shù),但其主要功能是實(shí)現(xiàn)學(xué)生的查詢。遵循低耦合的原則,該操作應(yīng)該放在Student類中,而不是Classes類。

      從分層的角度上講,同樣需要遵循低耦合的原則。如圖2所示:

      對于學(xué)生信息管理系統(tǒng)來說,可以采用標(biāo)準(zhǔn)的三層架構(gòu),即UI層、實(shí)體層、數(shù)據(jù)訪問層(DAL)。其中UI層負(fù)責(zé)用戶交互;實(shí)體層啟到了承上啟下的作用。既對UI層提供功能上的支持,又要調(diào)用數(shù)據(jù)訪問層(DAL),實(shí)現(xiàn)業(yè)務(wù)實(shí)體到關(guān)系表的映射;數(shù)據(jù)訪問層(DAL)則提供了數(shù)據(jù)持久化的相關(guān)操作。

      本著低耦合的原則,層與層之間僅僅是向下依賴的,即UI層依賴于實(shí)體層,實(shí)體層依賴于數(shù)據(jù)訪問層(DAL)。隔層之間(UI層與數(shù)據(jù)訪問層(DAL))是不可見的。也就是說,UI層不會用到數(shù)據(jù)訪問層(DAL)中的任何成員。這樣就大大降低了層與層之間的耦合度,提高了系統(tǒng)應(yīng)對變更的能力。舉個例子:假設(shè)原有學(xué)生信息管理系統(tǒng)為C/S結(jié)構(gòu),出于部屬方便的考慮,用戶要求將原系統(tǒng)改為B/S結(jié)構(gòu)?;跇?biāo)準(zhǔn)三層架構(gòu)的學(xué)生信息管理系統(tǒng)只需將原有的UI層替換為web項目即可。實(shí)體層、數(shù)據(jù)訪問層(DAL)保持不變。

      “低耦合”可以總結(jié)為“獨(dú)”。也就是說在設(shè)計和開發(fā)的過程中,要保持類與類之間,層與層之間的相對獨(dú)立,不產(chǎn)生多余的關(guān)系。

      2 內(nèi)聚

      所謂的內(nèi)聚指的是一個模塊各個成員之間的關(guān)聯(lián)程度。內(nèi)聚性越高說明模塊內(nèi)各個成員關(guān)系越緊密,該模塊的重用性越強(qiáng)。內(nèi)聚按緊密程度從低到高排列,依次為包括:偶然內(nèi)聚、邏輯內(nèi)聚、時間內(nèi)聚、過程內(nèi)聚、通信內(nèi)聚、信息內(nèi)聚、功能內(nèi)聚。

      偶然內(nèi)聚:因?yàn)榕既辉虺霈F(xiàn)在一個模塊中的成員關(guān)系。可以說各個成員之間毫無關(guān)系,內(nèi)聚性最低。例如各個系統(tǒng)中都包含的工具類。工具類成員通常有加、解密,生成隨機(jī)的校驗(yàn)碼等操作。

      邏輯內(nèi)聚:指的是同一個模塊中的成員邏輯上相關(guān),但功能上并無關(guān)聯(lián)。

      時間內(nèi)聚:因?yàn)闀r間因素使一組成員關(guān)聯(lián)在一起。例如需要同一時間進(jìn)行數(shù)據(jù)同步。

      通信內(nèi)聚:因?qū)ν粩?shù)據(jù)集操作或生成同一數(shù)據(jù)集而關(guān)聯(lián)在一個模塊內(nèi)的成員。

      順序內(nèi)聚:為順序完成一個任務(wù)一組成員被放置在一個模塊中,一個成員的輸出作為另一個成員的輸入。

      過程內(nèi)聚:因在一個過程中被先后調(diào)用的操作被放置在一個模塊中。

      信息內(nèi)聚:基于同一個數(shù)據(jù)的一組成員被放置在一個模塊中。

      功能內(nèi)聚:為完成單一功能,一組成員必須出現(xiàn)在一個模塊中。功能內(nèi)聚是一個功能專一、獨(dú)立性強(qiáng)、內(nèi)部結(jié)構(gòu)緊密的內(nèi)聚類型,是最理想的內(nèi)聚。例如:Student類包含了學(xué)生相關(guān)的全部成員。各個成員只為實(shí)現(xiàn)學(xué)生信息的增刪改查提供支持。

      “高內(nèi)聚”可以總結(jié)為“緊”,即模塊內(nèi)部各成員之間關(guān)系緊密,功能專一。

      3 結(jié)束語

      “低耦合、高內(nèi)聚”是在進(jìn)行系統(tǒng)設(shè)計、開發(fā)過程中應(yīng)該保持的原則。不同的開發(fā)人員因項目經(jīng)驗(yàn)不同、對面向?qū)ο缶幊痰睦斫獠煌鞑幌嗤?。要充分理解這六個字還需要在項目實(shí)戰(zhàn)中逐步的去理解,需要一個由量變到質(zhì)變的過程。

      參考文獻(xiàn):

      [1]梁立新.項目實(shí)踐精解·ASP.NET應(yīng)用開發(fā):基于ASP.NET?C#和ADO.NET的三層架構(gòu)案例分析[M].北京:電子工業(yè)出版社,2010.

      [2]Matthew MacDonald.ASP.NET高級程序設(shè)計[M].北京:人民郵電出版社,2011.

      [3]Christian Thilmany..NET模式:架構(gòu)設(shè)計與過程[M].北京:中國電力出版社,2005.

      [4]Jeffrey Richter.Microsoft.NET框架程序設(shè)計[M].北京:清華大學(xué)出版社,2003.

      [5]Martin L.Shoemaker.UML實(shí)戰(zhàn)教程[M].北京:清華大學(xué)出版社,2006.

      作者簡介:趙磊(1981-),男,河北人,軟件系副主任,講師,碩士,研究方向:軟件技術(shù)。

      作者單位:天津電子信息職業(yè)技術(shù)學(xué)院,天津 300312

      苍山县| 顺昌县| 读书| 屯留县| 邵阳县| 青州市| 文山县| 花垣县| 邵阳市| 湖南省| 嘉峪关市| 古丈县| 九江县| 周至县| 昌吉市| 昭苏县| 绵竹市| 康保县| 普兰店市| 隆安县| 大悟县| 曲阜市| 临夏县| 竹山县| 堆龙德庆县| 九台市| 华亭县| 惠州市| 富源县| 临安市| 镇康县| 屏东县| 武强县| 米易县| 沾化县| 蒙自县| 新安县| 新营市| 大埔县| 武定县| 宁陕县|