ch16-設計原則ppt

ch16-設計原則ppt

ID:41190932

大小:2.57 MB

页数:56页

时间:2019-08-18

ch16-設計原則ppt_第1页
ch16-設計原則ppt_第2页
ch16-設計原則ppt_第3页
ch16-設計原則ppt_第4页
ch16-設計原則ppt_第5页
资源描述:

《ch16-設計原則ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

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

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

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

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

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類別設計原則開閉原則範例說明14}1516publicclassVehicle{17publicintvehicleType;18publicintgetVehicleType(){19returnvehicleType;20}21publicvoidsetVehicleType(inti){22vehicleType=i;23}24}2526publicclassVehicleType{27publicintCAR=1;28publicintBOAT=2;29}16-2類別設計原則開閉原則範例說明從以上的程式

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

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。