但是Class這個東西,如果用得比較少,充其量只是一個大模塊的包裝方式. 只有大規模地用它來開發,才能顯出它對項目管理的優越性來. 所謂的意大利面條式代碼,就會和asp劃上句號了.
我想目前大部分的asp程序員中都還沒有使用Class,對面向對象這種術語也不太熟悉,需要增加一章來描述一下asp中的類所扮演的角色,以及和面向對象編程的關系.
我會用盡量貼近編程實踐的方式來解釋Class的運用,但不會動用面向對象之類的抽象術語,如果你有了面向對象的理論基礎,可以把這些內容與其結合,或者會有你獨特的發現. 如果沒有了解過面向對象,也不用一定要知道面向對象是怎麼回事,只要通過閱讀本系列的文章,學會了Class的用法,並且在編程中依據了其中的法則,就可以足夠健壯地管理你的asp代碼了.
Class相當於一個包裝箱,它可以將變量和函數包裝起來,形成一個整體,本系列文章要講的所有內容,可以說是包裝的學問.
例如,我們可以包裝一個數學處理的Class,並使用它:
復制代碼 代碼如下:
Class Con_Math
Public A
Public B
Private intC
Public Function Sum()
intC = cint(A) + cint(B)
Sum = intC
End Function
End Class
set math = new Con_Math
math.A = 19
math.B = 80
Response.write math.Sum
set math = nothing
逐行解釋語法:
1, 定義了一個包裝箱,名字叫 Con_Math ,大家都知道Math是數學的意思,Con_前綴是我的編程習慣,對於可能會在整個程序中使用的Class,冠一個Con_前綴,代表它是一個通用性的Class. 純屬編程習慣,但是加個前綴不光是一個習慣問題,等會在後面會做解釋.
2,3 放進去了2個變量,名字為A,B, 它們前面的Public代表它們是公共的變量,可以被外面的程序訪問到.
4 變量intC被定義為Private,表示它是包裝箱內部的私有變量,不可以從外面看到它,也不可以強行扯出來,無論你有多大力氣都不行的.偷出來?你試試看.
6,7,8,9 這四行定義了一個進行加法運算的函數,除了一個Public,其他的都是你天天用的東西,如果你不眼熟...... 還是別看這個系列了,先去做做基礎功課比較好. 同上面的兩個變量一樣,加一個Public表示包裝箱在這裡開了一個洞,你可以從外面看到它,使用它.
10 End Class 打上封箱的膠帶,一個整整齊齊的Class就包裝完成了
只不過,這個包裝箱只是一個構思,不能當現成的用. 借用唐僧大師的話:(悟空他要吃我)只是一個構思,還沒有成為現實(他又何罪之有呢),不如等它實例化以後,再用也不遲啊(再定他的罪不遲啊).
實例化,就表示實際的吃肉行為.
我們可以在asp代碼中輕易地實例化我們的構思,可惜西天路上千千萬萬的妖怪都沒有辦法實例化他們的"吃唐僧肉"的Class,實在真是可憐憫者!
這是程序員的優越性.
12 實例化了我們定義好的Class,實例化名是不能和構思名一模一樣的,不然在語法方面會亂套的.所以大家現在知道了,為什麼會給Class加個前綴的習慣麼? 當然,大家完全可以不用Con_做前綴,如下等等都是好材料:Yaomin_ Jimo_ Chunge_ ......或者用你老婆的閨名都可以的,人要活得有想象力一點.
13,14 我們把被公開的兩個變量A,B賦值,這裡的.號,大家完全可以想象它是包裝箱上開的一個洞,通過這個洞,你可以把東西放進去取出來.一定要通過這個洞的.嗯?太小了?不不,別擔心,再大的東西也可以放進去的.就像人的嘴巴,雖然小,地球那麼大的食物也可以被吃光的.
15 我們通過小洞,把它的函數運算結果掏出來,顯示在頁面上,99,吉利啊,這是我的出生年的前兩位和後兩位相加的數字. 打開一個記事本,把這段代碼寫進去吧,然後在IIS裡面運行吧.
16 男同志在家吃完飯,是要洗碗洗鍋的吧. set ** = nothing 也是同樣的道理.這個和創建Recordset之後要清掉也是一樣的用法. set nothing以後,就表示它從內存裡面丟棄了,這個萬能包裝箱所占的位置就空出來了,你的網站性能當然會提高,還猶豫什麼? 用完了趕緊set nothing.
我知道大家都不會這麼玩Function的,至少是Sum(19,80)才更方便使用,好,我們在包裝箱上再打一個洞出來:
復制代碼 代碼如下:
Class Con_Math
Public A
Public B
Private intC
Public Function Sum()
intC = cint(A) + cint(B)
Sum = intC
End Function
Public Function Sum2(ByVal vA,ByVal vB)
Sum2 = cint(vA) + cint(vB)
End Function
End Class
set math = new Con_Math
Response.write math.Sum2(19,80)
set math = nothing
你還想Ctrl+C ?
雖然你這麼有誠意地看著我,但是你還是要說是不是想學,不可能你不想學我偏要你學,也不能你想學我偏不讓你學,難道你真的想學?確認?
那就不要Ctrl+C吧.