全场买一送一~纳米金纯眼霜 解决眼周所有问题
  • 2009-08-16

    [转]编写ASP类 - [网页技术]

    Tag:ASP

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://xmlog.blogbus.com/logs/44351528.html

    使用VBS的ASP也能定义类的!本文将介绍定义、使用类的基本方法。

    在ASP(特指使用VBS的ASP,下同)里,使用Class语句来声明一个类。语法如下:

    Class 类名
    End Class

    类的定义、变量、属性和方法等都包含在Class...End Class块中。

    下面就可以定义类的属性和方法了。正式讲属性、方法的定义之前,有一点必须了解:
    在 Class 块中,成员通过相应的声明语句被声明为 Private 或 Public。被声明为 Privat
    e 的将只在 Class 块内是可见的。被声明为 Public 不仅在 Class 块的内部是可见的,对
    Class 块之外的代码也是可见的。没有使用 Private 或 Public 明确声明的被默认为 Pub
    lic。 在类的块内部被声明为 Public 的过程 (Sub 或 Function)将成为类的方法,Public
    变量将成为类的属性。(摘自MS VBS参考)

    现在,我们来定义个自行车的类:

    Class bike

    End Class

    这样,就声明了一个名为bike的类。不过,它现在什么都不能做。要让它能做点什么,得往
    里面加些东西。

    一、私有变量
    为了交换数据等操作,我们可以声明一些Class内部的私有变量。顾名思义,私有变量只能在
    Class块中可见,外部是无法访问的。声明私有变量的语法是:
    Private 变量名
    例:Private bikename '声明了一个名为bikename的私有变量
    现在,我们来完善一下bike类:

    Class bike
    '***以下四个变量仅在本类内可见****
    Private bikename '车名
    Private bikemodel '型号
    Private bikedate '出厂日期
    Private bikespeed '速度
    End Class

    二、方法:
    之所以先讲方法,是因为定义方法对于大家来说相对熟悉。方法可以看作是函数,在VBS里可
    以使用Sub和Function来定义函数(通常把SUB定义块叫“过程”),所以,定义方法和定义
    函数(过程)的语法一样--只要加上个Public就可以了--当然,上面已经说了,Class块
    中默认就是Public,所以可以省略不写:

    Public Sub 方法名(参数)
    '方法处理代码
    End Sub

    Public Function 方法名(参数)
    '方法处理代码
    End Function

    (至于什么时候用Sub什么时候用Function并没规定,不过,一般,要求方法返回一个值就要
    用到Function,否则就用Sub。)

    一个简单的例子:
    Public Sub speedUp() '加速
    bikespeed = bikespeed + 1
    End Sub

    如此,我们的bike类就有了一个加速的功能,通过它,能使自行车的速度下降1

    三、属性
    有两种方式来定义属性,一种是在声明变量时使用Public,这样,该变量就成了类的属性;
    另一种方法是使用Property语句。下面讲第二种方法。
    和变量一样,属性的操作无非是赋值和读取值。
    (-)设置属性值(赋值)
    设置属性值使用 Property Let语句,语法如下:
    Public Property Let 属性名(参数)
    '处理代码
    End Property

    下面来设置自行车的品牌:
    Public Property Let Name(ByVal strName)
    bikename = strName
    End Property
    上例中,我们声明了一个属性:Name。并将类私有变量bikename的值设置为strName。

    (二)读取属性值
    可以使用Property Get 语句来读取属性值,语法如下:
    Public Property Get 属性名
    属性名 = 值
    End Property

    下面来读取自行车的品牌:
    Public Property Get Name '获取Name属性值
    Name = bikename
    End Property
    例中,声明了一个属性:Name,并将类私有变量bikename的值赋给该属性。
    结合上面的设置属性值,你应该很清楚了吧!

    四、综合
    到现在,一辆简单的自行车该成形了。综合以上代码:
    Class bike
    '***以下四个变量仅在本类内可见****
    Private bikename '车名
    Private bikemodel '型号
    Private bikedate '出厂日期
    Private bikespeed '速度

    Public Sub speedUp() '定义方法:加速
    bikespeed = bikespeed + 1
    End Sub


    Public Property Let Name(ByVal strName) '设置Name属性值
    bikename = strName
    End Property

    Public Property Get Name '获取Name属性值
    Name = bikename
    End Property

    End Class

    五、事件
    VBS里的Class是有事件的。它包含Initialize和Terminate两个事件。
    (一)Initialize事件:在类初始化时触发,可以用它来设置属性的初始值,以及显示欢迎
    信息等。语法如下:
    Private Sub Class_Initialize()
        语句
    End Sub
    (二)Terminate事件:在类结束时触发,可以用它来处理一些后期事务。语法如下:
    Private Sub Class_Terminate()
        语句
    End Sub

    六、实例化类
    使用Set语句来实例化类。语法如下:
    Set 实例名 = New 类名
    应用到自行车类:
    Set fhBike = New bike

    然后就能用 实例名.属性 来访问、设置属性;使用 实例名.方法 来使用方法了。
    例:
    fhBike.Name = "凤凰" '设置自行车的品牌
    fhBike.speedUp() '凤凰自行车加速

    使用完之后,别忘了释放该对象:
    Set fhBike = Nothing

    七、完整的例子
    <%
    Class bike
    '***以下四个变量仅在本类内可见****
    Private bikename '车名
    Private bikemodel '型号
    Private bikedate '出厂日期
    Private bikespeed '速度
    '***下面的变量为公共的,成了类的一个属性,可通过对象来直接访问****
    Public Author '作者

    Public Sub Class_Initialize() '类的初始化.通常,可以在这设置一些
    默认值
    Print("欢迎使用,类已成功初始化")
    bikename = "永久"
    bikemodel = "女式双轮"
    bikedate = "1999年5月"
    bikespeed = 15
    Author = "lly365"
    End Sub

    Public Sub Class_Terminate() '类结束时触发本事件.
    bikename = ""
    bikemodel = ""
    bikedate = ""
    bikespeed = 0
    Print("感谢使用!现在,类已销毁!")
    End Sub

    Public Property Let Speed(ByVal intSpeed) '设置Speed属性值
    bikespeed = intSpeed
    End Property

    Public Property Get Speed '获取Speed属性值
    Speed = bikespeed
    End Property

    Public Property Let Name(ByVal strName) '设置Name属性值
    bikename = strName
    End Property

    Public Property Get Name '获取Name属性值
    Name = bikename
    End Property

    Public Sub speedUp() '定义方法:加速
    bikespeed = bikespeed + 1
    End Sub

    Public Sub speedDown() '定义方法:减速
    bikespeed = bikespeed - 1
    End Sub

    Public Sub showInfo() '定义方法:显示信息
    Response.Write("<div style=""border:1px solid #0000""><u
    l>")
    Response.Write(showInfoItem("品牌",bikename))
    Response.Write(showInfoItem("型号",bikemodel))
    Response.Write(showInfoItem("生产日期",bikedate))
    Response.Write(showInfoItem("速度(km/h)",bikespeed))
    Response.Write("</ul></div>")
    End Sub

    Private Function showInfoItem(str,item_) '私有函数,仅在本类内部
    可见!
    showInfoItem = "<li>" & str & ":" & item_ & "</li>"
    End Function

    Sub Print(str) '省略关键字,默认为Public,所以,它也是类的一个方法
    Response.Write("<div>" & str & "</div>")
    End Sub
    End Class

    Dim fhBike
    Set fhBike = New bike '实例化

    fhBike.Print("fhBike已实例化!") '使用Print方法来显示信息
    fhBike.showInfo() '显示对象的信息

    fhBike.Print("fhBike已加速!")
    fhBike.speedUp() '加速
    fhBike.showInfo()

    fhBike.Print("设置fhBike相关属性")
    fhBike.Speed = 20 '设置速度
    fhBike.Name = "凤凰" '设置品牌名称
    fhBike.showInfo()

    fhBike.Print("现在,给fhBike减速")
    fhBike.speedDown() '减速
    fhBike.showInfo()

    fhBike.Print("本类作者: " & fhBike.Author) 'Author被声明为Public,所以可以
    直接访问(它是一个属性)
    Set fhBike = Nothing

    %>


    收藏到:Del.icio.us