版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
面向?qū)ο蟪绦蛟O(shè)計(jì)面向?qū)ο蟮奶攸c(diǎn)主要概括為抽象性、繼承性、多態(tài)性和封裝性。本章我們將圍繞這4個(gè)特點(diǎn)講解面向?qū)ο蟪绦蛟O(shè)計(jì)(OOP)的基本方法。8.1 對(duì)象8.2 繼承8.3 多態(tài)8.4 接口8.5 本章小結(jié)面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第1頁(yè)。8.1 對(duì)象8.1.1 理解對(duì)象 8.1.2 使用對(duì)象 8.1.3 對(duì)象之間的關(guān)系面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第2頁(yè)。8.1.1 理解對(duì)象面向?qū)ο蟪绦蛟O(shè)計(jì)中的對(duì)象與客觀世界中的對(duì)象并不是完全相同的概念,他們既有聯(lián)系又有區(qū)別。所以深刻理解編程中的對(duì)象本質(zhì)將有利于實(shí)踐面向?qū)ο缶幊毯烷_(kāi)發(fā)。單純的結(jié)構(gòu)化思維方式對(duì)客觀世界的反映不太自然和直接,不利于解決關(guān)系復(fù)雜的問(wèn)題。因此通過(guò)理解對(duì)象的本質(zhì),將有利于徹底地改變這種思維方式,以適應(yīng)面向?qū)ο蟮木幊獭C嫦驅(qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第3頁(yè)。8.1.1 理解對(duì)象從下面幾個(gè)方面來(lái)理解OOP中對(duì)象的本質(zhì):對(duì)象可以視為一組相關(guān)的操作代碼和數(shù)據(jù)的組合對(duì)象是類的實(shí)例對(duì)象可以互相協(xié)作,共同完成任務(wù)通過(guò)繼承、組合或封裝等方式可以產(chǎn)成新的對(duì)象對(duì)象根據(jù)特定的意義和用途有不同的劃分方法面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第4頁(yè)。8.1.2 使用對(duì)象1. 一個(gè)面向?qū)ο蟮墓麍@系統(tǒng)一個(gè)果園系統(tǒng)的設(shè)計(jì)類圖面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第5頁(yè)。8.1.2 使用對(duì)象2. 對(duì)象的創(chuàng)建和銷毀(1) 對(duì)象的生命期 對(duì)象是通過(guò)類創(chuàng)建的,對(duì)象是類的動(dòng)態(tài)實(shí)例。每個(gè)對(duì)象都有生命期。一個(gè)對(duì)象按其生命期來(lái)分析,一般有三個(gè)階段,出生、活動(dòng)、死亡。而我們?cè)诰幊讨幸龅膶?duì)應(yīng)為:創(chuàng)建(初始化)、運(yùn)行、銷毀。面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第6頁(yè)。8.1.2 使用對(duì)象(2) 對(duì)象的構(gòu)造 通常,當(dāng)調(diào)用構(gòu)造函數(shù)時(shí),該函數(shù)返回一個(gè)新分配內(nèi)存并初始化了的類的實(shí)例。創(chuàng)建對(duì)象時(shí),構(gòu)造函數(shù)完成了以下工作:首先在堆中開(kāi)辟一塊區(qū)域用于存貯對(duì)象。然后對(duì)這塊區(qū)域進(jìn)行缺省初始化。執(zhí)行構(gòu)造函數(shù)中用戶編寫(xiě)的代碼。返回一個(gè)新分配好的并初始化了的實(shí)例對(duì)象。返回值的類型必須就是該類的類型。面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第7頁(yè)。8.1.2 使用對(duì)象(3) 對(duì)象的析構(gòu) 析構(gòu)函數(shù)的作用與構(gòu)造函數(shù)正好相反,它用于銷毀對(duì)象并指定銷毀對(duì)象時(shí)的動(dòng)作,通常是釋放對(duì)象所占用的內(nèi)存空間及相關(guān)的其它資源,比如打開(kāi)了文件、占用了數(shù)據(jù)庫(kù)連接。面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第8頁(yè)。8.1.2 使用對(duì)象3. 對(duì)象和對(duì)象變量(1) 值和引用 我們知道,從語(yǔ)義上講,對(duì)象是類的實(shí)例,類是創(chuàng)建對(duì)象的模板;從語(yǔ)言上講,對(duì)象是類這種數(shù)據(jù)類型的變量,對(duì)象在內(nèi)存中占有空間。(2) 對(duì)象變量是對(duì)象的一個(gè)引用 要使用對(duì)象,首先必須創(chuàng)建它們,并指定它們的初始狀態(tài),然后對(duì)對(duì)象施加方法。面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第9頁(yè)。8.1.3 對(duì)象之間的關(guān)系對(duì)象之間的關(guān)系有:合成關(guān)系(“has—a”)它是指新對(duì)象由已有的對(duì)象組合而成,或新對(duì)象包含有其他對(duì)象。繼承關(guān)系(“is—a”)用來(lái)表示對(duì)象的類之間所具有的泛化和特化關(guān)系。依賴關(guān)系(“use—a”)如果一個(gè)對(duì)象的方法操作了另一個(gè)對(duì)象,那么這個(gè)對(duì)象就依賴于另一個(gè)對(duì)象。面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第10頁(yè)。表達(dá)類關(guān)系的UML符號(hào)8.1.3 對(duì)象之間的關(guān)系面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第11頁(yè)。8.2 繼承8.2.1 使用繼承 8.2.2 繼承與合成面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第12頁(yè)。8.2.1 使用繼承
對(duì)象的繼承是一種在保持對(duì)象差異性的同時(shí)共享對(duì)象相似性的復(fù)用。它是源自類的泛化機(jī)制。這種抽象機(jī)制允許類之間共享代碼,大大減少了代碼長(zhǎng)度并且使軟件易于維護(hù)。對(duì)象通過(guò)繼承,保證了實(shí)現(xiàn)部分緊內(nèi)聚和松耦合的良好特性。面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第13頁(yè)。8.2.1 使用繼承1. 基類與派生類
基類派生類StudentGraduateStudentUndergraduateStudentShapeCircleTriangleRectangleVehicleCarTruckBicycleEmployeeManagerWorkerAccountCheckingAccountSavingsAccount基類與派生類的繼承示例繼承關(guān)系形成了樹(shù)狀的層次結(jié)構(gòu)。類和其派生類存在繼承關(guān)系。盡管類可以單獨(dú)存在,但一旦利用繼承機(jī)制使用該類,該類就會(huì)和其他類關(guān)聯(lián)起來(lái)。類要么成為基類,為其他類提供數(shù)據(jù)和行為;要么成為派生類,從其他類繼承數(shù)據(jù)和行為。
面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第14頁(yè)。8.2.1 使用繼承2. 繼承在果園系統(tǒng)中的使用
通過(guò)繼承擴(kuò)展水果類面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第15頁(yè)。8.2.2 繼承與合成
在面向?qū)ο蟪绦蛟O(shè)計(jì)中,通過(guò)合成或通過(guò)繼承都可以在不同的環(huán)境中重用已有的設(shè)計(jì)和實(shí)現(xiàn)。 繼承重用是通過(guò)擴(kuò)展一個(gè)已有對(duì)象的實(shí)現(xiàn)來(lái)得到新的功能,基類明顯地抽象并提取共同的屬性和方法,而派生類通過(guò)增加新的屬性和方法來(lái)擴(kuò)展基類的實(shí)現(xiàn)。由此可見(jiàn)繼承重用有以下優(yōu)點(diǎn):新的實(shí)現(xiàn)較為容易,因?yàn)榛惖拇蟛糠止δ芸梢酝ㄟ^(guò)繼承關(guān)系自動(dòng)進(jìn)入派生類。修改或擴(kuò)展繼承而來(lái)的實(shí)現(xiàn)較為容易面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第16頁(yè)。8.2.2 繼承與合成
繼承是一種類型的重用。初學(xué)面向?qū)ο蟮某绦騿T往往十分熱衷于繼承,好像繼承就是最好的重用手段。隨著時(shí)間的推移和開(kāi)發(fā)經(jīng)驗(yàn)的積累,你會(huì)逐漸認(rèn)識(shí)到了繼承關(guān)系有以下缺點(diǎn):繼承重用破壞封裝,因?yàn)槔^承將基類的實(shí)現(xiàn)細(xì)節(jié)暴露給派生類。如果基類的實(shí)現(xiàn)發(fā)生改變,那么派生類的實(shí)現(xiàn)也不得不發(fā)生改變。從基類繼承而來(lái)的實(shí)現(xiàn)是靜態(tài)的,只能在編譯期做出改變,而無(wú)法在運(yùn)行期發(fā)生改變,因此沒(méi)有足夠的靈活性。面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第17頁(yè)。8.2.2 繼承與合成
把繼承關(guān)系重構(gòu)為合成關(guān)系將系統(tǒng)對(duì)變化的適應(yīng)力從靜態(tài)提升到動(dòng)態(tài),提高了設(shè)計(jì)的靈活性和代碼的重用性。由于合成可以將已有的對(duì)象組合到新對(duì)象中,使之成為新對(duì)象的一部分,因此新的對(duì)象可以調(diào)用已有對(duì)象的功能。面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第18頁(yè)。8.3 多態(tài)8.3.1 多態(tài)與動(dòng)態(tài)綁定8.3.2 方法的覆蓋、隱藏和重載面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第19頁(yè)。8.2.2 繼承與合成這樣做有下面的好處:新對(duì)象存取組成對(duì)象的惟一方法是通過(guò)組成對(duì)象的接口。這種重用是黑箱重用,因?yàn)榻M成對(duì)象的內(nèi)部細(xì)節(jié)是新對(duì)象所看不見(jiàn)的。這種重用支持包裝。這種重用所需的依賴較少。每一個(gè)新的類可以將焦點(diǎn)集中在一個(gè)任務(wù)上。這種重用可以在運(yùn)行期內(nèi)動(dòng)態(tài)進(jìn)行,新對(duì)象可以動(dòng)態(tài)地引用與組成對(duì)象類型相同的對(duì)象。面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第20頁(yè)。第一節(jié)礦井地質(zhì)勘探的技術(shù)手段一、鉆探
鉆探是礦井地質(zhì)采用的主要勘探技術(shù)手段,利用機(jī)械碎巖方式向地下巖層鉆進(jìn),通過(guò)機(jī)械回轉(zhuǎn)鉆進(jìn)或沖擊鉆進(jìn),向地下鉆成直徑小而深的圓孔——鉆孔,并從孔內(nèi)取得巖芯或煤芯,獲得全鉆孔巖性柱狀圖,進(jìn)而揭露深部整個(gè)煤系地層,取得地層、巖性、礦產(chǎn)、構(gòu)造及水文地質(zhì)等多方面資料。按照鉆探施工場(chǎng)所和要求的不同,可分為地面鉆探和井下鉆探兩類。面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第21頁(yè)。
井下鉆探主要用于礦井生產(chǎn)勘探,是在井下采掘地段探查各種局部地質(zhì)變化常用的技術(shù)手段。井下鉆探具有很多優(yōu)點(diǎn):①設(shè)備輕巧、便于搬運(yùn)、安裝方便、操作簡(jiǎn)單、適用于井下作業(yè);②可在同一地點(diǎn)施工不同方向、不同角度的鉆孔,滿足不同地段勘探的需要,減少設(shè)備搬家的次數(shù);③井下施工可以縮短鉆進(jìn)的距離、工時(shí)短、成本低、見(jiàn)效快。井下鉆探已廣泛用于井下探煤層、探構(gòu)造和探放水。一般能夠在井下施鉆的就不在地面布孔。面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第22頁(yè)。在井下布置鉆孔應(yīng)該遵循以下原則:①布置鉆孔應(yīng)有充分的地質(zhì)依據(jù)和明確的地質(zhì)目的。根據(jù)井巷揭露的實(shí)際地質(zhì)資料和已掌握的地質(zhì)規(guī)律,在具體分析探查對(duì)象的形態(tài)、產(chǎn)狀和位置之后,以最短的距離,最少的時(shí)間,最佳的地質(zhì)效果布置井下鉆孔。②井下鉆孔應(yīng)盡量布置在原勘查線剖面上,或與設(shè)計(jì)的采掘工程方位一致,以便編繪地質(zhì)剖面圖,指導(dǎo)采掘工程施工。③應(yīng)充分利用暫時(shí)不用的巷道或廢棄巷道布置鉆探施工現(xiàn)場(chǎng),盡量減少工程量,避免受采掘生產(chǎn)的影響,保證鉆探安全施工。④井下探小構(gòu)造、探煤厚、探放瓦斯等生產(chǎn)勘探孔,可以因地制宜、不限形式地布置各種方向、各種角度的鉆孔。⑤應(yīng)盡可能在同一位置施工多個(gè)鉆孔,采區(qū)扇形布置,減少鉆機(jī)搬家。面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第23頁(yè)。二、巷探㈠巷探的主要應(yīng)用1、查明中、小斷層密集塊段煤層的可采性;查明巖漿侵入體和河床沖刷帶及巖溶陷落柱對(duì)煤層的影響范圍;圈定不穩(wěn)定煤層和處于臨界可采厚度煤層和高灰分煤層的可采界限等,由于單純采用鉆探不能達(dá)到預(yù)期的地質(zhì)目的,需要布置巷探予以查明。2、控制水平、采區(qū)和回采工作面的邊界斷層;確定煤層走向變化地段運(yùn)輸巷道的方向和層位;進(jìn)行采區(qū)的找煤和復(fù)采等。3、地質(zhì)構(gòu)造復(fù)雜、煤層極不穩(wěn)定、勘查程度又低的地方小型煤礦和勘查生產(chǎn)井,只能采用邊掘、邊探、邊采的方法進(jìn)行生產(chǎn),此時(shí)巷探成為礦井地質(zhì)最主要的勘查技術(shù)手段。面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第24頁(yè)。㈡探巷布置原則1、巷探必須密切結(jié)合采掘生產(chǎn)的需要,盡量做到采掘探一致、一巷兩用,探明地質(zhì)情況,為生產(chǎn)準(zhǔn)備輔助巷道。在采用雙巷掘進(jìn)的地區(qū),為了保證主巷的設(shè)計(jì)需要,一般采用副巷超前的辦法,查明掘進(jìn)前方的地質(zhì)變化,以指導(dǎo)主巷掘進(jìn)。2、根據(jù)已掌握的地質(zhì)情況,選擇地質(zhì)結(jié)構(gòu)復(fù)雜、煤層變化強(qiáng)烈的地段,垂直主要構(gòu)造線方向布置巷道,做到查清一線,控制一片。3、在地質(zhì)構(gòu)造復(fù)雜,回采可能性不大的地段,由于探巷被生產(chǎn)利用的可能性很小,因此采用最小的斷面,簡(jiǎn)易的支護(hù)掘進(jìn)巷,以節(jié)約資金。4、探巷應(yīng)以煤巷為主,盡量不掘或少掘巖巷。5、為探明煤層可采范圍所布置的探巷,設(shè)計(jì)探巷總長(zhǎng)不得大于回采工作面走向長(zhǎng)度的1/3,只有這樣,布置探巷才有經(jīng)濟(jì)效益。面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第25頁(yè)。㈢探巷的布置方式1、平行巷道超前掘進(jìn):當(dāng)臨近的運(yùn)輸巷和回風(fēng)巷平行掘進(jìn)時(shí),為了保證運(yùn)輸巷的設(shè)計(jì)層位和方向,可采用回風(fēng)巷超前的方法,一般超前150m以上,查明掘進(jìn)方向的煤巖層走向、褶皺、斷層情況。2、階段石門(mén)超前控制:按階段石門(mén)布置方式的礦井,每隔一定距離必須開(kāi)鑿一個(gè)石門(mén)。3、延長(zhǎng)順層煤巷和布置短探巷:為了準(zhǔn)確控制斷煤交線、煤層可采邊界、侵入體、陷落柱的接觸面,保證壓邊掘進(jìn),減少煤柱損失,常采用延長(zhǎng)生產(chǎn)巷道或每隔一定距離布置短探巷的方法,揭露和查明這些界面。4、穿層掘進(jìn)專門(mén)探巷:為控制煤層和構(gòu)造,可布置專門(mén)性探查巷道,并以最小的斷面、最短的距離、最快的速度,查明探查區(qū)內(nèi)的主要地質(zhì)問(wèn)題。5、調(diào)查采面巷道施工順序和布置處理巷道:為探明回采工作面內(nèi)影響正?;夭傻牡刭|(zhì)變化,可調(diào)整巷道施工順序,可采用處理巷道與探巷相結(jié)合。面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第26頁(yè)。三、礦井物探㈠物探主要類型1、電法勘探:是根據(jù)巖石的電性差異來(lái)尋找礦產(chǎn)資源和研究地質(zhì)構(gòu)造的地球物理勘探方法。2、磁法勘探:不同的巖石具有不同的磁性,可以產(chǎn)生不同的磁場(chǎng),這些磁場(chǎng)可以使地球磁場(chǎng)在局部地區(qū)發(fā)生變化,出現(xiàn)地磁異常。借助儀器發(fā)現(xiàn)和研究磁異常,可以尋找礦體、研究地質(zhì)構(gòu)造。3、重力勘探:不同的巖石具有不同的密度,密度差異引起其重力變化,利用精密的重力測(cè)量?jī)x器找出重力異常區(qū),尋找和圈定低密度、高密度礦產(chǎn)資源。4、地震勘探:利用人工爆破產(chǎn)生的地震波在不同巖層中傳播速度的差異,探明含礦地層的埋藏深度、控制大斷層、判斷地質(zhì)構(gòu)造。5、測(cè)井:用測(cè)井儀器在鉆孔中直接測(cè)量不同巖層的多種物理性質(zhì)。面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第27頁(yè)。㈡主要物探方法
1、巷道無(wú)線電波透視法
當(dāng)電磁波在地下巖(煤)層中傳播時(shí),由于巖層(煤)電性(電阻率ρ、介電常數(shù)ε等)不同,其對(duì)電磁波能量吸收有一定差異,電阻率低的巖(礦)石具有較大的吸收作用。另外伴隨斷裂構(gòu)造所出現(xiàn)的界面,能對(duì)電磁波產(chǎn)生折射、反射等作用,也會(huì)使電磁波能量衰變和損耗。因此,如果在電磁波穿越煤層的途徑中,存在與煤層電性不同的地質(zhì)體,例如陷落柱、斷層或其他地層構(gòu)造,電磁波能量就會(huì)被其吸收或完全屏蔽,信號(hào)顯著減弱,甚至接收不到,形成透視異常,即“陰影區(qū)”,變換發(fā)射機(jī)與接收機(jī)的位置,測(cè)得同一異常的“陰影區(qū)”。“陰影區(qū)”交匯的地方,就是異常位置。坑道無(wú)線電波透視法研究煤、巖層及地質(zhì)構(gòu)造對(duì)電磁波傳播的影響所造成的各種異常,從而進(jìn)行地質(zhì)推斷解釋。
面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第28頁(yè)。如圖4-1所示,從回采工作面一方向另一方發(fā)射電磁波,如果回采工作面內(nèi)存在低于煤層電阻率的地質(zhì)異常體,則電磁波能量就會(huì)被吸收,甚至完全被屏蔽,接收機(jī)收到的訊號(hào)顯著減弱,甚至完全收不到,從而形成一個(gè)“陰影區(qū)”。變換發(fā)射機(jī)和接收機(jī)的位置,即可交匯出要探測(cè)的地質(zhì)異常位置。圖4-1無(wú)線電波透視法示意圖1—電磁波能量未受到衰減的射線;2—電磁波受到衰減的屏蔽射線;3—地質(zhì)異?!瓣幱皡^(qū)”;1、16、21—發(fā)射點(diǎn);1~23—接收點(diǎn)面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第29頁(yè)。2、瑞利波探測(cè)技術(shù)
瑞利波探測(cè)技術(shù)是地震勘探的一個(gè)分支,是通過(guò)對(duì)振動(dòng)波傳播速度的測(cè)量來(lái)確定地質(zhì)構(gòu)造的情況。在彈性介質(zhì)中激發(fā)機(jī)械振動(dòng)時(shí),由于介質(zhì)中各質(zhì)點(diǎn)間存在彈性聯(lián)系,一點(diǎn)振動(dòng)時(shí),相鄰的質(zhì)點(diǎn)將被帶動(dòng)而依次震動(dòng)起來(lái),在介質(zhì)中振動(dòng)逐漸擴(kuò)展出去,形成波的傳播。
瑞利波探測(cè)方法如圖4-2所示,在工作面上適應(yīng)距離L位置處裝上振動(dòng)傳感器A和B,在傳感器A的一側(cè)C點(diǎn)激發(fā)一定頻率的機(jī)械振動(dòng),振動(dòng)激發(fā)的瑞利波從C點(diǎn)向A、B方向傳播,傳感器A、B接收相繼到達(dá)的瑞利波信號(hào),計(jì)算出它的時(shí)間差△t、傳播速度V。傳播速度一定時(shí),波長(zhǎng)與頻率成反比,即高頻瑞利波可以測(cè)量較淺層的地質(zhì)體傳播的速度,因波長(zhǎng)較長(zhǎng)、傳播較深,可以測(cè)量較深的地質(zhì)體傳播速度。
面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第30頁(yè)。8.3.1 多態(tài)與動(dòng)態(tài)綁定
多態(tài)(polymorphism)的意思是具有多種形態(tài),它是面向?qū)ο蟪绦蛟O(shè)計(jì)的重要思想方法。 多態(tài)在面對(duì)對(duì)象程序設(shè)計(jì)中意味著通過(guò)動(dòng)態(tài)綁定原理,使用單個(gè)變量來(lái)引用不同類的對(duì)象,自動(dòng)調(diào)用引用對(duì)象類的對(duì)應(yīng)方法。所以,動(dòng)態(tài)綁定和多態(tài)從某種程度上來(lái)說(shuō)是同一事情的不同稱謂。但是,動(dòng)態(tài)綁定指計(jì)算機(jī)中發(fā)生的過(guò)程,而多態(tài)則是用于對(duì)象和類更抽象討論的概念。面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第31頁(yè)。8.3.1 多態(tài)與動(dòng)態(tài)綁定1. 派生類的對(duì)象具有多個(gè)類型派生類gain方法動(dòng)態(tài)綁定實(shí)現(xiàn)多態(tài)面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第32頁(yè)。8.3.1 多態(tài)與動(dòng)態(tài)綁定2. 動(dòng)態(tài)綁定Delphi使用了一種稱作動(dòng)態(tài)綁定(dynamicbinding)、晚綁定(latebinding)的技術(shù)。當(dāng)程序執(zhí)行中所具體實(shí)現(xiàn)的方法卻是動(dòng)態(tài)確定的(所以稱之為動(dòng)態(tài)綁定),而且確定的時(shí)間比編譯時(shí)間晚(所以稱為后期綁定),即在程序運(yùn)行時(shí)而不是在編譯時(shí)確定。面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第33頁(yè)。8.3.2 方法的覆蓋、隱藏和重載
在Delphi中,通過(guò)覆蓋一個(gè)方法可以實(shí)現(xiàn)OOP的多態(tài)性概念。通過(guò)覆蓋可以使一方法在不同的派生類間表現(xiàn)出不同的行為。Delphi中能被覆蓋的方法是在聲明時(shí)被限定為virtual或dynamic的方法。面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第34頁(yè)。8.4 接口8.4.1 接口的概念 8.4.2 Delphi對(duì)象接口 8.4.3 接口應(yīng)用實(shí)例面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第35頁(yè)。8.4 接口
面向?qū)ο蟮奶攸c(diǎn)主要概括為抽象性、繼承性、封裝性和多態(tài)性。在面向?qū)ο蟪绦蛟O(shè)計(jì)中,封裝是指對(duì)象的使用者通過(guò)預(yù)先定義的接口關(guān)聯(lián)到某一對(duì)象的服務(wù)和數(shù)據(jù)時(shí),無(wú)需知道這些服務(wù)是如何實(shí)現(xiàn)的。因此接口在面向?qū)ο蟪绦蛟O(shè)計(jì)中有著重要的地位。接口封裝了復(fù)雜性,提供了便利性,可以幫助我們?cè)O(shè)計(jì)出更具彈性、易于維護(hù)的程序。面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第36頁(yè)。8.4.1 接口的概念
接口的概念是建立在封裝的基礎(chǔ)之上。這里的接口是指一些方法特征(Signature)的集合,它關(guān)心的是方法的特征定義(例如方法的名稱、參數(shù)的類型及數(shù)量),而不是方法的具體實(shí)現(xiàn)。這里所說(shuō)的接口是一個(gè)面向?qū)ο蟪绦蛟O(shè)計(jì)中的寬泛定義。這個(gè)定義所指的接口涉及到Delphi的類(通常指抽象類)和對(duì)象接口所聲明的方法。它具有以下特點(diǎn):接口提供了一種抽象機(jī)制接口使即插即用變得可能接口針對(duì)抽象而不是針對(duì)實(shí)現(xiàn)面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第37頁(yè)。8.4.2 Delphi對(duì)象接口 Delphi的對(duì)象接口聲明和類相似,但不能直接實(shí)例化,也不能自己實(shí)現(xiàn)他們的方法,而是由支持接口的類來(lái)提供實(shí)現(xiàn)。一個(gè)接口類型的變量能引用一個(gè)實(shí)現(xiàn)了該接口的對(duì)象,但是,只有接口中聲明的方法才能通過(guò)該變量進(jìn)行調(diào)用。面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第38頁(yè)。8.4.2 Delphi對(duì)象接口1. 定義接口要聲明一個(gè)接口,使用的是限定符interface而不是class。在接口中可以像在類中一樣聲明方法,只不過(guò)不需要指定可見(jiàn)性限定符,如:public、private、protected等,因?yàn)樽鳛榻涌诘姆椒偸莗ublic的。通常接口命名時(shí)使用大寫(xiě)I作為前綴,為便于理解也有人建議接口命名為XXXable。我們通過(guò)繼承一個(gè)已有的接口來(lái)聲明一個(gè)新接口,就像繼承一個(gè)已有的基類來(lái)聲明一個(gè)新類一樣。面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第39頁(yè)。8.4.2 Delphi對(duì)象接口2. 實(shí)現(xiàn)接口 要實(shí)現(xiàn)一個(gè)接口,需要聲明一個(gè)從該接口繼承的類,并實(shí)現(xiàn)該接口方法。同樣,要聲明一個(gè)實(shí)現(xiàn)多個(gè)接口的類時(shí),必須提供在所有接口中聲明的所有方法的實(shí)現(xiàn)。這種多接口的實(shí)現(xiàn)類似多重繼承的功能面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第40頁(yè)。8.4.3 接口應(yīng)用實(shí)例
使用接口的好處是便于系統(tǒng)的擴(kuò)展、維護(hù)和重用。接口的使用使得代碼模塊之間的耦合減弱。具體表現(xiàn)在對(duì)象之間的依賴關(guān)系弱化為客戶——服務(wù)的關(guān)系,即客戶對(duì)象請(qǐng)求服務(wù),服務(wù)對(duì)象提供服務(wù),而接口則成了提供服務(wù)的一種契約。面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第41頁(yè)。
在新的果園系統(tǒng)中,TGardener和TInvestor分別使用IPlant和IGain來(lái)獲取服務(wù),而不是直接依賴TFruit或TRealestate。8.4.3 接口應(yīng)用實(shí)例果園系統(tǒng)基于接口的擴(kuò)展設(shè)計(jì)面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第42頁(yè)。8.4.3 接口應(yīng)用實(shí)例
初學(xué)者和沒(méi)有經(jīng)驗(yàn)的程序員設(shè)計(jì)接口時(shí)通常會(huì)犯以下兩個(gè)錯(cuò)誤:合并接口那些自以為是的程序員喜歡把多個(gè)功能相近的不同接口合并成一個(gè)大接口。這樣看上去總的接口數(shù)量減少了,但針對(duì)不同的客戶端而言,他們卻要面對(duì)大接口中大量冗余的、用不著的方法,實(shí)際上接口變得臃腫了。如果這樣的接口不是自己使用,而是提供給其他編程人員使用,別人則難以理解接口中各個(gè)方法的用意。預(yù)留接口一些飽受面向過(guò)程開(kāi)發(fā)之苦的程序員深知系統(tǒng)擴(kuò)展的艱難,他們會(huì)在設(shè)計(jì)時(shí)預(yù)留一些接口,為以后系統(tǒng)的變更和擴(kuò)展做考慮。但實(shí)際上這種努力大都是徒勞,因?yàn)槟阌肋h(yuǎn)無(wú)法準(zhǔn)確地預(yù)測(cè)未來(lái)。結(jié)果給系統(tǒng)留下一大堆垃圾,徒增系統(tǒng)的維護(hù)成本。面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第43頁(yè)。8.5 本章小結(jié)在面向?qū)ο蟪绦蛟O(shè)計(jì)中的對(duì)象可以視為一組相關(guān)的操作代碼和數(shù)據(jù)的組合;對(duì)象是類的實(shí)例;對(duì)象可以互相協(xié)作,共同完成任務(wù);通過(guò)繼承、組合或封裝等方式可以重用代碼產(chǎn)成新的對(duì)象;另外對(duì)象根據(jù)特定的意義和用途還有不同的劃分方法。每個(gè)對(duì)象都有生命期。一個(gè)對(duì)象按其生命期分為:創(chuàng)建(初始化)、運(yùn)行、銷毀三個(gè)階段。對(duì)象的創(chuàng)建和銷毀可通過(guò)構(gòu)造函數(shù)和析構(gòu)函數(shù)來(lái)實(shí)現(xiàn)。對(duì)象使用完畢后要及時(shí)銷毀釋放以免造成內(nèi)存泄漏。面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第44頁(yè)。8.5 本章小結(jié)對(duì)象是一種引用類型。對(duì)象由類創(chuàng)建,存儲(chǔ)在堆中;而對(duì)象變量則是對(duì)象的引用,存儲(chǔ)在棧中。在程序中我們通過(guò)對(duì)象變量,也就是對(duì)象的引用,來(lái)操縱對(duì)象。對(duì)象之間的關(guān)系有合成關(guān)系(“has—a”)、繼承關(guān)系(“is—a”)、依賴關(guān)系(“use—a”)。理解對(duì)象之間的關(guān)系可以幫助我們?cè)O(shè)計(jì)出可重用、易維護(hù)的代碼,降低耦合性,提高靈活性。面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第45頁(yè)。8.5 本章小結(jié)繼承關(guān)系是“is—a”關(guān)系,每個(gè)派生類對(duì)象都是其基類的對(duì)象。繼承關(guān)系形成了樹(shù)狀的層次結(jié)構(gòu)。繼承重用是通過(guò)擴(kuò)展一個(gè)已有對(duì)象的實(shí)現(xiàn)來(lái)得到新的功能,基類明顯地抽象并提取共同的屬性和方法,而派生類通過(guò)增加新的屬性和方法來(lái)擴(kuò)展基類的實(shí)現(xiàn)。合成關(guān)系是“has—a”關(guān)系,指新對(duì)象由已有的對(duì)象組合而成,或新對(duì)象包含有其他對(duì)象。對(duì)象合成是通過(guò)獲得對(duì)其他對(duì)象的引用而在運(yùn)行期動(dòng)態(tài)定義的。合成要求對(duì)象遵守彼此的接口約定,因?yàn)閷?duì)象只能通過(guò)接口訪問(wèn),所以保護(hù)了對(duì)象的封裝性。面向?qū)ο蟪绦蛟O(shè)計(jì)全文共52頁(yè),當(dāng)前為第46頁(yè)。8.5 本章小結(jié)面向?qū)ο蟪绦蛟O(shè)計(jì)中,通過(guò)合成或通過(guò)繼承都可以在不同的環(huán)境中重用已有的設(shè)計(jì)和實(shí)現(xiàn)。但經(jīng)驗(yàn)表明,除非所有繼承的方法都有意義,否則還是應(yīng)當(dāng)優(yōu)先考慮使用合成而不是繼承。因?yàn)橐蕾囉趯?duì)象合成技術(shù)的設(shè)計(jì)卻有更好的重用性或更簡(jiǎn)單。多態(tài)的意思是具有多種形態(tài),它是面向?qū)ο蟪绦蛟O(shè)計(jì)的重要思想方法。多態(tài)在面對(duì)對(duì)象程序設(shè)計(jì)中意味著通過(guò)動(dòng)態(tài)綁定原理,使用單個(gè)變量來(lái)引用不同類的對(duì)象,自動(dòng)調(diào)用引用對(duì)象類的對(duì)應(yīng)方法。面向?qū)ο?/p>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 四川省綿陽(yáng)市北川羌族自治縣2024-2025學(xué)年八年級(jí)上學(xué)期1月期末物理試題(無(wú)答案)
- 280道法律常識(shí)題(含答案)
- 江蘇省蘇州市姑蘇區(qū)2024-2025學(xué)年九年級(jí)上學(xué)期期末質(zhì)量監(jiān)測(cè)歷史卷(含答案)
- 性病防治知識(shí)培訓(xùn)課件
- 20億發(fā)一體射釘生產(chǎn)線建設(shè)項(xiàng)目可行性研究報(bào)告寫(xiě)作模板-申批備案
- 物業(yè)民法典知識(shí)培訓(xùn)課件
- 2024年中職計(jì)算機(jī)教學(xué)計(jì)劃
- 2025年度MCN機(jī)構(gòu)藝人經(jīng)紀(jì)與粉絲經(jīng)濟(jì)合作合同3篇
- 2024鋪面裝修與全生命周期成本管理合同3篇
- 福建省南平市建陽(yáng)漳墩中學(xué)2021年高二數(shù)學(xué)理月考試卷含解析
- 幼兒系列故事繪本課件鴨子當(dāng)總統(tǒng)-
- 智慧燃?xì)獍踩O(jiān)管平臺(tái)解決方案
- 助產(chǎn)士核心勝任力量表
- 數(shù)據(jù)標(biāo)準(zhǔn)管理實(shí)踐白皮書(shū)
- DB64∕T 1754-2020 寧夏磚瓦用粘土礦產(chǎn)地質(zhì)勘查技術(shù)規(guī)程
- CECA/GC1-2015建設(shè)項(xiàng)目投資估算編審規(guī)程
- 八年級(jí)生地會(huì)考試卷與答案
- 主體結(jié)構(gòu)檢驗(yàn)批一套
- 螺桿壓縮機(jī)檢修手冊(cè)
- 七年級(jí)科技制作教案全冊(cè)
- 建筑工程設(shè)計(jì)過(guò)程控制流程圖
評(píng)論
0/150
提交評(píng)論