当前位置: 首页 > 图文教程 > 网络编程 > ASP > 在VBScript中使用类(三)

ASP
asp生成三维饼图的函数
ASP下的简洁的多重查询的方法与函数 真不错
发一个ASP的ADODB类代码
A利用ASP小偷和Google实现在线翻译功能的代码
ASP类型网站结合动网论坛会员的方法
Asp下实现多表单域无组件文件上传的实例
asp制作中常用到的函数库集合
易心asp分页类 v1.0
asp中xmlhttp组件发包
检测是否为数字类型的asp代码
可以获得文件的文件名的asp函数
用asp实现访问远程计算机上MDB access数据库文件的方法
用ASP实现写IIS日志的代码
asp在IE浏览器中下载服务端上的各类文件的实现方法
asp汉字中文图片验证码的实现代码
asp WAP获取手机终端信息的一段代码
asp取得数组中的最大值的方法
用asp实现的截取指定格式字符串的代码
asp jmail发邮件 详细解析
ASP编程中连接数据库和数据库操作的常用代码

ASP 中的 在VBScript中使用类(三)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 143 ::
收藏到网摘: n/a

我们来分析一下(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来调用它。如果可以使用相同关键字同时为其赋值并获得它的值不是更好吗?当然,那也可以。

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

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 = Ho