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