当前位置: 首页 > 图文教程 > 网络编程 > ASP > ASP怎么谈到应用到类的?

ASP
ASP基础讲座(下)
解决IIS5 HTTP500内部错误
ASP 3.0高级编程(四十六)
ASP 3.0高级编程(四十五)
ASP 3.0高级编程(四十四)
ASP 3.0高级编程(四十三)
ASP 3.0高级编程(四十二)
ASP 3.0高级编程(四十一)
ASP 3.0高级编程(三十九)
ASP 3.0高级编程(三十八)
ASP 3.0高级编程(三十七)
ASP 3.0高级编程(三十六)
ASP 3.0高级编程(三十五)
ASP 3.0高级编程(三十四)
ASP 3.0高级编程(三十三)
ASP 3.0高级编程(三十二)
ASP 3.0高级编程(三十一)
ASP错误代码说明
jscript错误代码及相应解释大全
ASP错误处理

ASP怎么谈到应用到类的?


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

面向对象的程序设计

随着程序的设计的复杂性增加,结构化程序设计方法又不够用了。不够用的根本原因是“代码重用”的时候不方便。面向对象的方法诞生了,它通过继承来实现比较完善的代码重用功能。很多学生在应聘工作,面试的时候,常被问及一个问题“你来谈谈什么是面向对象的程序设计”,学生无言,回来问我,这个问题应该怎么回答。我告诉他,你只要说一句话就够了“面向对象程序设计是对数据的封装;范式(模板)的程序设计是对算法的封装。”后来再有学生遇到了这个问题,只简单的一句对答,对方就对这个学生就刮目相看了(学生后来自豪地告诉我的)。为什么那?因为只有经过彻底的体会和实践才能提炼出这个精华。

面向对象的设计方法和思想,其实早在70年代初就已经被提出来了。其目的就是:强制程序必须通过函数的方式来操纵数据。这样实现了数据的封装,就避免了以前设计方法中的,任何代码都可以随便操作数据而因起的BUG,而查找修改这个BUG是非常困难的。那么你可以说,即使我不使用面向对象,当我想访问某个数据的时候,我就通过调用函数访问不就可以了吗?是的,的确可以,但并不是强制的。人都有惰性,当我想对 i 加1的时候,干吗非要调用函数呀?算了,直接i++多省事呀。呵呵,正式由于这个懒惰,当程序出BUG的时候,可就不好捉啦。而面向对象是强制性的,从编译阶段就解决了你懒惰的问题。

巧合的是,面向对象的思想,其实和我们的日常生活中处理问题是吻合的。举例来说,我打算丢掉一个茶杯,怎么扔那?太简单了,拿起茶杯,走到垃圾桶,扔!注意分析这个过程,我们是先选一个“对象”------茶杯,然后向这个对象施加一个动作——扔。每个对象所能施加在它上面的动作是有一定限制的:茶杯,可以被扔,可以被砸,可以用来喝水,可以敲它发出声音......;一张纸,可以被写字,可以撕,可以烧......。也就是说,一旦确定了一个对象,则方法也就跟着确定了。我们的日常生活就是如此。但是,大家回想一下我们程序设计和对计算机的操作,却不是这样的。拿DOS的操作来说,我要删除一个文件,方法是在DOS提示符下:c:> del 文件名<回车>。注意看这个过程,动作在前(del),对象在后(文件名),和面向对象的方法正好顺序相反。那么只是一个顺序的问题,会带来什么影响那?呵呵,大家一定看到过这个现象:File not found. “啊~~~,我错了,我错了,文件名敲错了一个字母”,于是重新输入:c:> del 文件名2<回车>。不幸又发生了,计算机报告:File read only. 哈哈,痛苦吧:)。所以DOS的操作其实是违反我们日常生活中的习惯的(当然,以前谁也没有提出过异议),而现在由于使用了面向对象的设计,那么这些问题,就在编译的时候解决了,而不是在运行的时候。obj.fun(),对于这条语句,无论是对象,还是函数,如果你输入有问题,那么都会在编译的时候报告出来,方便你修改,而不是在执行的时候出错,害的你到处去捉虫子。

同时,面向对象又能解决代码重用的问题——继承。我以前写了一个“狗”的类,属性有(变量):有毛、4条腿、有翘着的尾巴(耷拉着尾巴的那是狼)、鼻子很灵敏、喜欢吃肉骨头......方法有(函数):能跑、能闻、汪汪叫......如果它去抓耗子,人家叫它“多管闲事”。好了,狗这个类写好了。但在我实际的生活中,我家养的这条狗和我以前写的这个“狗类”非常相似,只有一点点的不同,就是我的这条狗,它是:卷毛而且长长的,鼻子小,嘴小......。于是,我派生一个新的类型,叫“哈巴狗类”在“狗类”的基础上,加上新的特性。好了,程序写完了,并且是重用了以前的正确的代码——这就是面向对象程序设计的好处。我的成功只是站在了巨人的肩膀上。当然,如果你使用VC的话,重用最多的代码就是MFC的类库。

============================================================

OK,那么看看我们如何使用ASP的。

大家一般都是使用IIS的默认脚本语言VbScript作为ASP的服务器端执行语言的,在起初基本都是将该VBS脚本和HTML掺合在一起,实现着某些功能。比如需要在当前页显示最新的5条记录了,就可以这样。

1、先定义数据库的连接,如:

2、然后建立数据库记录集合,提取相关信息

以下为引用的内容:
Set rs = Server.CreateObject ("ADODB.Recordset")
sql = "Select top 5 * from [news] order by n_id desc"
rs.Open sql,conn,1,1

3、最后通过循环的方法将数据显示出来

以下为引用的内容:
do while not rs.eof
response.write rs("n_title")
rs.movenext
loop
'还有最后的关闭和释放操作
rs.close
set rs=nothing

那么就是在 response.write rs("n_title") 这里,为了最终的网页设计的需要,在它的前前后后,估计还是需要加入一些其他的HTML标签元素的。于是很自然的,VBS脚本和HTML掺合了。

再来看,如果说有很多页都需要显示这5条记录,那是不是每个页都要这样去设置,当然最主要的只是每个页的设计样子不同。那这就是重复。重复在那里?那里可以不要重复?

1、针对数据库的连接,都直接建立了一个数据库连接文件conn.asp,内容即如上。

2、那么只要是需要使用数据库的,需要建立连接的,直接包含引用该数据库连接文件,即可了事。

<!--#include file="conn.asp"-->

那么上面是省去的什么重复?每次数据库连接的重复。这是对于通用的某些共用的代码的防重复。接着来看,如果说我要这个页面显示5条,那个页面显示6条,又该如何?很显然,这只能是对当前页中的SQL语句进行简单的修改,比如原来是 top 5 的修改为 top 6。

OK,继续看,是不是还有重复?有,除了SQL查询定义的不同,其他的都是重复。

于是,继续想办法:可不可以自己来定义提取的条数?就是我想提取几条就几条,但程序只需要写一个。那么这时候,函数的就派上用场了啊。比如我定义这样的函数:

以下为引用的内容:

Function topnews(tnum)

Set rs = Server.CreateObject ("ADODB.Recordset")
sql = "Select top "&tnum&" * from [news] order by n_id desc"
rs.Open sql,conn,1,1

do while not rs.eof
response.write rs("n_title")
rs.movenext
loop

rs.close
set rs=nothing

End Function

那么,就可以使用 topnews(5) 或者 topnews(6) 来完成需要了

……咋一看,似乎ASP用上函数这就算最终的完成了。因为主要的程序功能做成了函数模块,需要在前台页面使用该功能时,直接调用一下,必要时修改下函数参数值就是一个完美的结局/。

那么,ASP中怎么又引入了类?这类是什么?又是如何应用?

在ASP的脚本语言中,VBscript里有个Class关键字,用它可来声明一个自定义类。比如

以下为引用的内容:
Class name