《軟件設計原則》PPT課件.ppt_第1頁
《軟件設計原則》PPT課件.ppt_第2頁
《軟件設計原則》PPT課件.ppt_第3頁
《軟件設計原則》PPT課件.ppt_第4頁
《軟件設計原則》PPT課件.ppt_第5頁
已閱讀5頁,還剩106頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、軟件設置修訂原則、物件導向設置修訂原則、維護性復用性開閉原則接口抽象類里氏替換原則依據(jù)接口隔離原則合成/集約復用原則,軟件維護性設置修訂,一個維護中的軟件是不斷播放的軟件。 對需求的修改、過程、接口等的詳細更改、修改的積累會導致傳統(tǒng)軟件結構的混亂,軟件經(jīng)常腐敗(可維護性差、可升級性差)。 系統(tǒng)設置修訂者:可辯解為用戶需求變化太大的軟件腐敗:太硬的rigidity太脆弱的fragility再利用率低immobility黏性系數(shù)高的viscosity、軟件可維護性設置修訂、軟件腐敗:太硬的rigidity是新功能卷入太多,循環(huán)長度過于脆弱fragility在一個地方修正的復用率低的immobili

2、ty 1,a模塊想復用,但a卷入BCDE,卷入太多,不復用2 .不同模塊中的重復功能、重復實現(xiàn)、問題黏性系數(shù)高的viscosity 1,修正,維持原來的設定修正2 .如果修正破壞原來的設定修正,總是2的實現(xiàn)比1容易,黏性系數(shù)過高就會使軟件程序員采用錯誤的方案,并且軟件漸漸腐爛,軟件的維護性設定修正, 可維護性設置修訂目標的可擴展性extensibility添加新模塊而不影響傳統(tǒng)模塊的靈活性flexibility修改一個模塊而不影響其他模塊的插入性pluggability可以輕松刪除一個模塊、物件導向設定修訂原則、維護性復用性開閉原則接口抽象類里氏置換原則接口隔離原則取決于合成/聚合多重原則分割

3、規(guī)則,軟件復用性(reuse )設定修訂1、再利用的重要性: 1、高效率2 .高軟件質(zhì)量3 .維護性好。 傳統(tǒng)的多路復用1、復制、剪切查詢密碼2、算法的多路復用3、數(shù)據(jù)結構的多路復用傳統(tǒng)的再利用往往損害軟件的維護性。 如果AB共享c,而a修改c,則b不行政許可。 軟件復用性(reuse )設定修訂2、物件導向設定修訂的再利用:數(shù)據(jù)的抽象化、封裝、繼承、多態(tài)。 多重化的焦點是包含宏命令商業(yè)邏輯的抽象的水平。不限于函數(shù)和算法。 可維護性的薩通訊端口可擴展性extensibility; 包裝、繼承、多態(tài)通過開關原則、里氏置換原則、依存逆轉原則、組合/集約復用來保證靈活性flexibility的復用、

4、相對獨立,與其他模塊相松耦合定。 修改后,此模塊不會傳遞給其他模塊。 用開關原則、德米特里奧定律、接口隔離原則保證。 如果可插入性pluggability被復用,則新的類將替換為舊的類,從而容易實現(xiàn)。 根據(jù)開關原則、里氏置換原則、組合/聚合服用原則、依存逆轉原則進行保證。物件導向設定修訂原則、維護性復用性開閉原則接口類里氏置換原則接口隔離原則合成/匯集復用原則分割原則、開閉原則1、開閉原則OCP : open-closed principle ):1個軟件實體必須向擴展開放,向修正封閉修改模塊時,請不要修改地進行擴展,即不要修改原代碼地變更該模塊的動作。 增加查詢密碼實例滿足開閉原則設定修訂的

5、優(yōu)勢: 1、適應性和靈活性2 .實現(xiàn)穩(wěn)定性和連續(xù)性實現(xiàn)這一原則是實現(xiàn)了更高層次、復用、易維護的系統(tǒng)。開閉原則2、牛鼻子點:抽象設定修訂:定義系統(tǒng)一次丟失、不修改的抽象設定修訂。 使這個設定修正成為可能的無限行為已在實現(xiàn)層實現(xiàn)。 在JAVA中,抽象JAVA類或JAVA接口將所有具體類必須提供的方法的特征定義為系統(tǒng)設置修訂的抽象層。 這個抽象層預見了所有可能的擴展。 因此,擴展不需要修改抽象層。 在開關原則中,滿足了“關閉修正”的原則。另外,從抽象層導出的具體新類可以改變系統(tǒng)的動作或開放給擴展。開關原則3、要點:抽象化但難以歸納的汽車定義:根據(jù)國家最新標準GB/T 3730.12001定義的汽車:

6、由動力驅動的、具有4個以上車輪的非軌道裝載車輛,主要用于牽引運輸人員和貨運商及貨物的車輛特殊用途。 此術語包括: a )與電力線相關的車輛,如無軌電車;b )三輪車,整車維修質(zhì)量超過400公斤。 電力動車組是汽車,馬拉四輪車怎么樣?根據(jù)美國汽車工程師學會標準SAEJ 687C的汽車定義,是由自己的動力驅動,裝載駕駛裝置,能夠在固定軌道以外的道路和地區(qū)運送客船和牽引車車輛的車輛。 雙輪摩托車是汽車嗎?根據(jù)日本工業(yè)標準JISK 0101,汽車的定義是,自己搭載發(fā)動機和操縱機構,不依靠固定軌道和架線,可以在陸上行駛的車輛。關于開閉策略3、具有可變性的軟件包策略,考慮在設定修正中可能發(fā)生什么變化,將其

7、打包,考慮可能發(fā)生什么以使該變化不被重新設定修正。 也就是說,1 .變量必須封裝在一個對象中,而不是分散在查詢密碼的許多犄角旮旯中。 同一可變性不同的圖像表示同一繼承層次中的特定子類。 繼承應該被看作是軟件包變化的方法。 2 .一方的可變性與另一方的可變性混合使不得。 類圖的繼承結構通常不超過兩個級別。 否則,是否意味著兩種不同的可變性混合存在?開關策略4、策略模式和開關策略模式:如果有一系列的算法,是否可以封裝和更換每個算法?來自可變性的打包原則。 是否要查看策略模型? 開閉原則和java日歷表設定修訂? 怎么解決?物件導向設置修訂原則、維護性復用性開關原則接口抽象類替換原則接口隔離原則合成

8、/匯集復用原則中間規(guī)則、JAVA語言接口、接口:電源插座、可微波爐、可筆記本電源。 如果可以動態(tài)刪除一個組件,然后將其替換為另一個組件,則該組件是可插入的組件。 插座,即接口。 電氣設備能夠插入部件的可插入部件的關鍵是存在共同的接口。 接口是實現(xiàn)組件可插入性的重要接口的定義。 接口是來自系統(tǒng)中不斷出現(xiàn)的方法的方法特征的集合。 JAVA語言的接口,定義接口:“接口”(interface )是來自系統(tǒng)中不斷出現(xiàn)的方法的方法特征的集合。 接口只是方法的特征,沒有方法的實現(xiàn),因此在不同的地方實現(xiàn)這些個的方法時,可以有完全不同的動作。 接口,與類最重要的區(qū)別:接口只描述方法的特征,不提供方法的實現(xiàn)。 類

9、不僅賦予方法的特征,還賦予方法的實現(xiàn)。 接口分割方法的特征和方法的實現(xiàn)。 說唱樂接口、類似角色和與該角色相關的操作和屬性,實現(xiàn)該接口的類就是扮演該角色的演員。 一個角色可以由不同的演員扮演不同的演員之間,除了可以扮演共同的角色以外,不要求任何共同點。 如果沒有JAVA語言的接口,接口的語義接口:如果對象相互關聯(lián),則通常需要利用其他對象的行為來完成一項任務。 如果將對其他對象行為的調(diào)用作為硬查詢密碼寫入類,則插入性幾乎為零。 通過聲明類的繼承、抽象超類、子類的行為,具體的類繼承了超類,以不同的方式實現(xiàn)了超類所聲明的行為。 在客戶端,可以動態(tài)決定使用哪個特定的子類,具有一定的插入性。 但是,Jav

10、a是單一繼承語言,一個類只能繼承一個超類。對于子類,不能添加新的超類功能。 是子類的祖父類,除非設置了超類。 然而,當子類的具體功能如上所述地改變時,結構經(jīng)常被廣泛地調(diào)整。 JAVA語言的接口,接口是插入性的保證關聯(lián):一個對象需要完成一個塔斯克,知道其他對象的方法需要調(diào)用,對象和其他對象的關聯(lián)稱為關聯(lián)。 關聯(lián)的可插入性:關聯(lián),調(diào)用類中的方法。 Integer a=String.ToInteger(“12”)關聯(lián)是接口,而不是特定的類。 實現(xiàn)接口的所有類都可以滿足要求。 這使您可以將此關聯(lián)從一個特定類動態(tài)轉換為另一個特定類調(diào)用的可插入調(diào)用。 void mothed1(String a )一個對象

11、免不得,是需要調(diào)用另一個對象的方法。 對于接口,此調(diào)用可以調(diào)用實現(xiàn)該接口的特定類。 您可以完全動態(tài)地確定當前對象調(diào)用哪個特定類的實例。 JAVA語言的接口,JAVA的類型控制JAVA接口和抽象類,宣告新的類型: JAVA設計大師主要使用JAVA接口和抽象類,將軟件單位和內(nèi)部和外部結合,實現(xiàn)松耦合。 也就是說,必須使用JAVA接口和抽象類而不是特定類來聲明變量的類型、聲明殘奧元類型、聲明方法的門類型和強制類型轉換數(shù)據(jù)。 更好的方法是只使用接口,而不使用抽象類。 理想情況下,特定的java類只需要實現(xiàn)在java接口和抽象類中聲明的方法,而不應該提供多元化的方法。物件導向設置修改原則、可維護性復用性

12、開閉策略接口抽象類策略反轉策略接口隔離策略合成/聚合復用策略中值規(guī)則、抽象類1、JAVA兩種:抽象類:不能斯坦共和國化、不能生成對象、可以實現(xiàn)具體方法。 一定是用于繼承的特定類。 可以斯坦共和國化。 特定的類不用于繼承。 抽象類和子類的關系實際上是數(shù)字大板塊方法的應用。 在抽象類和具體類的樹結構中,枝節(jié)點是抽象類,葉結點是具體類。 查詢密碼代碼重構添加老虎鉗(如果b是a的子類,則建構c、抽象類或接口)、抽象類2和抽象類必須盡可能多地移動從抽象類到多個特定類的繼承關系中的公共查詢密碼。 這樣可以提供查詢密碼的再利用率。 由于查詢密碼出現(xiàn)在公共超類中,而不是子類中,因此,如果更改查詢密碼,程序設計

13、師只需修改一個位置,即可提高計程儀柱的可維護性。 抽象類包含盡可能少的數(shù)據(jù),消耗內(nèi)存,復用率不高,所以將數(shù)據(jù)盡可能向下移動。 也就是說,盡量放在特定的類而不是超類上。 抽象類3不是針對抽象計程儀編程的核心思想的抽象編碼,主要是針對超類的具體類的計程儀編程。 重要的是解決查詢密碼復用的問題。 為了正確使用繼承繼承,類分為類對接口實現(xiàn)和接口繼承兩類,類繼承類并實現(xiàn)繼承。 實現(xiàn)繼承,容易被濫用。 抽象類盡量使用合成而不是繼承來實現(xiàn)復用的目的。 以“組合/聚合復用原則”為參考,例如抽象類4,繼承復用的使用情況繼承表示“一般化、特殊化”關系,抽象的子類表示一般,派生的具體類表示特殊。 Peter Coa

14、d條件: 1,子類是超類的特殊類,而不是超類的角色,以允許使用抽象類。 Has-A關系必須使用聚合關系Is-A關系符合繼承關系。 Has-A :一個班是另一個班的角色-黑社會的弟弟,大老板的角色,可以交換:人,黑社會的弟弟。 有一次,也可以制作大老板。 Is-A :一個班是另一個班的一種。 鳥-麻雀,白天鵝的種類是不能交換的:鳥,有的是麻雀,有的是白天鵝。2 .如果需要將子類替換為其他類的子類,則絕對不會。 3 .子類有擴充超類的責任,沒有替換超類、取消注冊的責任。 如果子類需要大量替換超類的行為,則不適用。 4 .只能從分類學的角度使用繼承,不能從工具類中繼承,面向對象的設定修改原則、維護性

15、復用性開關原則接口抽象類里氏替換原則依賴于反轉原則接口隔離原則合成/集約復用原則德米特里法則,里氏替換原則1, 孫悟空全蓋偏西游記第三回:四海千山都拱橋伏九幽十類被除名孫悟空由陰司牽著,大受打擊,十個冥王忙說錯,悟空匿名了。 悟空親自審查,注上孫悟空的名字,直到它的靈魂字達到一千三百五十號,是天產(chǎn)的石猿,因此壽三百三十二歲,善終。 悟空說:“我也不記得壽數(shù)幾何,只用名字就行,把筆拿來! “那位法官拿著忙不迭筆,把濃墨裝滿了。 悟空曾帶著記賬本來過猴子,但有名的都查過了。 螟蛾下冊道:“算了,算了! 今天不適合你! 中所述情節(jié),對概念設計中的量體執(zhí)行面積分析。 的雙曲馀弦值。 的雙曲馀弦值。 的

16、雙曲馀弦值。 的雙曲馀弦值。 激烈醒來是南柯一夢。 好不容易伸了伸腰,只聽見四健將和眾猴在高聲地叫,“國王,你吃了多少酒,今晚睡了還不醒? ”“這是一個很好的例子?!?悟空說:“醒來還小,可是我夢見兩個人來這里勾住我,就把我?guī)У接内さ某情T外,才醒來。 我出示神通,向森羅殿高聲地嚷嚷,和那個十殿閻王吵架,看了我們的生死簿,有我等的名字,都由我檢查,那個仆人沒有管轄。 ”“這是一個很好的例子?!?猴子們低頭致謝。 從此,山猿沒有很多老人,因為陰司無名。 美麗的猴王說了以前的事,四健報告了各個孔妖王,來慶祝。 不到幾天,就有六兄弟姐妹來慶祝,聽賣名,一切歡樂,每天的聚會都沒問題。 里氏置換的原則1、

17、孫悟空的全蓋偏美猴王將“猿”這個名字全部刪除,即猴適用,石猴、肉猴全部適用。 或者,應用基類并應用所有子類。 這是地震震級置換的原則。地震震級替換原則1、地震震級替換原則:只要一個軟件實體使用一個子類,則必須將其應用于該子類,并且無法知道子類對象和子類對象之間的差異。 兩個類、一個base類、一個derived類和derived類是base類的子類。 如果b是基類對象,則d是子類對象。 如果定義了方法(base b ),則必須為方法(d ); 相反,置換不成立。 即,如果是method2(derived d ),則method2(b )同樣不成立。 置換地震震級的原則是繼承多重化的基礎。 只有

18、當派生類可以替換子類并且不影響軟件用戶針織面料的功能時,才能實際重用基類。里氏置換原則1、基于JAVA的里氏置換原則的支持:基礎類Base、對象b; 子類Sub、對象d; 一般而言,如果有method(Base b ),則存在method(d )問題:基類Base,實現(xiàn)函數(shù)public run (); 函數(shù)private run (); 分析:里氏置換原則的要求是,只要是基類適用的場所,子類一定適用。 因此,子類必須具有基類的所有接口。 可以做得更寬,但不能做得更少。 如果method調(diào)用b的公共run (),也應該可以調(diào)用d的run ()。 但是,如果子run被定義為私有,則不能調(diào)用。 在這種情況下,會發(fā)生錯誤。 因此,從地震震級替換原理的觀點來看,將Sub中的run定義為私有類型是不可

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論