欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
ASP面向對象編程探討及比較
ASP是Microsoft于較早期推出的動(dòng)態(tài)網(wǎng)頁(yè)編程技術(shù),但其結合ADO對數據庫方便快捷的訪(fǎng)問(wèn)、結合XML、COM/ActiveX等其它技術(shù) 實(shí)現服務(wù)器多層結構的功能使它在今天還有著(zhù)頑強的生命力,并且依然有著(zhù)一定的發(fā)展。ASP.Net雖然在架構上完全不同于A(yíng)SP,但它很多內建對象也是基 于A(yíng)SP進(jìn)行擴展的。網(wǎng)上有無(wú)數的介紹ASP的文章,卻鮮有介紹ASP面向對象以及與其它語(yǔ)言比較的,這也就是我下決心寫(xiě)這篇文章的原因。
因為是早期的版本,ASP只提供了很弱的面向對象的接口。眾所周知,ASP的實(shí)現語(yǔ)言分為VBScript和JavaScript/JScript: 在VBScript中有Class關(guān)鍵字,可以用來(lái)聲明一個(gè)自定義類(lèi);JavaScript就比較怪,它用一個(gè)函數來(lái)"聲明"類(lèi),然后在該函數里通過(guò) this.prototype定義屬性,this.func定義方法。這里將以VBScript為主進(jìn)行討論,VBScript的類(lèi)聲明是這樣的:
Class name
    statements
End Class

這里statements里可以聲明公有或私有的成員,包括函數、成員和屬性。關(guān)于屬性,不得不贊一下微軟的get和set方法,這個(gè)在COM中出現 的理念,直到.Net中一直被沿用下來(lái),個(gè)人認為對程序員而言,比Java用getProp()、setProp()兩個(gè)方法來(lái)實(shí)現同樣效果要方便直觀(guān)得 多。
相比之下,VBScript中的類(lèi)與PHP4中的類(lèi)各有千秋(當然跟最新的PHP5沒(méi)法比),VBScript中的類(lèi)保持了VB的不完全面向對象的 "特性",它僅僅實(shí)現了最基本的構造/析構函數、成員函數、變量、屬性,甚至構造函數不能帶參數。PHP4中則還實(shí)現了繼承、函數重載等類(lèi)的重要性質(zhì),也 只有實(shí)現了這些,才能稱(chēng)之為面向對象,才有可能為實(shí)現多態(tài)提供基礎。但二者均沒(méi)有實(shí)現類(lèi)的靜態(tài)(static)成員等功能。盡管可以用其它一些變通達到同 樣的功效,但從面向對象的思想出發(fā),這都是不徹底的(由于PHP非常靈活,PHP4中可以通過(guò)成員函數的靜態(tài)變量來(lái)間接實(shí)現類(lèi)的靜態(tài)變量;而"::"—— 可以實(shí)現類(lèi)的靜態(tài)函數訪(fǎng)問(wèn)的操作符——在PHP4中沒(méi)有嚴格檢查。換句話(huà)說(shuō),所有的成員函數都可以當成靜態(tài)函數訪(fǎng)問(wèn),只要你在該函數里不使用成員變量就不 會(huì )出錯。VBScript根本沒(méi)有實(shí)現static,只能用Session或Application來(lái)實(shí)現)。所以在平常的使用中,你可以使用 VBScript的自定義類(lèi)來(lái)封裝一些操作,但不要指望它像C++ / Java / .Net那樣為你的面向對象思想服務(wù)。
VBScript同樣發(fā)揚了VB中默認的參數或變量是引用的好風(fēng)格。這樣,盡管Script語(yǔ)言中對類(lèi)型不敏感,但它還能夠達到C/C++里指針/引用同樣的功效,完成很多事情。最基本的,比如說(shuō)用它定義一個(gè)列表(List)的節點(diǎn)類(lèi)ListNode:
<%
Class ListNode
    Public Content
    Public NextNode

    Private Sub Class_Initialize()
        Content="Node"
        Set NextNode=Nothing
    End Sub
End Class

%>
呵呵,就這么簡(jiǎn)單,但不要感到鄙夷,也不要忘記對變量初始值。VB中也差不多,聲明時(shí)加上類(lèi)型就行了。而使用時(shí):
<%
Set nh=new ListNode
Set nh.NextNode=new ListNode
‘其它語(yǔ)句......
‘遍歷列表
Set n=nh
While Not n is Nothing
    Response.Write n.Content+"<br />"
    Set n=n.NextNode
Wend

%>
如果不加其它代碼,上面的運行結果是兩個(gè)"node"。VBScript的自定義類(lèi)和對象也不外如是,只要你掌握基本的概念,對它有一定了解,就再簡(jiǎn)單不過(guò)了。再次強調,用Set語(yǔ)句來(lái)對對象進(jìn)行賦值,相當于Java里的賦值,都是獲得一個(gè)引用。這比PHP4里默認對象賦值是調用拷貝構造函數來(lái)創(chuàng )建一 個(gè)新的對象好多了(甚至連obj=new Obj;這樣的語(yǔ)句都會(huì )創(chuàng )建兩個(gè)對象!如果你想獲得引用的話(huà),要在等號后變量前顯示地加上&),而似乎PHP5也不想修改PHP4的這種做法。
ASP中的Session本身是可以?xún)Υ鎸ο蟮?,它可以保存基本變量,數組,自動(dòng)化對象(Automation Object)等,但在儲存自定義類(lèi)的對象時(shí)會(huì )碰到問(wèn)題。如下面的代碼:
<%
If isempty(Session("node")) Then Set Session("node")=New ListNode
Set n=Session("node")
Response.Write n.Content

%>
還是上面的ListNode這個(gè)類(lèi),這段代碼意圖在一個(gè)用戶(hù)會(huì )話(huà)中只保留一個(gè)ListNode的對象。所以在用戶(hù)第一次訪(fǎng)問(wèn)該網(wǎng)頁(yè)時(shí),會(huì )生成ListNode的一個(gè)對象,并保存在Session("node")中;后面訪(fǎng)問(wèn)該網(wǎng)頁(yè)時(shí),因為Session("node")不為空了,所以不會(huì )生成一個(gè)新的對象,而是到 Session("node")中取出保存的對象。理論上應該也會(huì )輸出100,但是問(wèn)題來(lái)了,ASP一直會(huì )報錯:
Microsoft VBScript runtime error ‘800a01b6‘
Object doesn‘t support this property or method: ‘n.Content‘

用n.Type也會(huì )出錯。同樣的代碼翻譯成PHP,運行卻是可以通過(guò)的。為什么?
個(gè)人分析下來(lái),認為Session可以保存對象是沒(méi)錯,只是VBScript中類(lèi)型轉換的機制太弱,而且沒(méi)有顯式的強制類(lèi)型轉換供用戶(hù)使用,無(wú)法將 Session("node")正確轉換為L(cháng)istNode類(lèi)型。因為是自定義的類(lèi),我們只能在每個(gè)頁(yè)面中都出現類(lèi)的定義語(yǔ)句,這樣在A(yíng)SP看來(lái),每次讀 取這個(gè)頁(yè)面時(shí),ListNode類(lèi)都是一個(gè)新類(lèi),所以就不認得Session中的這個(gè)類(lèi)的對象了。
結論:盡量不要想到用Session或Application來(lái)存儲ASP中自定義類(lèi)的對象。如果確實(shí)需要,可以考慮用COM來(lái)編寫(xiě)類(lèi),然后在VBScript中用:Set Session("obj") = Server.CreateObject("YourApp.YourClass")來(lái)創(chuàng )建一個(gè)對象,然后即可實(shí)現上面預想的功能了。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
ASP動(dòng)態(tài)網(wǎng)頁(yè)設計試題
《ASP動(dòng)態(tài)網(wǎng)頁(yè)設計》項目3 數據庫的創(chuàng )建與連接
web
ASP教程:第四篇 ASP腳本基礎
asp?vbscript?數組的使用
On Error Resume Next:VBscript錯誤處理
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久