面向?qū)ο缶幊?/b>
面向?qū)ο缶幊滩壬狭诉M(jìn)化的步伐驻龟,增強(qiáng)了結(jié)構(gòu)化編程,實(shí)現(xiàn)了數(shù)據(jù)與動(dòng)作的融合:數(shù)據(jù)層和邏#輯層現(xiàn)在由一個(gè)可用以創(chuàng)建這些對(duì)象的簡(jiǎn)單抽象層來描述×潞#現(xiàn)實(shí)世界中的問題和實(shí)體完全暴露了本#質(zhì),從中提供的一種抽象蹦浦,可以用來進(jìn)行相似編碼,或者編入能與系統(tǒng)中對(duì)象進(jìn)行交互的對(duì)象中让腹。#類提供了這樣一些對(duì)象的定義肾砂,實(shí)例即是這些定義的實(shí)現(xiàn)列赎。
二者對(duì)面向?qū)ο笤O(shè)計(jì)(object-oriented#design,OOD)來說都是重要的镐确,OOD 僅意味來創(chuàng)建你采用面向?qū)ο蠓绞郊軜?gòu)來創(chuàng)建系統(tǒng)包吝。##
?1.1 面向?qū)ο笤O(shè)計(jì)與面向?qū)ο缶幊痰年P(guān)系#面向?qū)ο笤O(shè)計(jì)(OOD)不會(huì)特別要求面向?qū)ο缶幊陶Z言。事實(shí)上源葫,OOD 可以由純結(jié)構(gòu)化語言來實(shí)#現(xiàn)诗越,比如C,但如果想要構(gòu)造具備對(duì)象性質(zhì)和特點(diǎn)的數(shù)據(jù)類型臼氨,就需要在程序上作更多的努力。當(dāng)一#門語言內(nèi)建OO 特性芭届,OO 編程開發(fā)就會(huì)更加方便高效储矩。##另一方面感耙,一門面向?qū)ο蟮恼Z言不一定會(huì)強(qiáng)制你寫OO 方面的程序。例如C++可以被認(rèn)為“更好#的C”持隧;而Java即硼,則要求萬物皆類,此外還規(guī)定屡拨,一個(gè)源文件對(duì)應(yīng)一個(gè)類定義只酥。然而,在Python 中呀狼,#類和OOP 都不是日常編程所必需的裂允。盡管它從一開始設(shè)計(jì)就是面向?qū)ο蟮模⑶医Y(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 來工作的一個(gè)最重要的原因,在于它直接提供建模和解決現(xiàn)實(shí)世界問題和情形的途#徑眷昆。比如蜒秤,讓你來試著模擬一臺(tái)汽車維修店,可以讓你停車進(jìn)行維修隙赁。我們需要建兩個(gè)一般實(shí)體:#處在一個(gè)“系統(tǒng)”中并與其交互的人類垦藏,和一個(gè)修理店,它定義了物理位置伞访,用于人類活動(dòng)掂骏。因?yàn)?前者有更多不同的類型,我將首先對(duì)它進(jìn)行描述厚掷,然后描述后者弟灼。在此類活動(dòng)中,一個(gè)名為Person#的類被創(chuàng)建以用來表示所有的人冒黑。Person 的實(shí)例可以包括消費(fèi)者(Customer)田绑,技工(Mechanic),還#可能是出納員(Cashier)抡爹。這些實(shí)例具有相似的行為掩驱,也有獨(dú)一無二的行為。比如,他們能用聲音進(jìn)#行交流欧穴,都有talk()方法民逼,還有drive_car()方法。不同的是涮帘,技工有repair_car()方法拼苍,而出納#有ring_sale()方法。技工有一個(gè)repair_certification 屬性调缨,而所有人都有一個(gè)drivers_license#屬性疮鲫。##最后,所有這些實(shí)例都是一個(gè)檢查(overseeing)類RepairShop 的參與者弦叶,后者具有一個(gè)叫#operating_hours 的數(shù)據(jù)屬性俊犯,它通過時(shí)間函數(shù)來確定何時(shí)顧客來修車,何時(shí)職員技工和出納員來上#班湾蔓。RepairShop 可能還有一個(gè)AutoBay 類瘫析,擁有SmogZone,TireBrakeZone 等實(shí)例,也許還有一個(gè)叫#GeneralRepair 的實(shí)例默责。##我們所編的RepairShop 的一個(gè)關(guān)鍵點(diǎn)是要展示類和實(shí)例加上它們的行為是如何用來對(duì)現(xiàn)實(shí)生活#場(chǎng)景建模的贬循。同樣,你可以把諸如機(jī)場(chǎng)桃序,餐廳杖虾,晶蕊,醫(yī)院媒熊,其至一個(gè)郵訂音樂公司想像為類奇适,它#們完全具備各自的參與者和功能性。