|
幾乎所有3D軟件的二次開(kāi)發(fā),基本上都是基于面向?qū)ο缶幊蹋闱宄讉€(gè)基本概念對(duì)理解程序是非常重要的:6 `1 ~# H2 J! f6 h% ^
1 T4 y8 G) q3 n5 B
面向?qū)ο蟮幕靖拍?br />
* }" _. [$ B; `8 N; x對(duì)象:對(duì)象是要研究的任何事物。從一本書(shū)到一家圖書(shū)館,單的整數(shù)到整數(shù)列龐
$ T6 c! E2 Q- R7 ]" T& D大的數(shù)據(jù)庫(kù)、極其復(fù)雜的自動(dòng)化工廠、航天飛機(jī)都可看作對(duì)象,它不僅能表示有形的實(shí)體,也能表示無(wú)形的(抽象的)規(guī)則、計(jì)劃或事件。對(duì)象由數(shù)據(jù)(描述事物的屬性)和作用于數(shù)據(jù)的操作(體現(xiàn)事物的行為)構(gòu)成一獨(dú)立整體。從程序設(shè)計(jì)者來(lái)看,對(duì)象是一個(gè)程序模塊,從用戶來(lái)看,對(duì)象為他們提供所希望的行為。在對(duì)內(nèi)的操作通常稱為方法。* y' V5 F0 u* ~1 E- T) ]
對(duì)象的狀態(tài)用數(shù)據(jù)來(lái)表示稱為屬性
; M1 C; O; ?0 b) l G對(duì)象的行為用代碼來(lái)實(shí)現(xiàn)稱為方法+ h* ]4 C8 M/ |5 m5 _3 L$ c* Y
類:類是對(duì)象的模板。即類是對(duì)一組有相同數(shù)據(jù)和相同操作的對(duì)象的定義,一個(gè)類所包含的方法和數(shù)據(jù)描述一組對(duì)象的共同屬性和行為。類是在對(duì)象之上的抽象,對(duì)象則是類的具體化,是類的實(shí)例。類可有其子類,也可有其它類,形成類層次結(jié)構(gòu)。0 `3 R& {' |+ r/ V( Q, U$ \; Y
類與對(duì)象的關(guān)系:例如設(shè)計(jì)圖紙就是類,依據(jù)圖紙制造的零件就是對(duì)象
$ T& U7 g( S i* \/ k
, j$ Y0 X% s" ] r9 N) \面向?qū)ο缶幊逃腥筇匦裕庋b、繼承和多態(tài)。
& Q; V9 W4 X* C* O1 T1. 封裝封裝是把客觀事物封裝成抽象的類,并隱藏實(shí)現(xiàn)細(xì)節(jié),使得代碼模塊化。比如,我們可以把“汽車”這個(gè)客觀事物封裝成一個(gè)類,這個(gè)類有顏色、型號(hào)等屬性,有啟動(dòng)、加速、剎車等方法,而這些屬性和方法的具體實(shí)現(xiàn)則被隱藏起來(lái),使用者只需要知道這個(gè)類有哪些屬性和方法,不需要知道這些方法是如何實(shí)現(xiàn)的。
3 o! [4 K2 u! _2. 繼承繼承是面向?qū)ο缶幊痰牧硪粋€(gè)重要特性,它提供了一種無(wú)需重新編寫,使用現(xiàn)有類的所有功能并進(jìn)行擴(kuò)展的能力。比如,我們可以定義一個(gè)“電動(dòng)車”類,它繼承了“汽車”類,就自動(dòng)擁有了“汽車”類的所有屬性和方法,比如顏色、型號(hào)等屬性,啟動(dòng)、加速、剎車等方法,然后我們還可以在“電動(dòng)車”類上增加一些新的屬性和方法,比如電池容量、充電方法等。# p, z% D: y- _/ Y
3. 多態(tài)多態(tài)是指同一操作作用于不同的對(duì)象,可以有不同的解釋,產(chǎn)生不同的執(zhí)行結(jié)果。比如,我們定義了一個(gè)“汽車”類,它有一個(gè)“啟動(dòng)”方法,然后我們又定義了一個(gè)“電動(dòng)車”類,它繼承了“汽車”類,也有一個(gè)“啟動(dòng)”方法,但是“電動(dòng)車”類的“啟動(dòng)”方法的實(shí)現(xiàn)可能與“汽車”類的不同,這就是多態(tài)。
5 L0 u8 E& w+ b; ?2 O
% Y9 O# x0 Q7 F4 j. F: N+ q2 d" a; K. U# _- u1 U) L+ x
面向?qū)ο缶幊痰睦砟?/strong>面向?qū)ο缶幊逃袃蓚€(gè)主要的理念,基于接口編程和組合優(yōu)于繼承。
# j* r+ W3 l) |/ J. }1. 基于接口編程基于接口編程的理念是,使用者不需要知道數(shù)據(jù)類型、結(jié)構(gòu)和算法的細(xì)節(jié),只需要知道調(diào)用接口能夠?qū)崿F(xiàn)功能。這就像我們使用電視遙控器一樣,我們不需要知道遙控器內(nèi)部的電路設(shè)計(jì)和工作原理,只需要知道按哪個(gè)按鈕可以打開(kāi)電視,按哪個(gè)按鈕可以調(diào)節(jié)音量。. w/ s X+ z9 e4 p1 `( V
2. 組合優(yōu)于繼承盡管繼承可以使我們更容易地重用和擴(kuò)展代碼,但是如果繼承層次過(guò)深、繼承關(guān)系過(guò)于復(fù)雜,就會(huì)嚴(yán)重影響代碼的可讀性和可維護(hù)性。比如我們修改了基類,就可能影響到繼承它的子類,這會(huì)增加迭代的風(fēng)險(xiǎn)。因此,我們更傾向于使用組合而不是繼承。比如,我們可以定義一個(gè)“電動(dòng)車”類,它包含“電池系統(tǒng)”、“制動(dòng)系統(tǒng)”、“車身系統(tǒng)”、“轉(zhuǎn)向系統(tǒng)”等組件,而不是繼承“汽車”類。
. L* g* k9 Q0 L* C& e
# z0 `9 D q, U% B |
評(píng)分
-
查看全部評(píng)分
|