給OOP初學者的建議:先搞懂「資料跟行為在一起」就好,其它的慢慢來
初學者接觸OOP,幾乎都會有以下疑惑: 我到底為什麼要學OOP?OOP解決了什麼問題?書上這些範例就算不用OOP也寫得出來吧? 然後覺得「繼承」、「多型」、「介面」、「抽象類別」等等的名詞很難,覺得OOP很難。 其實這些名詞雖然重要,但對新手來說,本來就很難在一開始就搞懂。 建議先搞懂「資料跟行為在一起」是什麼,以及它的好處在哪,就可以了,其它的慢慢來。 什麼叫做「資料跟行為在一起」? 假設我們在開發一個「中英文互助學習網」,鼓勵中文人士與英語人士登入討論。 這個系統的貼文、留言功能會顯示「發文日期」。 發文日期要根據使用者的註冊身份(台灣人、英語人士)顯示不同格式(台灣格式、西方格式)。 下面就以這個日期格式的功能舉例說明「資料跟行為在一起」是什麼意思。 作法一:直接硬寫(不OOP、資料跟行為混在一起) 初學者通常會用最簡單、也最直覺的作法,直接硬寫出來,像這樣: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 < ? php $ postDate = '2016-06-02' ; # 假設資料庫取出來的發文日期長這樣 if ( /* 判斷是否顯示台灣格式 */ ) { # 轉換成這樣 2016.6.2 $ arr = explode ( '-' , $ postDate ) ; $ year = $ arr [ 0 ] ; $ month = $ arr [ 1 ] ; $ day = $ arr [ 2 ] ; echo "$year.$month.$day" ; } else { // 西方格式 # 轉換成這樣 6/2/2016 ...