注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

奕克

爱家人爱工作爱生活

 
 
 

日志

 
 

asp网站中如何使用面向对象的类  

2010-09-20 23:28:57|  分类: 技术 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
         Class在asp中出现蛮久了,不过很少看到它被用在代码当中.记得当年研究动网的论坛程序的时候,看到了一些例子,当时还觉得比较崇拜----对自己没用过的技术.
        但是Class这个东西,如果用得比较少,充其量只是一个大模块的包装方式. 只有大规模地用它来开发,才能显出它对项目管理的优越性来. 所谓的意大利面条式代码,就会和asp划上句号了. 
       我想目前大部分的asp程序员中都还没有使用Class,对面向对象这种术语也不太熟悉,需要增加一章来描述一下asp中的类所扮演的角色,以及和面向对象编程的关系. 
       我会用尽量贴近编程实践的方式来解释Class的运用,但不会动用面向对象之类的抽象术语,如果你有了面向对象的理论基础,可以把这些内容与其结合,或者会有你独特的发现. 如果没有了解过面向对象,也不用一定要知道面向对象是怎么回事,只要通过阅读本系列的文章,学会了Class的用法,并且在编程中依据了其中的法则,就可以足够健壮地管理你的asp代码了. 
        Class相当于一个包装箱,它可以将变量和函数包装起来,形成一个整体,本系列文章要讲的所有内容,可以说是包装的学问. 
例如,我们可以包装一个数学处理的Class,并使用它: 

<%
Class Con_Math 
 Public A 
 Public B 
 Private intC 
 Public Function Sum() 
    intC = cint(A) + cint(B) 
    Sum = intC 
 End Function 
End Class 

set math = new Con_Math 
math.A = 19 
math.B = 80 
Response.write math.Sum 
set math = nothing 

 
逐行解释语法: 
1, 定义了一个包装箱,名字叫 Con_Math ,大家都知道Math是数学的意思,Con_前缀是我的编程习惯,对于可能会在整个程序中使用的Class,冠一个Con_前缀,代表它是一个通用性的Class. 纯属编程习惯,但是加个前缀不光是一个习惯问题,等会在后面会做解释. 

2,3 放进去了2个变量,名字为A,B, 它们前面的Public代表它们是公共的变量,可以被外面的程序访问到. 

4 变量intC被定义为Private,表示它是包装箱内部的私有变量,不可以从外面看到它,也不可以强行扯出来,无论你有多大力气都不行的.偷出来?你试试看. 

6,7,8,9 这四行定义了一个进行加法运算的函数,除了一个Public,其他的都是你天天用的东西,如果你不眼熟...... 还是别看这个系列了,先去做做基础功课比较好. 同上面的两个变量一样,加一个Public表示包装箱在这里开了一个洞,你可以从外面看到它,使用它. 

10 End Class 打上封箱的胶带,一个整整齐齐的Class就包装完成了 
      只不过,这个包装箱只是一个构思,不能当现成的用. 借用唐僧大师的话:(悟空他要吃我)只是一个构思,还没有成为现实(他又何罪之有呢),不如等它实例化以后,再用也不迟啊(再定他的罪不迟啊). 
      实例化,就表示实际的吃肉行为. 
      我们可以在asp代码中轻易地实例化我们的构思,可惜西天路上千千万万的妖怪都没有办法实例化他们的"吃唐僧肉"的Class,实在真是可怜悯者! 
      这是程序员的优越性. 
12 实例化了我们定义好的Class,实例化名是不能和构思名一模一样的,不然在语法方面会乱套的.所以大家现在知道了,为什么会给Class加个前缀的习惯么? 当然,大家完全可以不用Con_做前缀,如下等等都是好材料:Yaomin_ Jimo_ Chunge_ ......或者用你老婆的闺名都可以的,人要活得有想象力一点. 

13,14 我们把被公开的两个变量A,B赋值,这里的.号,大家完全可以想象它是包装箱上开的一个洞,通过这个洞,你可以把东西放进去取出来.一定要通过这个洞的.嗯?太小了?不不,别担心,再大的东西也可以放进去的.就像人的嘴巴,虽然小,地球那么大的食物也可以被吃光的. 

15 我们通过小洞,把它的函数运算结果掏出来,显示在页面上,99,吉利啊,打开一个记事本,把这段代码写进去吧,然后在IIS里面运行吧. 
 
16 男同志在家吃完饭,是要洗碗洗锅的吧. set ** = nothing 也是同样的道理.这个和创建Recordset之后要清掉也是一样的用法. set nothing以后,就表示它从内存里面丢弃了,这个万能包装箱所占的位置就空出来了,你的网站性能当然会提高,还犹豫什么? 用完了赶紧set nothing. 

我知道大家都不会这么玩Function的,至少是Sum(19,80)才更方便使用,好,我们在包装箱上再打一个洞出来: 

Class Con_Math 
Public A 
Public B 
Private intC 
Public Function Sum() 
intC = cint(A) + cint(B) 
Sum = intC 
End Function 
Public Function Sum2(ByVal vA,ByVal vB) 
Sum2 = cint(vA) + cint(vB) 
End Function 
End Class 
set math = new Con_Math 
Response.write math.Sum2(19,80) 
set math = nothing 

 
当然上述代码还不能够完成类的复用,复用的意义就跟孙猴子那个猴毛一样,一条猴毛可以生出千千万万个猴子,一条猴毛变了,千千万万个猴子也跟着变。需要将class代码独立放入一个math.class的文件,该文件内容如下:
<%
Class Con_Math 
Public A 
Public B 
Private intC 
Public Function Sum() 
intC = cint(A) + cint(B) 
Sum = intC 
End Function 
Public Function Sum2(ByVal vA,ByVal vB) 
Sum2 = cint(vA) + cint(vB) 
End Function 
End Class 
%>

然后主页面的调用代码改为:
<!--#include file ="math.class"-->
<%
set math = new Con_Math 
Response.write math.Sum2(19,80) 
set math = nothing 
%>

这样就可以重复利用math.class这个类文件了,在涉及到数据库操作时,将存取封装到这个类文件中,可以减少实际主页面的asp代码,实现高内聚低耦合的页面。。。
 
你还想Ctrl+C ? 
虽然你这么有诚意地看着我,但是你还是要说是不是想学,不可能你不想学我偏要你学,也不能你想学我偏不让你学,难道你真的想学?确认? 
那就不要Ctrl+C吧.
 
  评论这张
 
阅读(101)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017