`
happmaoo
  • 浏览: 4341371 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

在VBScript中使用类

阅读更多
1前言
2首先,在我进入实质性主题并解释如何建立类之前,我希望保证你知道“对象”。虽然你可以在程序中使用对象而不用知道其正确的规则,但我并不建议如此!对于对象的初学者,接下来的部分将让你了解其概念及内容。已经了解面向对象编程(OOP)的读者可以跳过这章节。
3导论
4“对象是什么?”——对象通常代表某种实体,主要是一个变量和函数的集合。
5“实体是什么?”——字面上说,实体是一个“事物”,我的意思是一个概念或者任何一个物体。例如,一辆汽车是一个实体,因为它是一个物体。你公司销售部门销售产品也是一个实体,当然,你也可以将其拆开来看,销售人员、客户、产品等都是实体。
6让我们更深入的来看“销售”这个实体(对象)。为了使你更准确地有一个销售的“映像”,你需要知道客户买了什么,是哪个客户,谁是销售人员等等……这看来是一个简单的事件,但假设所有信息是存储在单独的数据库表中的,那么当你需要获得某个销售过程所有相关信息时,你必须在你的数据库中做多次独立查询,再将所有的数据集拢。有没有更简便的办法而一次获得销售的所有信息呢?“对象”。
7在对象中,你可以植入代码以从其他表中获得数据,你也可以保存对象属性的所有信息,这样,你可以轻松地使用代码管理你的销售数据。例如:
8
9'Openthedatabaseconnection
10SetobjConn=Server.CreateObject("ADODB.Connection")
11objConn.Open"MyDSN"
12
13'Createtherecordsetobject
14SetobjRS=Server.CreateObject("ADODB.Recordset")
15
16'DefinetheSQLquery
17strComplexSQLQuery="SELECTC.Name,S.NameFROMCustomersC,"&_
18"SalespeopleS,SalesSlWHERESl.CustomerID=C.IDAND"&_
19"Sl.SalespersonID=S.IDANDSl.ID="&strIDOfThisSale&";"
20
21'Opentherecordset
22objRS.OpenstrComplexSQLQuery,objConn,adOpenForwardOnly,_
23adLockReadOnly,adCmdText
24
25'Takethecustomerandsalespersonnamesfromtherecordset
26strCustomerName=objRS(0)
27strSalesPersonName=objRS(1)
28
29'Tidyuptheobjects
30objRS.Close
31objConn.Close
32SetobjRS=Nothing
33SetobjConn=Nothing
34
35'Outputthedata
36Response.Write"Thissalewasmadeby"&strSalesPersonName&_
37"to"&strCustomerName
38
39
40可以使用“对象”来替代:
41
42'Createthe"Sale"object
43SetobjSale=NewSale
44
45'Lookupthecorrectsale
46objSale.ID=strIDOfThisSale
47
48'Outputthedata
49Response.Write"Thissalewasmadeby"&objSale.SalesPersonName&_
50"to"&objSale.CustomerName
51
52'Tidyuptheobjects
53objSale.Close
54SetobjSale=Nothing
55如果你使用“Sale”对象做比打印更多的事,可以让你省去很多的打字时间。
56
57计算中,对象包括“属性”和“方法”。属性主要是储存在对象中的一个变量,其用法与变量相同。唯一的区别在于参数赋值为:strMyVar="Thisisastringvariant",而对象属性为objObject.Property="Thisisastringvariant"。这点非常简单而有用处。方法可以理解为植入对象中的函数与过程,可以使用strMyVar=objObject.MethodName(strMyVar)来代替strMyVar=FunctionName(strMyVar)。写法不同,但功能相同。属性的一个例子是对象Response中的ExpireAbsolute,Response.ExpiresAbsolute=CDate("1September1999")。方法的一个例子是对象Response中的Write方法,Response.Write"Helloworld!"
58VBScript的一个新特性就是其可以创建新的对象而不需要求诸于花销时间都极大的编译器。我将向读者展示如何创建对象的类,并希望提供一个良好的开端。
59
60在VBScript中使用类(二)
61创建对象
62在VBScript中创建对象类型(类)时,你首先要知道,这真的很容易!我在一个下午自学,只是阅读了MicrosofVBScript的参考书,但必须承认,这书不是最容易阅读的文档。
63初学者需要安装VBScript5.0引擎,可以在Microsoft'sScriptingSite下载。
64我们来看代码。类的定义与函数和子过程非常类似。起始行为Class<MyClassName>,结尾是EndClass,所有的对象定义写在中间部门。现在我们可以用所学的来建立第一个类,不实现任何功能的类。
65Class4GuysTestObject
66'你的ASP代码
67EndClass
68这看上去不是那么回事,但当你写入下面的代码后,你将创建一个对象的实例:
69DimobjTestObject
70SetobjTestObject=New4GuysTestObject
71SetobjTestObject=Nothing
72显然,我们现在还不能用对象做任何事,现在我将解释如何在对象中定义属性和方法。
73使用对象可以做的最基础的,是建立一组数据。例如,假如要将时间、日期及视频程序标题建立在一起,你可以创建一个包含属性“StartTime”,“ProgramDate”和“ProgramTitle”的对象。代码如下:
74
75ClassTVProgram
76
77PublicStartTime
78PublicProgramDate
79PublicProgramTitle
80
81EndClass
82
83DimobjTVShow
84SetobjTVShow=NewTVProgram
85
86objTVShow.StartTime=CDate("17:30")
87objTVShow.ProgramDate=DateSerial(1999,9,17)
88objTVShow.ProgramTitle="TheJerrySpringerShow"
89
90Response.WriteobjTVShow.ProgramTitle&"isonat"&_
91objTVShow.StartTime&"on"&objTVShow.ProgramDate
92
93代码工作的方式是,我们定义StartTime,ProgramDate和ProgramTitle为类TVProgram的属性。这样,这些属性就像其他变量一样来处理,没有设置值则不会执行代码。属性名字前的Public字段有其真实含义,而且非常重要。如果你不特指一个方法或属性为public或private,系统默认值为public,但最好养成定义任何值的良好书写习惯(也方便你之后自己的阅读)。
94
95上面程序的结果大致如下(决定于你的本地服务器配置):
96
97TheJerrySpringerShowisonat5:30pmon17/09/99.
98
99我在英国,所以日期现实如上。不论你跑什么工程,它的效果都不错,但只有你开始使用其他对象的功能,为你可能需要的所有信息和功能,创建一个完美的接口,以支持你所建对象包围的实体,你才会体会到对象的真正实力。
100现在,如果你不喜欢上面例子显示日期的方法,而希望以同一种格式现实日期,也没有不要在引用每个ProgramDate属性时加FormatDateTime(),你只需要将此类代码植入属性本身。
101
102这样需要用另一种方法定义属性。同样,我们将使用ProgramDate为外部可见属性,但因为ProgramDate属性将成为一个函数而不是静态值,我们将实际日期保存在另一个属性中internal_ProgramDate。
103
104ClassTVProgram
105
106PublicStartTime
107Publicinternal_ProgramDate
108
109PublicPropertyGetProgramDate
110ProgramDate=Day(internal_ProgramDate)&_
111""&MonthName(Month(internal_ProgramDate))&_
112""&Year(internal_ProgramDate)
113EndProperty
114
115PublicProgramTitle
116EndClass
117
118DimobjTVShow
119SetobjTVShow=NewTVProgram
120
121objTVShow.StartTime=CDate("17:30")
122objTVShow.internal_ProgramDate=DateSerial(1999,9,17)
123objTVShow.ProgramTitle="TheJerrySpringerShow"
124
125Response.WriteobjTVShow.ProgramTitle&"isonat"&_
126objTVShow.StartTime&"on"&objTVShow.ProgramDate&"."
127
128
129程序的结果如下:
130
131TheJerrySpringerShowisonat5:30pmon17September1999.
132
133在VBScript中使用类(三)
134
135我们来分析一下(2)中的程序:
136
137ClassTVProgram
138
139PublicStartTime
140
141Publicinternal_ProgramDate
142
143PublicPropertyGetProgramDate
144
145ProgramDate=Day(internal_ProgramDate)&_
146
147""&MonthName(Month(internal_ProgramDate))&_
148
149""&Year(internal_ProgramDate)
150
151EndProperty
152
153PublicProgramTitle
154
155EndClass
156
157DimobjTVShow
158
159SetobjTVShow=NewTVProgram
160
161objTVShow.StartTime=CDate("17:30")
162
163objTVShow.internal_ProgramDate=DateSerial(1999,9,17)
164
165objTVShow.ProgramTitle="TheJerrySpringerShow"
166
167Response.WriteobjTVShow.ProgramTitle&"isonat"&_
168
169objTVShow.StartTime&"on"&objTVShow.ProgramDate&"."
170
171当调用对象的属性ProgramDate时,实际上执行了函数ProgramDate,即如上定义的函数,而很快你也将习惯这种在声明部分使用Public或Private关键字的方式。关键字“Property”,告知了编译器如同调用属性一样在外部调用函数。接着的“Get”,表明该函数是输出还是获得一个值。
172
173Get的意思是“允许外部代码去‘获取’一个值”,与其类似的关键字还有“Let”和“Set”,但这两个比较复杂,因而我们以后再讨论。
174
175接下去的代码看来有点难度的,给objectname.internal_ProgramDate赋值并通过objectname.ProgramDate来调用它。如果可以使用相同关键字同时为其赋值并获得它的值不是更好吗?当然,那也可以。
176
177如果定义Get和Let属性的名称相同,可以将它们当作对象相同的属性,但这只限于它们定义了相同数量的成员。(以下代码看来不太相同,仅作为实例参考)
178
179ClassTVProgram
180
181PublicStartTime
182
183Publicinternal_ProgramDate
184
185PublicPropertyGetProgramDate
186
187ProgramDate=Day(internal_ProgramDate)&""_
188
189&MonthName(Month(internal_ProgramDate))&_
190
191""&Year(internal_ProgramDate)
192
193EndProperty
194
195PublicPropertyLetProgramDate(ByValvarDateIn)
196
197internal_ProgramDate=CDate(varDateIn)
198
199EndProperty
200
201PublicProgramTitle
202
203EndClass
204
205DimobjTVShow
206
207SetobjTVShow=NewTVProgram
208
209objTVShow.StartTime=CDate("17:30")
210
<
分享到:
评论

相关推荐

    VBSCRIPT中文手册

    三态常数 在代码中使用,以便表示每个显示的值。 True 其值为 -1 的关键字。 TypeName 函数 返回一字符串,它提供了关于变量的变体子类型信息。 UBound 函数 返回指定维数数组的最大有效下标。 UCase 函数 返回...

    VBScript 语言参考中文手册CHM

    三态常数 在代码中使用,以便表示每个显示的值。 True 其值为 -1 的关键字。 TypeName 函数 返回一字符串,它提供了关于变量的变体子类型信息。 UBound 函数 返回指定维数数组的最大有效下标。 UCase 函数 返回...

    VBScript 语言参考

    三态常数 在代码中使用,以便表示每个显示的值。 True 其值为 -1 的关键字。 TypeName 函数 返回一字符串,它提供了关于变量的变体子类型信息。 UBound 函数 返回指定维数数组的最大有效下标。 UCase 函数 返回...

    基于神经网络的恶意脚本分类-JavaScript&VBScript.pdf

    基于神经网络的恶意脚本分类-JavaScript&VBScript Neural Classification of Malicious Scripts: A study with JavaScript and VBScript

    MFC调用脚本(javascript ,vbscript)的类

    NULL 博文链接:https://liyuan66.iteye.com/blog/1837792

    使用VBScript类上传文件

    使用VBScript类上传文件。 当您无法部署自定义COM对象时很有用。

    vbscript和jsscript在一块的chm文件

    与 ECMAScript Edition 4 一起开发的、JScript.NET 中的改进功能包括了准确编译的代码、类型与无类型的变量、类(内含继承、函数重载、属性访问器等等)、包、跨语言支持,以及对 .NET 框架的访问。 VBScript ...

    DES + AES 标准加解密算法For ASP(VBScript)

    在绝大多数的ASP应用中,很少涉及到这两个算法。很可惜,我在先后经历的两家公司的产品(项目)中,都碰上了。 第一个是天津联通短信网关的一个简单集成,要用到3DES; 第二个是公司产品和杭州小灵通项目上的合作,...

    JsScript VbScript脚本解析控件

    8.实现远程、本地 xml文件的解析,免去在程序内部编写复杂的xml操作类,尤其是像VB这样的程序, 可以大大节约开发时间(本压缩包内的VB的例子就是最典型最简单的解析xml的例子)。 9.可以利用xmlhttp实现asp、jsp等...

    vbscript编写辅助学习工具中文绿色版(集成VBS脚本从入门到精通)

    VBScript 是一款非常有特色的编辑器①、内置语法高亮度显示, ②、可自动检测文件类型, 现在网上有很多类似文件编辑器,这个是不可多得的一款,不论是日常使用还是手写程序代码,相信它都会给你带来方便。...

    JScript+VBScript等WINDOW脚本技术

    与 ECMAScript Edition 4 一起开发的、JScript.NET 中的改进功能包括了准确编译的代码、类型与无类型的变量、类(内含继承、函数重载、属性访问器等等)、包、跨语言支持,以及对 .NET 框架的访问。 VBScript ...

    VBS基础篇 - vbscript class类的定义与使用

    vbs Class就是声明一个类的名称,以及组成该类的变量、属性和方法的定义,需要的朋友可以参考下

    VBS基础篇 - VBScript过程(使用sub 与 Function定义函数)

    在 VBScript 中,过程被分为两类:Sub 过程和 Function 过程,需要的朋友可以参考下

    第3章 VBscript.ppt

    VBscript.ppt 详细的讲述vb脚本的制作网页的技术,属于asp技术类的入门

    VB6 正则表达式类

    原创,用 VBScript 在 VB 中使用正则表达式的类

    在vbscript中判断COM类是否存在的实现代码

    在VBS中,我们有时需要判断一个COM类是否存在,以便执行不同的操作,需要的朋友可以参考下

    ASP中一个用VBScript写的随机数类

    外国人写的一个class,这么一点小小的应用,除非有特殊需求,还没有必要模块化。 用asp产生一个随机数。 &lt;&#37; ”************************************************************************** ” CLASS: c...

    用ASP-VBScript对OWC11统计图表进行封装的类及实例

    可以生成图表图片到磁盘,也可以直接输出图片到浏览器中,其中的chart.asp是类的使用实例,包含了OWC11类的成员和使用方法,inc文件夹里还包含了一个Excel获取数据的类

    VBScript编辑器

    VBScript编辑器源码

Global site tag (gtag.js) - Google Analytics