有了類(lèi)和對(duì)象的概念之后,我們開(kāi)始逐步引入面向?qū)ο蟮母拍?/div>
我們知道在程序中通過(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ò)面向?qū)ο髞?lái)解決的問(wèn)題了
1. 面向?qū)ο?/strong>
1.1. 面向?qū)ο蟪绦蛟O(shè)計(jì)的由來(lái)
~編程語(yǔ)言的發(fā)展
程序設(shè)計(jì)這東西一開(kāi)始出現(xiàn),是按照人類(lèi)的語(yǔ)言習(xí)慣,將盡量符合人類(lèi)語(yǔ)言的語(yǔ)法結(jié)構(gòu)來(lái)描述要實(shí)現(xiàn)的功能,然后通過(guò)各種軟件環(huán)境[XX語(yǔ)言編譯器、XX語(yǔ)言解釋器]將這樣符合人類(lèi)語(yǔ)言的語(yǔ)法編譯或者解釋成計(jì)算機(jī)能認(rèn)識(shí)和執(zhí)行的語(yǔ)言去執(zhí)行并實(shí)現(xiàn)功能的過(guò)程,于是出現(xiàn)了高級(jí)語(yǔ)言。
~面向過(guò)程的程序設(shè)計(jì)
高級(jí)語(yǔ)言出現(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ò)程比較復(fù)雜的系統(tǒng)來(lái)說(shuō)的話,面向過(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)了你:面向?qū)ο?/div>
這時(shí)候,一幫大佬們圍坐在一起,開(kāi)始商量怎么樣讓我們的程序更加適合開(kāi)發(fā)結(jié)構(gòu)完整、流程復(fù)雜的系統(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ī)劃國(guó)家的各個(gè)機(jī)構(gòu);或者讓一個(gè)人開(kāi)一家公司,規(guī)劃公司的部門(mén)結(jié)構(gòu);或者就簡(jiǎn)單的讓一個(gè)人管理自己的家庭,規(guī)劃家里的房子、柜子、桌椅板凳等等各種東西的歸置一樣;如果能做到這一點(diǎn),符合正常人的思維習(xí)慣的程序設(shè)計(jì)思路不就出現(xiàn)了么!??!
~ 人之初,性本善
面向?qū)ο螅凑障到y(tǒng)的需要,將系統(tǒng)中用到的各個(gè)數(shù)據(jù)封裝成獨(dú)立的對(duì)象,通過(guò)對(duì)象之間的互相協(xié)作,來(lái)完成一個(gè)功能的過(guò)程;成為面向?qū)ο蟮某绦蛟O(shè)計(jì)。
簡(jiǎn)單看一下面向?qū)ο蟪绦蛟O(shè)計(jì)的思路
實(shí)現(xiàn)這樣一個(gè)業(yè)務(wù):我陪女朋友去看電影
面向過(guò)程的設(shè)計(jì)思路:
1~我待著女朋友出發(fā);
2~到電影院選電影、選座、買(mǎi)2張票;
3~進(jìn)放映廳,看電影;
4~看完電影,回家。
面向?qū)ο蟮脑O(shè)計(jì)思路:
1~抽取對(duì)象:我、女朋友、電影院
2~抽取對(duì)象的屬性:我(看電影的行為,買(mǎi)票的行為),女朋友(看電影的行為),電影院(賣(mài)票的行為、放映電影的行為)
3~我[對(duì)象] 的<看電影>的方法中調(diào)用 女朋友[對(duì)象]的<看電影>的方法,然后調(diào)用我[對(duì)象]的<買(mǎi)票>的方法,在<買(mǎi)票>方法中調(diào)用電影院[對(duì)象]<賣(mài)票>的方法,最后完成我和女朋友看電影這個(gè)功能。
1.2. 面向?qū)ο蟪绦蛟O(shè)計(jì)的特征
面向?qū)ο笤趯?shí)際項(xiàng)目開(kāi)發(fā)中,為了更加符合人類(lèi)的語(yǔ)言習(xí)慣和認(rèn)識(shí)這個(gè)世界的思維方式,給這樣的程序設(shè)計(jì)添加了一些特殊的處理讓開(kāi)發(fā)人員更加容易理解,同時(shí)提高了程序的健壯性、可擴(kuò)展性和可維護(hù)性等
面向?qū)ο蟪绦蛟O(shè)計(jì)有三個(gè)最主要的特征
封裝
繼承
多態(tài)
這三個(gè)特征主要含義如下:
1.封裝:將對(duì)象的敏感的信息封裝在對(duì)象的內(nèi)部,不讓外界直接訪問(wèn),提高數(shù)據(jù)的安全性
2.繼承:通過(guò)繼承關(guān)系,梳理對(duì)象和對(duì)象之間的關(guān)系,同時(shí)提高了程序設(shè)計(jì)功能的強(qiáng)大的擴(kuò)展性和代碼的復(fù)用性
3.多態(tài):程序在運(yùn)行過(guò)程中,實(shí)時(shí)根據(jù)不同的數(shù)據(jù)執(zhí)行不同的處理邏輯展現(xiàn)不同的狀態(tài),讓程序的功能更加的完善健壯
后續(xù)的課程中,會(huì)對(duì)面向?qū)ο蟮奶卣鬟M(jìn)行詳細(xì)的介紹
>>>更多VR/AR入門(mén)教程:VR入門(mén)