ASP 使用三層架構(gòu) asp中使用類
但是class這個(gè)東西,如果用得比較少,充其量只是一個(gè)大模塊的包裝方式. 只有大規(guī)模地用它來開發(fā),才能顯出它對(duì)項(xiàng)目管理的優(yōu)越性來. 所謂的意大利面條式代碼,就會(huì)和asp劃上句號(hào)了.
我想目前大部分的asp程序員中都還沒有使用class,對(duì)面向?qū)ο筮@種術(shù)語也不太熟悉,需要增加一章來描述一下asp中的類所扮演的角色,以及和面向?qū)ο缶幊痰年P(guān)系.
我會(huì)用盡量貼近編程實(shí)踐的方式來解釋class的運(yùn)用,但不會(huì)動(dòng)用面向?qū)ο笾惖某橄笮g(shù)語,如果你有了面向?qū)ο蟮睦碚摶A(chǔ),可以把這些內(nèi)容與其結(jié)合,或者會(huì)有你獨(dú)特的發(fā)現(xiàn). 如果沒有了解過面向?qū)ο?也不用一定要知道面向?qū)ο笫窃趺椿厥?只要通過閱讀本系列的文章,學(xué)會(huì)了class的用法,并且在編程中依據(jù)了其中的法則,就可以足夠健壯地管理你的asp代碼了.
class相當(dāng)于一個(gè)包裝箱,它可以將變量和函數(shù)包裝起來,形成一個(gè)整體,本系列文章要講的所有內(nèi)容,可以說是包裝的學(xué)問.
例如,我們可以包裝一個(gè)數(shù)學(xué)處理的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, 定義了一個(gè)包裝箱,名字叫 con_math ,大家都知道m(xù)ath是數(shù)學(xué)的意思,con_前綴是我的編程習(xí)慣,對(duì)于可能會(huì)在整個(gè)程序中使用的class,冠一個(gè)con_前綴,代表它是一個(gè)通用性的class. 純屬編程習(xí)慣,但是加個(gè)前綴不光是一個(gè)習(xí)慣問題,等會(huì)在后面會(huì)做解釋.
2,3 放進(jìn)去了2個(gè)變量,名字為a,b, 它們前面的public代表它們是公共的變量,可以被外面的程序訪問到.
4 變量intc被定義為private,表示它是包裝箱內(nèi)部的私有變量,不可以從外面看到它,也不可以強(qiáng)行扯出來,無論你有多大力氣都不行的.偷出來?你試試看.
6,7,8,9 這四行定義了一個(gè)進(jìn)行加法運(yùn)算的函數(shù),除了一個(gè)public,其他的都是你天天用的東西,如果你不眼熟...... 還是別看這個(gè)系列了,先去做做基礎(chǔ)功課比較好. 同上面的兩個(gè)變量一樣,加一個(gè)public表示包裝箱在這里開了一個(gè)洞,你可以從外面看到它,使用它.
10 end class 打上封箱的膠帶,一個(gè)整整齊齊的class就包裝完成了
只不過,這個(gè)包裝箱只是一個(gè)構(gòu)思,不能當(dāng)現(xiàn)成的用. 借用唐僧大師的話:(悟空他要吃我)只是一個(gè)構(gòu)思,還沒有成為現(xiàn)實(shí)(他又何罪之有呢),不如等它實(shí)例化以后,再用也不遲啊(再定他的罪不遲啊).
實(shí)例化,就表示實(shí)際的吃肉行為.
我們可以在asp代碼中輕易地實(shí)例化我們的構(gòu)思,可惜西天路上千千萬萬的妖怪都沒有辦法實(shí)例化他們的"吃唐僧肉"的class,實(shí)在真是可憐憫者!
這是程序員的優(yōu)越性.
12 實(shí)例化了我們定義好的class,實(shí)例化名是不能和構(gòu)思名一模一樣的,不然在語法方面會(huì)亂套的.所以大家現(xiàn)在知道了,為什么會(huì)給class加個(gè)前綴的習(xí)慣么? 當(dāng)然,大家完全可以不用con_做前綴,如下等等都是好材料:yaomin_ jimo_ chunge_ ......或者用你老婆的閨名都可以的,人要活得有想象力一點(diǎn).
13,14 我們把被公開的兩個(gè)變量a,b賦值,這里的.號(hào),大家完全可以想象它是包裝箱上開的一個(gè)洞,通過這個(gè)洞,你可以把東西放進(jìn)去取出來.一定要通過這個(gè)洞的.嗯?太小了?不不,別擔(dān)心,再大的東西也可以放進(jìn)去的.就像人的嘴巴,雖然小,地球那么大的食物也可以被吃光的.
15 我們通過小洞,把它的函數(shù)運(yùn)算結(jié)果掏出來,顯示在頁面上,99,吉利啊,這是我的出生年的前兩位和后兩位相加的數(shù)字. 打開一個(gè)記事本,把這段代碼寫進(jìn)去吧,然后在iis里面運(yùn)行吧.

16 男同志在家吃完飯,是要洗碗洗鍋的吧. set ** = nothing 也是同樣的道理.這個(gè)和創(chuàng)建recordset之后要清掉也是一樣的用法. set nothing以后,就表示它從內(nèi)存里面丟棄了,這個(gè)萬能包裝箱所占的位置就空出來了,你的網(wǎng)站性能當(dāng)然會(huì)提高,還猶豫什么? 用完了趕緊set nothing.
我知道大家都不會(huì)這么玩function的,至少是sum(19,80)才更方便使用,好,我們?cè)诎b箱上再打一個(gè)洞出來:
 代碼如下:

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
相關(guān)文章
亚洲国产精品第一区二区,久久免费视频77,99V久久综合狠狠综合久久,国产免费久久九九免费视频