ch16-設(shè)計原則ppt

ch16-設(shè)計原則ppt

ID:41190932

大?。?.57 MB

頁數(shù):56頁

時間:2019-08-18

ch16-設(shè)計原則ppt_第1頁
ch16-設(shè)計原則ppt_第2頁
ch16-設(shè)計原則ppt_第3頁
ch16-設(shè)計原則ppt_第4頁
ch16-設(shè)計原則ppt_第5頁
資源描述:

《ch16-設(shè)計原則ppt》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫

1、第十六章設(shè)計原則課前指引本章介紹基本的物件導(dǎo)向設(shè)計原則,文中從類別以及類別庫的觀點出發(fā),探討在設(shè)計上我們必須遵守的原則。這些原則幫助我們在設(shè)計一個可再利用,並且容易維護的系統(tǒng)有很大的助益。另外,我們也將利用這些設(shè)計原則來檢視書中範(fàn)例計畫設(shè)計的正確性。章節(jié)大綱備註:可依進度點選小節(jié)章首示意圖16-1物件導(dǎo)向設(shè)計原則16-3類別庫架構(gòu)設(shè)計原則16-2類別設(shè)計原則章首示意圖16-1物件導(dǎo)向設(shè)計原則物件導(dǎo)向設(shè)計(Object-OrientedDesign)跟傳統(tǒng)的結(jié)構(gòu)化設(shè)計的最大不同點在於:結(jié)構(gòu)化設(shè)計以功能分割為主要的活動,而物件導(dǎo)向設(shè)計的主要活動在於發(fā)現(xiàn)參與物件、物件們之間的

2、互動過程,以及其如何合作以達成某一特定目的。16-1物件導(dǎo)向設(shè)計原則物件導(dǎo)向語言利用封裝(Encapsulation)的機制,將資料與操作結(jié)合起來,形成一體,讓物件自行管理其組成的資料以及所需提供的功能;接著再利用多型(Polymorphism)、抽象化(Abstraction)、介面(Interface)以及繼承(Inheritance)等機制,以降低物件彼此之間的的相依耦合度。16-1物件導(dǎo)向設(shè)計原則上述這些物件導(dǎo)向語言所具有的特質(zhì)帶來了許多的益處包括有:提升設(shè)計的再使用性(Reusability)、提高程式的維護性(Maintainability)等等。了解前面所

3、述之物件導(dǎo)向的概念固然重要,可是,這些概念本身並沒有提供我們在從事物件導(dǎo)向設(shè)計時的所需要的指引或是方針,讓我們能夠用來達成前述的益處。16-1物件導(dǎo)向設(shè)計原則那麼,在物件導(dǎo)向的世界中是否有一些原則我們可以遵循,讓我們在設(shè)計上能夠達成高度的再使用的特性、降低物件或是模組之間的相依程度、以及提升系統(tǒng)的維護性呢?對於這個問題的答案是肯定的。物件導(dǎo)向設(shè)計原則可以分為兩大類:一類是類別的設(shè)計原則,另外一類是類別庫的設(shè)計原則。16-2類別設(shè)計原則開閉原則(TheOpenClosedPrinciple,OCP)-Amoduleshouldbeopenforextensionbutcl

4、osedformodification.[BertrandMeyer,1988]元件能夠在不需要被更改的情形下被擴充。16-2類別設(shè)計原則開閉原則也就是說不要更改程式碼,卻能夠增加程式的功能。直覺上來想,增加程式的功能不也就一定要更改到程式?開閉原則在乍聽之下,是不是有點矛盾?在設(shè)計上要達到OCP的關(guān)鍵在於利用抽象化(Abstraction),而抽象化是物件導(dǎo)向語言所具有的特性之一。從實作技術(shù)方面的角度來看,要達到OCP原則,我們可以利用抽象類別(AbstractClass)或是介面(Interface)這兩個概念來達成。16-2類別設(shè)計原則開閉原則範(fàn)例說明:讓我們用以

5、下的例子來看看開閉原則如何提升程式的擴展性。在這個例子中我們定義了兩個類別:人(Person)以及交通工具(Vehicle)。01publicclassPerson{02publicVehiclevehicle;03publicvoiddrive(){04if(vehicle.getVehicleType()==VehicleType.BOAT){05driveBoat();06}elseif(vehicle.getVehicleType()==VehicleType.CAR){07driveCar();08}09}10publicvoiddriveBoat(){11}

6、12publicvoiddriveCar(){13}16-2類別設(shè)計原則開閉原則範(fàn)例說明14}1516publicclassVehicle{17publicintvehicleType;18publicintgetVehicleType(){19returnvehicleType;20}21publicvoidsetVehicleType(inti){22vehicleType=i;23}24}2526publicclassVehicleType{27publicintCAR=1;28publicintBOAT=2;29}16-2類別設(shè)計原則開閉原則範(fàn)例說明從以上的程式

7、碼中,我們知道一個人可以擁有一項交通工具,並且人可以透過drive()這個方法來駕駛其所擁有的交通工具;一個人所能擁有的交通工具種類可以是車子(Car)或是船(Boat)。因此,在drive()方法中,我們必須要判別交通工具的型態(tài)為何,然後再呼叫所屬的特定方法。如果把上述的程式碼轉(zhuǎn)換成UML圖形,那麼這兩個類別的靜態(tài)結(jié)構(gòu)可以表示成如圖16.1所示。16-2類別設(shè)計原則開閉原則範(fàn)例說明01publicclassPerson{02publicVehiclevehicle;0304publicvoiddrive(){05vehicle.driv

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。