国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > VBScript > 正文

VBS基礎篇 - vbscript class類的定義與使用

2020-06-26 17:16:44
字體:
來源:轉載
供稿:網友

從網上看到一個vbs中使用class的例子, 轉出來,共同學習!

Class 語句:聲明一個類的名稱,以及組成該類的變量、屬性和方法的定義。

vbs類的使用方法

   類的結構:

   class 類名稱
  
   end class

   調用方法 set myclass=new 類名稱
   中間類里面的代碼,
  
   類模塊的事件過程。

Private Sub Class_Initialize()這里寫上類實例化的時候執行的代碼。end sub Private Sub class_terminate()這里是類注銷的時候自動執行的代碼,end Sub

上面兩個子程序的名稱是規定的,如果改了名稱,就會無效。
1、變量
2、函數(Function)
3、屬性(Property)
4、方法 (SUB)

一、對象的訪問限制,分為公有和私有,公有的(public)可以讓外部訪問,私有的(Private )外部不能訪問,上面幾種角色都可以定義為公有或私有。

定義變量
public mystr,mystring
這樣就定義了兩個公有的變量,調用方法myclass.mystr
反之
Private mystr,mystring
則為私有的變量,外部不能訪問的。

函數

Public Function Checkstr(Str)If Isnull(Str) Then  CheckStr = ""  Exit Function End IfCheckStr = Replace(Str,"'","''")End Function

這是一個公有函數,外部可以訪問的,調用方法 myclass.Checkstr(Str)
反之如果為私有的,則用Private 取代public

3、屬性(Property)

屬性分兩種,一種是只寫屬性,一種是只讀屬性。

也可以為公有或私有,現在以公有為例子。
這是一個只寫的屬性

Public Property Let Value(ByVal vNewValue)Dim tmpstrtmpstr = vNewValuetmpstr = split(tmpstr,"@@@")html = split(tmpstr(0),"|||")Strings = split(tmpstr(1),"|||")pic = split(tmpstr(2),"|||")End Property這是一個只讀的屬性Public Property Get TodayNumTodayNum = Application(Forum_sn & "_Dv_setup")(9,0)End Property

如果要有讀寫的屬性那么

Public Property Get TodayNumTodayNum = Application(Forum_sn & "_Dv_setup")(9,0)End PropertyPublic Property Let TodayNum(ByVal vNewValue)TodayNum = vNewValueEnd Property

這樣寫TodayNum就具有讀寫的屬性了,

方法,也以公有為例,

Public Sub TrueCheckUserLogin()代碼end sub

以下為一個簡單的類的的例子:

Class cls_templatesPublic html,Strings,picPrivate Sub Class_Initialize()end sub Private Sub class_terminate()end subPublic Property Let Value(ByVal vNewValue)  Dim tmpstr  tmpstr = vNewValue  tmpstr = split(tmpstr,"@@@")  html = split(tmpstr(0),"|||")  Strings = split(tmpstr(1),"|||")  pic = split(tmpstr(2),"|||")End PropertyEnd Class

使用VBScript 中的類組織開發

當在一個機構內部創建Web應用程序時,有時候你會發現你自己從一個應用程序中復制和粘貼相同的代碼到其它的應用程序中。如果你能夠固化所有這些過程到一個好用的小包(package)中,其后你就可以在整個域中使用它了,這樣會方便很多。

同 時,如果你有一個重復使用的過程,創建一個類包含你的過程可能會比較有用。使用類組織你的代碼有一些優點:它使得你的代碼容易閱讀和調試;你可以將你的類 輕松的移值到一個Web服務中;你為其它開發人員提供一個抽象工具(從而節省了時間和資金);同時在一個項目的開發階段你還保留了靈活性。

當 把你的通用過程組織到一個類的時候,你創建一級抽象,允許你在幾乎所有代碼中實現這些過程。例如,假設在你創建的每個Web應用程序中,你者需要初始化用 戶信息。這個初始化過程包括在用戶登錄到你的應用程序時根據用戶憑證所做的一些數據庫服務器連接。如果你在每個應用程序中都需要完成這個任務的話,那么將 你的代碼固化到一個類中相當有意義。

下面是實現方法:

Dim MyToolboxSet MyToolbox = New CToolboxResponse.Write "UserName: " & MyToolbox.UserName & "<BR>" & vbCrLfResponse.Write "UserPhone: " &  MyToolbox.UserPhone & "<BR>" & vbCrLfSet MyToolbox = NothingClass CToolboxPrivate m_conn, m_rsPrivate m_username, m_userphonePublic Property Get UserName()   UserName = m_usernameEnd PropertyPublic Property Get UserPhone()   UserPhone = m_userphoneEnd PropertyPrivate Sub Class_Initialize()   Set m_conn = Server.CreateObject("ADODB.Connection")   m_conn.ConnectionString = "Some connection string"   m_conn.Open   Set m_rs = Server.CreateObject("ADODB.Recordset")   Set m_rs.ActiveConnection = m_conn   m_rs.Open "SELECT * FROM Users WHERE userid = '" &             Request.ServerVariables("LOGON_USER") & "'"   If Not m_rs.EOF Then     m_username = m_rs.Fields("username")     m_userphone = m_rs.Fields("userphone")   End IfEnd SubPrivate Sub Class_Terminate()   On Error Resume Next   m_rs.Close   Set m_rs = Nothing   m_conn.Close   Set m_conn = NothingEnd SubEnd Class

從 例子中你可以看到,UserName 和 UserPhone 屬性在類初始化之后就會有值。你可以將這個類的代碼放到 ASP 代碼的最后。然后在其余 的代碼中其功能就可以在使用,不用實例化ADO對象,進行數據庫調用和之后的清理。而且,如果你使用的是 Microsoft Visual InterDev,那么類中定義的屬性和方法可以通過智能感知(IntelliSense)使用。

智能感知只對一級屬性和方法有效,所以如果你創建一個類返回其它 ASP 類的對象,那么 InterDev 就不會提供可用的方法和屬性。

下面的代碼是一個類的骨架:

Class MyClassPrivate Sub Class_Initialize()End SubPrivate Sub Class_Terminate()End SubEnd Class

使用這個基本信息,一個類被聲明,并且可以使用它來創建對象。但是這個類的對象沒有功能——它們是無用的東西。類的方法從 Public Sub 或者 Public Function 聲明構建(Subs 沒有返回值,而 Function 有返回值)。

有 兩個方法可以暴露屬性:既可以在類的全局上下文中使用 Public VarName,也可以使用 Public Property Get/Set/Let。如果你需要一個只讀屬性,那么只要簡單地使用一個 Property Get 聲明即可。所 有其它聲明為 Private 的 Properties,Subs 或者 Functions 只有在實例化的對象才可用。在類的全局上下文中聲明為 Private 的變量是成員變量。

創建類的另外一個好處是你可以輕易的將這個類聲明移值到 Web 服務中。因為這是很多開發人員前 進的方向,你可以通過使用類創建面向對象的代碼先行一步。當你移值這些類聲明到一個 Web 服務時,你不需要重寫所有的放置了那段代碼的ASP代碼。所 要做的唯一的改變就是你的對象的實例化。

我發現創建這個抽象的最大的優點是可以使用其它 Web 開發者的幫助。因為對于很多開發人員來 說在每個不同的實現中重復創建相同的代碼效率相當低,所以這個方法為每個開發人員提供了一個抽象工具。這就允許每個開發人員將精力更多地集中在當前工作的 功能上面,而不是花費時間重寫他們已經開發過的代碼上面。

如果你奇怪為什么我不提供一個COM對象來處理這個功能,那是因為它會把你鎖定 到細節設計中。通過在 ASP 中動態地創建類,你可以不用重新編譯和發布就能夠對類做出更改。在類固定之后,再將它移值到 COM、Windows 腳 本組件(WSC)或者一個 Web 服務中,但是在開發階段還是靈活一些好。

以下是補充資料

Class name '參數name必選項,Class 的名稱  statements '一個或多個語句,定義了 Class 的變量、屬性和方法End Class

初始化與終結化的應用

使用Class語句可以創建一個對象,可以為它編寫字段、屬性及方法,它只有兩個對象事件——Initialize與Terminate。

Class TestClass  Private Sub Class_Initialize  ' 設置 Initialize 事件,相當于構造函數    MsgBox("TestClass started")  End Sub  Private Sub Class_Terminate  ' 設置 Terminate 事件,相當于析構函數    MsgBox("TestClass terminated")  End SubEnd ClassSet X = New TestClass  ' 創建一個 TestClass 實例Set X = Nothing   ' 刪除實例a.類的事件方法格式是固定的,事件名是固定的,事件只能是Sub不能是Function,事件無參數;b.類實例通過New來創建,通過Nothing來銷毀;c.記住所有的類實例都是對象,創建與銷毀時記得用Set語句,沒有Set是錯的。

類可以有公有(Public)和私有(Private)字段:
(1)公有的字段可以外部訪問,私有的不能:
(2)可以定義數組字段,且此數組字段可以是動態數組

類可以有公有或者私有的屬性:
(1)公有的屬性可以外部調用,私有的屬性不能
(2)用Property Get定義讀屬性,用Property Set和Property Let來定義寫屬性
(3)當定義寫屬性時,如果此屬性封裝的是對象字段,則此寫屬性必須是Property Set
(4)屬性不必是成對出現,這樣就可以造成只讀或只寫屬性,當然Private任意一方也可以造成這種情況

Set MyUser = New UserMyUser.MyAge = "22" '設置對象的MyAge屬性值MyUser.Myname = "john" '設置對象的Myname屬性值MyUser.ToString '調用對象的ToString方法 Class User  Private Str_Name '聲明變量Str_Name  Private Int_Age '聲明變量Int_Age   'Property Get語句,獲取屬性值或對象引用,Default只與Public一起使用,表示該屬性為類的默認屬性  Public Property Get Myname    Myname = Str_Name  End Property    Public Property Get MyAge    MyAge = Int_Age  End Property   'Property Let語句,設置屬性值  Public Property Let Myname(New_Name)    Str_Name = New_Name  End Property     Public Property Let MyAge(New_Age)    Int_Age = new_age  End Property    '類方法   Public Sub ToString()    MsgBox "姓名:"+Myname+" 年齡:"+MyAge  End Sub End Class

這篇文章就介紹到這了,需要的朋友可以參考一下。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黔西县| 石屏县| 黔西| 松江区| 贵州省| 龙川县| 襄汾县| 三门县| 公主岭市| 宁阳县| 星子县| 社旗县| 新密市| 万安县| 哈密市| 高要市| 资源县| 锦州市| 丰台区| 临洮县| 茌平县| 昭通市| 中阳县| 临高县| 南安市| 宕昌县| 福贡县| 杂多县| 深圳市| 保靖县| 安阳市| 巨野县| 昌江| 罗山县| 合水县| 南部县| 耿马| 巴林左旗| 项城市| 调兵山市| 洪泽县|