中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > Web开发 > Asp > 综合文章
在VBScript中使用类(三)
作者:asilas 时间:2002-03-22 11:15 出处:互联网 责编:chinaitpower
              摘要:在VBScript中使用类(三)

我们来分析一下(2)中的程序:

Class TVProgram

               Public StartTime

 

               Public internal_ProgramDate

 

               Public Property Get ProgramDate

                       ProgramDate = Day(internal_ProgramDate) & _

                               " " & MonthName(Month(internal_ProgramDate)) & _

                               " " & Year(internal_ProgramDate)

               End Property

 

               Public ProgramTitle

        End Class

 

        Dim objTVShow

        Set objTVShow = New TVProgram

 

        objTVShow.StartTime = CDate("17:30")

        objTVShow.internal_ProgramDate = DateSerial(1999,9,17)

        objTVShow.ProgramTitle = "The Jerry Springer Show"

 

 

        Response.Write objTVShow.ProgramTitle & " is on at " & _

       objTVShow.StartTime & " on " & objTVShow.ProgramDate & "."

 

当调用对象的属性ProgramDate时,实际上执行了函数ProgramDate,即如上定义的函数,而很快你也将习惯这种在声明部分使用Public或Private关键字的方式。关键字“Property”,告知了编译器如同调用属性一样在外部调用函数。接着的“Get”,表明该函数是输出还是获得一个值。

Get的意思是“允许外部代码去‘获取’一个值”,与其类似的关键字还有“Let”和“Set”,但这两个比较复杂,因而我们以后再讨论。

接下去的代码看来有点难度的,给objectname.internal_ProgramDate赋值并通过objectname.ProgramDate来调用它。如果可以使用相同关键字同时为其赋值并获得它的值不是更好吗?当然,那也可以。

如果定义GetLet属性的名称相同,可以将它们当作对象相同的属性,但这只限于它们定义了相同数量的成员。(以下代码看来不太相同,仅作为实例参考)

Class TVProgram

               Public StartTime

 

               Public internal_ProgramDate

 

               Public Property Get ProgramDate

                       ProgramDate = Day(internal_ProgramDate) & " " _

                               & MonthName(Month(internal_ProgramDate)) & _

                               " " & Year(internal_ProgramDate)

               End Property

 

               Public Property Let ProgramDate(ByVal varDateIn)

                       internal_ProgramDate = CDate(varDateIn)

               End Property

 

               Public ProgramTitle

        End Class

 

        Dim objTVShow

        Set objTVShow = New TVProgram

 

        objTVShow.StartTime = CDate("17:30")

        objTVShow.ProgramDate = "17 Sept 99"

        objTVShow.ProgramTitle = "The Jerry Springer Show"

    Response.Write objTVShow.ProgramTitle & " is on at " & _

       objTVShow.StartTime & " on " & objTVShow.ProgramDate & "."

 

以上代码中Let的声明部分看来似乎是一个多余的元素,当我第一次看到时研究了很长时间。每次我使用“0”作为变量用在每个属性上,我总是得到这个错误信息,“元素数量必须相等”。“它们确实相等!”抓狂之后,我回过头去看程序才觉得自己的愚蠢!:)

原因是,当你试图为ProgramDate赋值时,你会使用这样一行程序:

objTVShow.ProgramDate = dtmMyDate

为了方便,等号右边的值(这里指dtmMyDate)作为了一个程元赋给了函数。因此编译器可能会认为在Get ProgramDate行有0程元,而Let ProgramDate却多一个!分配的值总是被略过而作为属性的最后一个程元,所以即使你使用其他程元,所赋的值总是作为最后一个程元。

现在看程序。无论通过ProgramDate设置日期为文本形式,还是用internal_ProgramDate译成日期变量,程序都没有问题。但能不能只使用一个入口呢?

如果internal_ProgramDate只能在内部有效,而使用Let ProgramDate检查传输的数据类型,我们就可以作出选择。例如:

Class TVProgram

               Public StartTime

 

               Private internal_ProgramDate

 

               Public Property Get ProgramDate

                       ProgramDate = Day(internal_ProgramDate) & " " & _

                               MonthName(Month(internal_ProgramDate)) & _

                               " " & Year(internal_ProgramDate)

               End Property

 

               Public Property Let ProgramDate(ByVal varDateIn)

                       If IsDate(varDateIn) Then

                               internal_ProgramDate = varDateIn

                       Else

                               'Place some error handling code in here.

                       End If

               End Property

 

               Public ProgramTitle

        End Class

并同样声明StartTime属性:

Class TVProgram

               Private internal_StartTime

 

               Public Property Get StartTime

                       StartTime = Hour(internal_StartTime) & ":" _

                               & Minute(internal_StartTime)

               End Property

 

               Public Property Let StartTime(ByVal varTimeIn)

                       If IsDate(varTimeIn) Then

                               internal_StartTime = varTimeIn

                       End If

               End Property

 

               Private internal_ProgramDate

 

               Public Property Get ProgramDate

                       ProgramDate = Day(internal_ProgramDate) & " " _

                               & MonthName(Month(internal_ProgramDate)) & _

                               " " & Year(internal_ProgramDate)

               End Property

 

               Public Property Let ProgramDate(ByVal varDateIn)

                       If IsDate(varDateIn) Then

                               internal_ProgramDate = varDateIn

                       End If

               End Property

 

               Public ProgramTitle

        End Class

 

        ...

 

    现在的代码离我们想要的还是有些不太实用,我们将在其他页使用类TVProgram,因此最好将其独立定义,以便所有也面都可以调用。我们将在第四部分讨论这点。

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有