在VBScript中使用類
前言
首先,在我進入實質性主題并解釋如何建立類之前,我希望保證你知道“對象”。雖然你可以在程式中使用對象而不用知道其正确的規則,但我并不建議如此!對于對象的初學者,接下來的部分将讓你了解其概念及内容。已經了解面向對象程式設計(OOP)的讀者可以跳過這章節。
導論
l “對象是什麼?”——對象通常代表某種實體,主要是一個變量和函數的集合。
l “實體是什麼?”——字面上說,實體是一個“事物”,我的意思是一個概念或者任何一個物體。例如,一輛汽車是一個實體,因為它是一個物體。你公司銷售部門銷售産品也是一個實體,當然,你也可以将其拆開來看,銷售人員、客戶、産品等都是實體。
讓我們更深入的來看“銷售”這個實體(對象)。為了使你更準确地有一個銷售的“映像”,你需要知道客戶買了什麼,是哪個客戶,誰是銷售人員等等……這看來是一個簡單的事件,但假設所有資訊是存儲在單獨的資料庫表中的,那麼當你需要獲得某個銷售過程所有相關資訊時,你必須在你的資料庫中做多次獨立查詢,再将所有的資料集攏。有沒有更簡便的辦法而一次獲得銷售的所有資訊呢?“對象”。
在對象中,你可以植入代碼以從其他表中獲得資料,你也可以儲存對象屬性的所有資訊,這樣,你可以輕松地使用代碼管理你的銷售資料。例如:
'Open the database connection
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "MyDSN"
'Create the recordset object
Set objRS = Server.CreateObject("ADODB.Recordset")
'Define the SQL query
strComplexSQLQuery = "SELECT C.Name, S.Name FROM Customers C, " & _
"Salespeople S, Sales Sl WHERE Sl.CustomerID=C.ID AND " & _
"Sl.SalespersonID=S.ID AND Sl.ID=" & strIDOfThisSale & ";"
'Open the recordset
objRS.Open strComplexSQLQuery, objConn, adOpenForwardOnly, _
adLockReadOnly, adCmdText
'Take the customer and sales person names from the recordset
strCustomerName = objRS(0)
strSalesPersonName = objRS(1)
'Tidy up the objects
objRS.Close
objConn.Close
Set objRS = Nothing
Set objConn = Nothing
'Output the data
Response.Write "This sale was made by " & strSalesPersonName & _
" to " & strCustomerName
可以使用“對象”來替代:
'Create the "
Sale
" object
Set objSale = New Sale
'Lookup the correct sale
objSale.ID = strIDOfThisSale
'Output the data
Response.Write "This sale was made by " & objSale.SalesPersonName & _
" to " & objSale.CustomerName
'Tidy up the objects
objSale.Close
Set objSale = Nothing
如果你使用“Sale”對象做比列印更多的事,可以讓你省去很多的打字時間。
計算中,對象包括“屬性”和“方法”。屬性主要是儲存在對象中的一個變量,其用法與變量相同。唯一的差別在于參數指派為:
strMyVar = "This is a string variant"
, 而對象屬性為
objObject.Property="This is a string variant"
。這點非常簡單而有用處。方法可以了解為植入對象中的函數與過程,可以使用
strMyVar = objObject.MethodName(strMyVar)來代替strMyVar =FunctionName(strMyVar)。寫法不同,但功能相同。屬性的一個例子是對象Response中的ExpireAbsolute,Response.ExpiresAbsolute = CDate("1 September 1999")。方法的一個例子是對象Response中的Write方法,Response.Write "Hello world!"。
VBScript的一個新特性就是其可以建立新的對象而不需要求諸于花銷時間都極大的編譯器。我将向讀者展示如何建立對象的類,并希望提供一個良好的開端。
如果有什麼問題歡迎來http://www.showc.com中讨論
感謝Sophie的翻譯