选择显示字体大小

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

如果定义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 = 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,因此最好将其独立定义,以便所有也面都可以调用。我们将在第四部分讨论这点。


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons