面向?qū)ο缶幊袒A(chǔ)知識(shí)
面向?qū)ο缶幊堂Ш欤粌H僅代表著一種新的語(yǔ)法竭业,同時(shí),更是一種看待問題的新方式国葬。
初學(xué)者最常見的錯(cuò)誤是不恰當(dāng)?shù)厥褂妹嫦驅(qū)ο缶幊碳夹g(shù)贤徒。
PHP 將會(huì)告訴我們代碼中的語(yǔ)法錯(cuò)誤芹壕,但是我們要自己學(xué)習(xí)如何避免理論錯(cuò)誤。
程序歸根結(jié)底都是與數(shù)據(jù)打交道:一個(gè)用戶在 HTML 表單中輸入了數(shù)據(jù)接奈;PHP 代碼對(duì)其做驗(yàn)證操作踢涌,發(fā)送郵件,或者在數(shù)據(jù)庫(kù)中將其存儲(chǔ)序宦,等等睁壁。
這些就是簡(jiǎn)單的動(dòng)詞(操作)和名詞(數(shù)據(jù))。
在面向過程的編程中互捌,我們的重點(diǎn)放在動(dòng)詞上:做這個(gè)潘明,然后做這個(gè),然后再做這個(gè)秕噪。
在面向?qū)ο缶幊讨星担覀兊闹攸c(diǎn)放在名詞上:程序需要什么類型的數(shù)據(jù)工作?
兩種編程思想中腌巾,我們都需要辨別所需要的名詞和動(dòng)詞遂填,不同的地方在于,應(yīng)用設(shè)計(jì)所關(guān)注的點(diǎn)不同澈蝙。
面向?qū)ο缶幊讨邢偶幔瑑蓚€(gè)最重要的術(shù)語(yǔ)是“類”和“對(duì)象”。
類是對(duì)某個(gè)事物的概括定義碉克,可以看做是一個(gè)藍(lán)圖凌唬。對(duì)象則是對(duì)某個(gè)事物的具體實(shí)現(xiàn),可以看做是依照藍(lán)圖建立起來(lái)的房屋漏麦。
為了實(shí)現(xiàn)面向?qū)ο缶幊炭退埃覀兪紫榷x類,然后在程序中根據(jù)需要實(shí)現(xiàn)它們?yōu)閷?duì)象撕贞。
面向?qū)ο缶幊痰脑瓌t之一是“模塊化”:把應(yīng)用程序拆分為明確的子部分更耻。Web 站點(diǎn)需要做很多事情:與數(shù)據(jù)庫(kù)交互、處理表單捏膨、發(fā)送電子郵件秧均、生成 HTML 代碼,如此等等号涯。
這些都可以作為一個(gè)模塊目胡,也就是一個(gè)類。
通過分離不相關(guān)(雖然它們是交互的)的元素链快,我們就可以實(shí)現(xiàn)代碼的獨(dú)立開發(fā)誉己,而且維護(hù)和更新工作也不會(huì)那么混亂,調(diào)試工具也會(huì)簡(jiǎn)化域蜗。
與“模塊化”相關(guān)的概念是“抽象”:類的定義應(yīng)該很寬泛巨双。
面向?qū)ο缶幊痰牧硪粋€(gè)原則是“封裝”:分隔和隱藏工作的完成方式噪猾。
一個(gè)設(shè)計(jì)良好的對(duì)象可以根據(jù)我們的需要做任何事情,而我們甚至不必知道它是如何完成工作的筑累。與“封裝”的概念經(jīng)常一并提起的概念是“訪問控制”和“可見性”袱蜡,它們表示了類中組件的可訪問程度。