Python基礎(chǔ)入門(mén)教程23:企業(yè)級(jí)開(kāi)發(fā)基礎(chǔ)4 面向對(duì)象
來(lái)源:
奇酷教育 發(fā)表於:
寫(xiě)在前面:關(guān)於類(lèi)和對(duì)象那些事兒有了類(lèi)和對(duì)象的概念之後,我們開(kāi)始逐步引入面向對(duì)象的概念我們知道在程序中通過(guò)對(duì)象將屬於同一組的數(shù)據(jù)統(tǒng)一
寫(xiě)在前面:關(guān)於類(lèi)和對(duì)象那些事兒
有了類(lèi)和對(duì)象的概念之後,我們開(kāi)始逐步引入面向對(duì)象的概念
我們知道在程序中通過(guò)對(duì)象將屬於同一組的數(shù)據(jù)統(tǒng)一的管理起來(lái),同時(shí)通過(guò)類(lèi)型來(lái)定義我們項(xiàng)目中需要的數(shù)據(jù)類(lèi)型,通過(guò)創(chuàng)建對(duì)象的方式來(lái)使用這些數(shù)據(jù)。
那麼接著上節(jié)課的內(nèi)容,我們遇到了一下幾個(gè)問(wèn)題
什麼時(shí)候需要定義類(lèi)型?
定義類(lèi)型需要初始化什麼屬性?定義什麼方法?
什麼時(shí)候通過(guò)類(lèi)型來(lái)創(chuàng)建對(duì)象?
創(chuàng)建好的對(duì)象,在項(xiàng)目中怎麼使用呢?
以上四個(gè)問(wèn)題,就是我們要通過(guò)面向對(duì)象來(lái)解決的問(wèn)題了
1. 面向對(duì)象
1.1. 面向對(duì)象程序設(shè)計(jì)的由來(lái)
~程式語言的發(fā)展
程序設(shè)計(jì)這東西一開(kāi)始出現(xiàn),是按照人類(lèi)的語言習(xí)慣,將儘量符合人類(lèi)語言的語法結(jié)構(gòu )來(lái)描述要實(shí)現(xiàn)的功能,然後通過(guò)各種軟體環(huán)境[XX語言編譯器、XX語言解釋器]將這樣符合人類(lèi)語言的語法編譯或者解釋成計(jì)算機(jī)能認(rèn)識和執(zhí)行的語言去執(zhí)行並實(shí)現(xiàn)功能的過(guò)程,於是出現(xiàn)了高級(jí)語言。
~面向過(guò)程的程序設(shè)計(jì)
高級(jí)語言出現(xiàn)之初,程序設(shè)計(jì)的思路,也是參考了人類(lèi)解決問(wèn)題的思路;
遇到一個(gè)問(wèn)題,人類(lèi)習(xí)慣性的思維方式是第一步做什麼、第二步做什麼、緊接著做什麼,這樣按照一定的步驟一直到實(shí)現(xiàn)最終想要的功能。
這樣的按照事情/功能的處理過(guò)程和步驟來(lái)進(jìn)行程序的設(shè)計(jì)和開(kāi)發(fā)的過(guò)程,是一種解決問(wèn)題的思路,我們稱(chēng)之為:面向過(guò)程的程序設(shè)計(jì)
~ 面向過(guò)程程序設(shè)計(jì)的缺陷
面向過(guò)程的程序設(shè)計(jì)發(fā)展了一定的時(shí)間之後,我們發(fā)現(xiàn)出現(xiàn)了一個(gè)非常重要的問(wèn)題,如果僅僅是處理某一個(gè)功能的流程而言非常適合,但是如果一旦涉及到業(yè)務(wù)過(guò)程比較複雜的系統(tǒng)來(lái)說(shuō)的話(huà),面向過(guò)程的思路設(shè)計(jì)的程序出現(xiàn)了大量的代碼冗餘、同時(shí)不同的功能之間的衝突隨著系統(tǒng)功能的增多衝突越來(lái)越多,另外當(dāng)系統(tǒng)中的某些功能如果需要升級(jí)或者改動(dòng),會(huì)涉及到大量的代碼的修改和功能的影響造成維護(hù)的不方便
~正當(dāng)對(duì)的時(shí)間,正當(dāng)對(duì)的地點(diǎn),我遇見(jiàn)了你:面向對(duì)象
這時(shí)候,一幫大佬們圍坐在一起,開(kāi)始商量怎麼樣讓我們的程序更加適合開(kāi)發(fā)結(jié)構(gòu )完整、流程複雜的系統(tǒng)項(xiàng)目呢!
有人就提出了,我們的程序,其實(shí)一直都是在模擬符合正常人的思維邏輯習(xí)慣的,小功能的處理就像我們處理一件小事一樣,可以按照步驟進(jìn)行處理,也就是按照面向過(guò)程的設(shè)計(jì)思路進(jìn)行處理;
一個(gè)相對(duì)較大的系統(tǒng)的設(shè)計(jì),就類(lèi)似讓一個(gè)人當(dāng)國(guó)家領(lǐng)導(dǎo )人,怎麼規(guī)劃(huà)國(guó)家的各個(gè)機(jī)構(gòu );或者讓一個(gè)人開(kāi)一家公司,規(guī)劃(huà)公司的部門(mén)結(jié)構(gòu );或者就簡(jiǎn)單的讓一個(gè)人管理自己的家庭,規(guī)劃(huà)家裡的房子、柜子、桌椅板凳等等各種東西的歸置一樣;如果能做到這一點(diǎn),符合正常人的思維習(xí)慣的程序設(shè)計(jì)思路不就出現(xiàn)了麼!!!
~ 人之初,性本善
面向對(duì)象,按照系統(tǒng)的需要,將系統(tǒng)中用到的各個(gè)數(shù)據(jù)封裝成獨(dú)立的對(duì)象,通過(guò)對(duì)象之間的互相協(xié)作,來(lái)完成一個(gè)功能的過(guò)程;成為面向對(duì)象的程序設(shè)計(jì)。
簡(jiǎn)單看一下面向對(duì)象程序設(shè)計(jì)的思路
實(shí)現(xiàn)這樣一個(gè)業(yè)務(wù):我陪女朋友去看電影
面向過(guò)程的設(shè)計(jì)思路:
1~我待著女朋友出發(fā);
2~到電影院選電影、選座、買(mǎi)2張票;
3~進(jìn)放映廳,看電影;
4~看完電影,回家。
面向對(duì)象的設(shè)計(jì)思路:
1~抽取對(duì)象:我、女朋友、電影院
2~抽取對(duì)象的屬性:我(看電影的行為,買(mǎi)票的行為),女朋友(看電影的行為),電影院(賣票的行為、放映電影的行為)
3~我[對(duì)象] 的<看電影>的方法中調(diào)用 女朋友[對(duì)象]的<看電影>的方法,然後調(diào)用我[對(duì)象]的<買(mǎi)票>的方法,在<買(mǎi)票>方法中調(diào)用電影院[對(duì)象]<賣票>的方法,最後完成我和女朋友看電影這個(gè)功能。
1.2. 面向對(duì)象程序設(shè)計(jì)的特徵
面向對(duì)象在實(shí)際項(xiàng)目開(kāi)發(fā)中,為了更加符合人類(lèi)的語言習(xí)慣和認(rèn)識這個(gè)世界的思維方式,給這樣的程序設(shè)計(jì)添加了一些特殊的處理讓開(kāi)發(fā)人員更加容易理解,同時(shí)提高了程序的健壯性、可擴展性和可維護(hù)性等
面向對(duì)象程序設(shè)計(jì)有三個(gè)最主要的特徵
封裝
繼承
多態(tài)
這三個(gè)特徵主要含義如下:
1.封裝:將對(duì)象的敏感的信息封裝在對(duì)象的內(nèi)部,不讓外界直接訪(fǎng)問(wèn),提高數(shù)據(jù)的安全性
2.繼承:通過(guò)繼承關(guān)係,梳理對(duì)象和對(duì)象之間的關(guān)係,同時(shí)提高了程序設(shè)計(jì)功能的強(qiáng)大的擴展性和代碼的復用性
3.多態(tài):程序在運(yùn)行過(guò)程中,實(shí)時(shí)根據(jù)不同的數(shù)據(jù)執(zhí)行不同的處理邏輯展現(xiàn)不同的狀態(tài),讓程序的功能更加的完善健壯
後續(xù)的課程中,會(huì)對(duì)面向對(duì)象的特徵進(jìn)行詳細(xì)的介紹
>>>更多VR/AR入門(mén)教程:VR入門(mén)