版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、08:53:28,1,C+程序設(shè)計(jì)教程(第二版),第十一章 基于對(duì)象編程 Chapter 11 Object-Based Programming,清華大學(xué)出版社 錢(qián) 能,08:53:28,2,第十一章內(nèi)容,抽象編程 ( Abstract Programming ) 編程質(zhì)量 ( Programming Quality ) 分析Joses問(wèn)題 ( Analysis the Joses Problem ) 基于過(guò)程的實(shí)現(xiàn) ( Procedure-Based Solving ) 基于對(duì)象的實(shí)現(xiàn) ( Object-Based Solving ) 程序維護(hù) ( Program Maintenance )
2、 程序擴(kuò)展 ( Program Extension ),08:53:28,3,1. 抽象編程 ( Abstract Programming ),抽象分行為抽象和數(shù)據(jù)抽象兩種 行為抽象:通俗地說(shuō)便是將一個(gè)行為序列歸并(抽象)為一個(gè)行為的過(guò)程.例如:將取碗筷、盛飯、盛菜,扒一口飯、夾一筷菜、再扒一口飯、再夾一筷菜的若干重復(fù),然后放下碗筷的過(guò)程歸并為吃飯. 數(shù)據(jù)抽象:通俗地說(shuō),就是將事物歸類(lèi),或者說(shuō),將事物看成是一定型號(hào)、規(guī)格的數(shù)據(jù),然后將性質(zhì)接近的數(shù)據(jù)歸納(抽象)為一類(lèi).例如:將圓、三角形、長(zhǎng)方形歸為形狀類(lèi).,08:53:28,4,數(shù)據(jù)結(jié)構(gòu),一系列性質(zhì)相同的數(shù)據(jù), 組織成一定的邏輯結(jié)構(gòu), 并帶有自
3、身的一系列操作 例如:整型向量 不同整型值是一系列性質(zhì)相同的數(shù)據(jù);其數(shù)據(jù)集合存放在向量中,便是組織成線性存儲(chǔ)結(jié)構(gòu);向量自身有創(chuàng)建、復(fù)制、擴(kuò)建、增刪、修改等操作,外加排序、查找等算法可以調(diào)用.所以,整型向量在語(yǔ)言中是一種具體的數(shù)據(jù)結(jié)構(gòu)。,08:53:28,5,抽象編程,通過(guò)抽象的方法來(lái)減少編程工作量或有效地減輕編程難度稱(chēng)為抽象編程 將問(wèn)題通過(guò)功能分解,各個(gè)擊破的編程方法(過(guò)程化編程)是一種以行為抽象為主的抽象編程 將問(wèn)題通過(guò)實(shí)體分析,分層分類(lèi)地實(shí)現(xiàn)抽象數(shù)據(jù)類(lèi)型,從而進(jìn)行簡(jiǎn)單應(yīng)用編程(基于對(duì)象編程)是一種以數(shù)據(jù)抽象為主的抽象編程,這種抽象編程,通過(guò)數(shù)據(jù)類(lèi)型復(fù)用,方便編程,方便維護(hù)和擴(kuò)展,其效果比過(guò)
4、程化編程更好,08:53:28,6,編程,語(yǔ)言中沒(méi)有許多具體的數(shù)據(jù)類(lèi)型,要解決實(shí)際問(wèn)題,很大部分工作是要建立數(shù)據(jù)模式與實(shí)際問(wèn)題的對(duì)應(yīng),也就是建立抽象數(shù)據(jù)類(lèi)型的過(guò)程 對(duì)象化編程就是基于分層分類(lèi)的抽象數(shù)據(jù)類(lèi)型之具體編程,它能更好地實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)和算法,便是將N.Wirth的程序公式: 程序=算法+數(shù)據(jù)結(jié)構(gòu) 具體化為: 程序=算法+抽象數(shù)據(jù)類(lèi)型,08:53:28,7,2. 編程質(zhì)量 ( Programming Quality ),可讀性: 通過(guò)使用更好的編程方法可以從本質(zhì)上改進(jìn)可讀性 通過(guò)使用定義良好的算法和語(yǔ)句控制結(jié)構(gòu),可以局部改進(jìn)算法的可理解性 通過(guò)學(xué)習(xí)和使用優(yōu)秀程序員的編碼習(xí)慣,采用一貫的編碼風(fēng)
5、格,可以增強(qiáng)可讀性 注意:高級(jí)程序員與初學(xué)者對(duì)可讀性的把握分寸是不同的,08:53:28,8,易編程性: 只是對(duì)采用好的編程方法或更高級(jí)語(yǔ)言而言,抽象程度越大,越易編程 對(duì)象化編程在抽象數(shù)據(jù)類(lèi)型的創(chuàng)建上做了大量的工作,因而贏得了應(yīng)用程序編寫(xiě)的方便與快捷,08:53:28,9,安全性: 編程在算法設(shè)計(jì)上是挖空心思的勞動(dòng)過(guò)程,而在運(yùn)用語(yǔ)言對(duì)之描述上應(yīng)該瀟灑自在:容易表達(dá),不容易出錯(cuò),運(yùn)行上更安全。好的編程方法能夠幫助程序員實(shí)現(xiàn)瀟灑編程 抽象數(shù)據(jù)類(lèi)型中可以將大量安全代碼嵌入其中,從而使應(yīng)用編程瀟灑自在 實(shí)現(xiàn)抽象數(shù)據(jù)類(lèi)型的過(guò)程本身也是使用其他抽象數(shù)據(jù)類(lèi)型的應(yīng)用編程,同樣也充滿著瀟灑與自在,08:53:
6、28,10,可維護(hù)性: 指局部修改不影響系統(tǒng)全局的總體性能,而系統(tǒng)產(chǎn)生的問(wèn)題通??梢酝ㄟ^(guò)局部維護(hù)(修改或更換部件)來(lái)解決。 模塊化編程使程序可拆裝,可局部修改,而不影響整體性能與工作,因而可維護(hù)性強(qiáng),過(guò)程化編程是將過(guò)程模塊化,具有一定的可維護(hù)性;對(duì)象化編程是將數(shù)據(jù)類(lèi)型也模塊化,從而導(dǎo)致更方便的維護(hù)性能,08:53:28,11,可擴(kuò)充性: 指系統(tǒng)擴(kuò)展時(shí),只增加擴(kuò)展代碼,而對(duì)原系統(tǒng)的正常運(yùn)作只作很少的修改甚至不修改 功能擴(kuò)展的影響: 過(guò)程化編程,會(huì)涉及多處擴(kuò)展代碼與原系統(tǒng)不和諧所帶來(lái)的修改 對(duì)象化編程,如果是抽象數(shù)據(jù)類(lèi)型的功能擴(kuò)展,則不會(huì)影響原系統(tǒng)的正常運(yùn)行,而只是支持應(yīng)用程序中增加的一些擴(kuò)展代碼
7、而已;如果是應(yīng)用程序功能擴(kuò)展,那是使用抽象數(shù)據(jù)類(lèi)型的抽象代碼擴(kuò)展,其修改量比之低級(jí)代碼要少,08:53:28,12,效率: 前提:代碼量大不等于運(yùn)行量大 效率除了看速度,還要看損耗,既要考慮編程方便,又要考慮運(yùn)行性能(時(shí)空效率) 1過(guò)程化程序代碼量少,但對(duì)象化程序的代碼量相對(duì)較多,但不占系統(tǒng)空間 2過(guò)程化程序編寫(xiě)安全代碼代價(jià)大,因而不系統(tǒng),對(duì)象化程序可以方便地在抽象數(shù)據(jù)類(lèi)型中嵌入安全代碼,從而導(dǎo)致了代碼量大的問(wèn)題,如果讓過(guò)程化程序達(dá)到其安全指標(biāo),為此增加的代碼量比對(duì)象化程序更多,08:53:28,13,3. 分析Joses問(wèn)題 ( Analysis the Joses Problem ),過(guò)程
8、化分析:按實(shí)現(xiàn)過(guò)程分析,功能劃分,從而得到幾個(gè)算法步驟:獲得小孩數(shù)n,開(kāi)始位置s,間隔數(shù)m創(chuàng)建環(huán)鏈表循環(huán)數(shù)數(shù),排除n-1個(gè)小孩輸出剩下的小孩編號(hào)(勝利者)善后工作(清除環(huán)鏈表),08:53:28,14,對(duì)每個(gè)算法步驟,分而治之:例如,環(huán)鏈表操作的復(fù)雜性,在循環(huán)數(shù)數(shù)中體現(xiàn)初始化和善后處理都必須由程序員一人承擔(dān),工作量大,容易產(chǎn)生錯(cuò)誤,08:53:28,15,對(duì)象化分析:先考慮一些能對(duì)應(yīng)抽象數(shù)據(jù)類(lèi)型的實(shí)體,如,以小孩為元素的鏈表類(lèi),問(wèn)題本身也是一個(gè)類(lèi),然后脫離問(wèn)題,先來(lái)定制類(lèi)或者重用類(lèi),最后基于類(lèi)型來(lái)實(shí)現(xiàn)算法(簡(jiǎn)單得多)鏈表類(lèi):它有創(chuàng)建,增加,減少,修改,搜索等操作問(wèn)題(Josephus)類(lèi):它有創(chuàng)建,獲得勝利者操作,08:53:28,16,6. 程序維護(hù) ( Program Maintenance ),維護(hù)要求: 數(shù)個(gè)數(shù)m,m若改為根據(jù)當(dāng)前小孩的序號(hào)與m的和來(lái)確定個(gè)數(shù)m,則在進(jìn)行數(shù)個(gè)數(shù)前,先要進(jìn)行表達(dá)式計(jì)算, 這一切,都是在Josephus類(lèi)中暗中完成的,所以只要修改Josephus類(lèi)的 getWinner 無(wú)須修改應(yīng)用程序,便可維護(hù)好系統(tǒng),08:53:28,17,7. 程序擴(kuò)展 ( Program Extensio
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026吉林松原市生態(tài)環(huán)境局所屬事業(yè)單位選拔10人參考考試題庫(kù)及答案解析
- 2026山東青島西海岸新區(qū)部分事業(yè)單位招聘8人筆試備考試題及答案解析
- 飛機(jī)氣源系統(tǒng)培訓(xùn)課件
- 2026浙江杭州市廣播電視監(jiān)測(cè)中心招聘編外工作人員1人參考考試題庫(kù)及答案解析
- 2026山東聊城市眼科醫(yī)院引進(jìn)博士研究生3人備考考試試題及答案解析
- 全場(chǎng)珠寶活動(dòng)策劃方案(3篇)
- 獸醫(yī)質(zhì)量管理制度圖片(3篇)
- 分管工程的管理制度(3篇)
- 國(guó)家衛(wèi)健委管理制度(3篇)
- 涂娃娃活動(dòng)策劃方案(3篇)
- 2025-2030半導(dǎo)體缺陷檢測(cè)設(shè)備行業(yè)運(yùn)營(yíng)模式與供需趨勢(shì)預(yù)測(cè)研究報(bào)告
- GB/T 46755-2025智能紡織產(chǎn)品通用技術(shù)要求
- 2023年廣西區(qū)考公務(wù)員錄用考試《行測(cè)》真題及答案解析
- GB/T 23444-2024金屬及金屬?gòu)?fù)合材料吊頂板
- 應(yīng)用麻醉鎮(zhèn)痛技術(shù)施行負(fù)壓吸宮術(shù)技術(shù)規(guī)范
- 國(guó)家電網(wǎng)公司招聘高校畢業(yè)生應(yīng)聘登記表
- 見(jiàn)證取樣手冊(cè)(智能建筑分部)
- DZ∕T 0353-2020 地球化學(xué)詳查規(guī)范(正式版)
- 醫(yī)療衛(wèi)生輿情課件
- 2023-2024學(xué)年宜賓市高一數(shù)學(xué)上學(xué)期期末質(zhì)量監(jiān)測(cè)試卷附答案解析
- 實(shí)用的標(biāo)準(zhǔn)氧化還原電位表
評(píng)論
0/150
提交評(píng)論