dave-python-練習(xí)十五----面向?qū)ο缶幊蘝第1頁
dave-python-練習(xí)十五----面向?qū)ο缶幊蘝第2頁
dave-python-練習(xí)十五----面向?qū)ο缶幊蘝第3頁
dave-python-練習(xí)十五----面向?qū)ο缶幊蘝第4頁
dave-python-練習(xí)十五----面向?qū)ο缶幊蘝第5頁
資源描述:

《dave-python-練習(xí)十五----面向?qū)ο缶幊獭酚蓵T上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、Dave-Python-練習(xí)十五----面向?qū)ο缶幊藾avePython練習(xí)十五--面向?qū)ο缶幊藾avePython練習(xí)十五--面向?qū)ο缶幊谭诸?默認(rèn)分類日期:2011-09-1614:13原文地址:http://blog.csdn.net/tianlesoftware/article/details/6781878分類:Python2011-09-1614:13744人閱讀評論(0)收藏舉報#encoding=utf-8###***************面向?qū)ο缶幊?*******************#*******

2、****Part1:面向?qū)ο缶幊?**********************#面向?qū)ο缶幊滩壬狭诉M(jìn)化的步伐,增強(qiáng)了結(jié)構(gòu)化編程,實(shí)現(xiàn)了數(shù)據(jù)與動作的融合:數(shù)據(jù)層和邏#輯層現(xiàn)在由一個可用以創(chuàng)建這些對象的簡單抽象層來描述。現(xiàn)實(shí)世界中的問題和實(shí)體完全暴露了本#質(zhì),從中提供的一種抽象,可以用來進(jìn)行相似編碼,或者編入能與系統(tǒng)中對象進(jìn)行交互的對象中。#類提供了這樣一些對象的定義,實(shí)例即是這些定義的實(shí)現(xiàn)。二者對面向?qū)ο笤O(shè)計(object-oriented#design,OOD)來說都是重要的,OOD僅意味來創(chuàng)建你采用面向?qū)ο蠓绞郊軜?gòu)來創(chuàng)建系

3、統(tǒng)。##1.1面向?qū)ο笤O(shè)計與面向?qū)ο缶幊痰年P(guān)系#面向?qū)ο笤O(shè)計(OOD)不會特別要求面向?qū)ο缶幊陶Z言。事實(shí)上,OOD可以由純結(jié)構(gòu)化語言來實(shí)#現(xiàn),比如C,但如果想要構(gòu)造具備對象性質(zhì)和特點(diǎn)的數(shù)據(jù)類型,就需要在程序上作更多的努力。當(dāng)一#門語言內(nèi)建OO特性,OO編程開發(fā)就會更加方便高效。##另一方面,一門面向?qū)ο蟮恼Z言不一定會強(qiáng)制你寫OO方面的程序。例如C++可以被認(rèn)為“更好#的C”;而Java,則要求萬物皆類,此外還規(guī)定,一個源文件對應(yīng)一個類定義。然而,在Python中,#類和OOP都不是日常編程所必需的。盡管它從一開始設(shè)計就是面向

4、對象的,并且結(jié)構(gòu)上支持OOP,但#Python沒有限定或要求你在你的應(yīng)用中寫OO的代碼。OOP是一門強(qiáng)大的工具,不管你是準(zhǔn)備進(jìn)入,#學(xué)習(xí),過渡,或是轉(zhuǎn)向OOP,都可以任意支配。##1.2現(xiàn)實(shí)世界中的問題#考慮用OOD來工作的一個最重要的原因,在于它直接提供建模和解決現(xiàn)實(shí)世界問題和情形的途#徑。比如,讓你來試著模擬一臺汽車維修店,可以讓你停車進(jìn)行維修。我們需要建兩個一般實(shí)體:#處在一個“系統(tǒng)”中并與其交互的人類,和一個修理店,它定義了物理位置,用于人類活動。因?yàn)?前者有更多不同的類型,我將首先對它進(jìn)行描述,然后描述后者。在此類

5、活動中,一個名為Person#的類被創(chuàng)建以用來表示所有的人。Person的實(shí)例可以包括消費(fèi)者(Customer),技工(Mechanic),還#可能是出納員(Cashier)。這些實(shí)例具有相似的行為,也有獨(dú)一無二的行為。比如,他們能用聲音進(jìn)#行交流,都有talk()方法,還有drive_car()方法。不同的是,技工有repair_car()方法,而出納#有ring_sale()方法。技工有一個repair_certification屬性,而所有人都有一個drivers_license#屬性。##最后,所有這些實(shí)例都是一個檢

6、查(overseeing)類RepairShop的參與者,后者具有一個叫#operating_hours的數(shù)據(jù)屬性,它通過時間函數(shù)來確定何時顧客來修車,何時職員技工和出納員來上#班。RepairShop可能還有一個AutoBay類,擁有SmogZone,TireBrakeZone等實(shí)例,也許還有一個叫#GeneralRepair的實(shí)例。##我們所編的RepairShop的一個關(guān)鍵點(diǎn)是要展示類和實(shí)例加上它們的行為是如何用來對現(xiàn)實(shí)生活#場景建模的。同樣,你可以把諸如機(jī)場,餐廳,晶蕊,醫(yī)院,其至一個郵訂音樂公司想像為類,它#們完全

7、具備各自的參與者和功能性。##1.3常用術(shù)語#1.3.1抽象/實(shí)現(xiàn)#抽象指對現(xiàn)實(shí)世界問題和實(shí)體的本質(zhì)表現(xiàn),行為和特征建模,建立一個相關(guān)的子集,可以用于#描繪程序結(jié)構(gòu),從而實(shí)現(xiàn)這種模型。抽象不僅包括這種模型的數(shù)據(jù)屬性,還定義了這些數(shù)據(jù)的接口。#對某種抽象的實(shí)現(xiàn)就是對此數(shù)據(jù)及與之相關(guān)接口的現(xiàn)實(shí)化(realization)?,F(xiàn)實(shí)化這個過程對于客戶#程序應(yīng)當(dāng)是透明而且無關(guān)的。#1.3.2封裝/接口#封裝描述了對數(shù)據(jù)/信息進(jìn)行隱藏的觀念,它對數(shù)據(jù)屬性提供接口和訪問函數(shù)。通過任何客戶端#直接對數(shù)據(jù)的訪問,無視接口,與封裝性都是背道而馳的

8、,除非程序員允許這些操作。作為實(shí)現(xiàn)的#一部分,客戶端根本就不需要知道在封裝之后,數(shù)據(jù)屬性是如何組織的。在Python中,所有的類屬#性都是公開的,但名字可能被“混淆”了,以阻止未經(jīng)授權(quán)的訪問,但僅此而已,再沒有其他預(yù)防#措施了。這就需要在設(shè)計時,對數(shù)據(jù)提供相應(yīng)的接口,以免客戶程序通過不規(guī)范

當(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)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。