| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 545 人关注过本帖
标题:[求助]哪有这方面的教材下
只看楼主 加入收藏
开心娃娃
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2005-9-19
收藏
 问题点数:0 回复次数:6 
[求助]哪有这方面的教材下
我想学习编写类文件。不知从何下手,请问哪位知道哪有这方面的教材下载学习。
搜索更多相关主题的帖子: 教材 
2006-12-19 22:03
rainic
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2367
专家分:0
注 册:2005-8-9
收藏
得分:0 
Class Template

Private var1
Public var2

Private Sub Class_Initialize '初始化
var1=1
var2=""
End Sub

Public Sub subName()
...
End Sub

Private Function funcName()
...
End Function

End Class

2006-12-19 22:12
ming206
Rank: 2
来 自:重庆
等 级:等待验证会员
威 望:3
帖 子:545
专家分:7
注 册:2005-8-2
收藏
得分:0 
申明:本人再次推荐我的个人代码生成器(全新的模拟面向对象编程思想,非封装。仅仅达到模块化)
以下是一个简单的用户模块代码(CLASS形式),希望斑竹支持!
adminModel.asp:
<%
''''''''''''''''类描述'''''''''''''''
'软件自动生成adminModel类所有内容
'该类名称:adminModel
'生成时间:2006-12-20 上午 12:19:47
'主要作用:
'''''''''''''''''''''''''''''''''''''
'类代码开始
Class adminModel

'List():返回带记录集数据,当返回一条记录时,其重定义为一维数组,当返回多条记录时,例如分页返回记录集,重定义为二维数组
'Row_N:字段个数,Col_N:某当前页产生的记录数,Counts:产生的总页数
Public List(), Row_N, Col_N,Counts
'构造,初始化
Private sub class_initialize()
'类初始器内根据需要可自行添加
End sub
'销毁资源
Private sub class_terminate()
'资源释放根据需要可自行添加
End sub
'私有数据成员

Private nid
Private adminName
Private pwd

'nid的Get和Let方法
Public Property Get getnid
getnid=nid
End Property
Public Property Let getnid(Val)
nid=Val
End Property

'adminName的Get和Let方法
Public Property Get getadminName
getadminName=adminName
End Property
Public Property Let getadminName(Val)
adminName=Val
End Property

'pwd的Get和Let方法
Public Property Get getpwd
getpwd=pwd
End Property
Public Property Let getpwd(Val)
pwd=Val
End Property


''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'类内部提供外部访问的操作数据库方法,实现基本的添加、修改、删除、获得单条记录、获得多条记录
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'''''''''''''''''''''''''''''''''''''''''''''''
'软件自动生成该方法
'方法名:Insert_All
'作 用:实现加入新数据
''
'''''''''''''''''''''''''''''''''''''''''''''''
Public Function InsertAll()
Dim SQL
SQL="insert into [admin_table] "
SQL=SQL&"(adminName,pwd)"
SQL=SQL&"Values('"&getadminName&"','"&getpwd&"')"
'开始插入数据库
Conn.Execute(SQL)
If Err.Number<>0 Then
InsertAll=Err.Description
Else
InsertAll=True
End If
End Function

'''''''''''''''''''''''''''''''''''''''''''''''
'软件自动生成该方法
'方法名:Insert_Pion
'作 用:实现加入新数据,更自由的组合,例如字段自动组合,是否带条件语句
'参 数:SQL_FieldsName:数据库字段,可任意组合,例:a,b,c,d。注意中间是“,”间隔。
'参 数:SQL_FieldsValue:数据库字段对应的数据,可任意组合,注意必须和字段匹配。
'参 数:SQL_WhereStr:SQL语句的条件部分,注意不需要带Where关键字,如果不需要,则传递空值来。
'如何使用该方法?例如:在另外一个页面使用这个方法:
'dim MyClass
'set MyClass=new adminModel
'If MyClass.Insert_Pion("A,B,C,D","A值,B值,C值,D值") Then
' 操作正确,你要执行的代码
'End If
'''''''''''''''''''''''''''''''''''''''''''''''
Public Function Insert_Pion(ByVal SQL_FieldsName,ByVal SQL_FieldsValue,ByVal SQL_WhereStr)
Dim SQL
SQL="insert into [admin_table] "
SQL=SQL&"("&SQL_FieldsValue&")"
SQL=SQL&"Values("&SQL_WhereStr&")"
'判断是否传递了参数SQL_WhereStr做为查询条件
If(SQL_WhereStr<>"") Then
SQL=SQL&"Where "&SQL_WhereStr
End If
'开始插入数据库
Conn.Execute(SQL)
If Err.Number<>0 Then
Insert_Pion=Err.Description
Else
Insert_Pion=True
End If
End Function


'''''''''''''''''''''''''''''''''''''''''''''''
'软件自动生成该方法
'方法名:Update_SQL
'参 数:Where_str Where 条件,不需要带 Where关键字
'作 用:实现修改数据
''
'''''''''''''''''''''''''''''''''''''''''''''''
Public Function Update_SQL(ByVal Where_str)
Dim SQL
SQL="Update [admin_table] Set "
SQL=SQL&" adminName='"&getadminName&"'"
SQL=SQL&", pwd='"&getpwd&"'"
SQL=SQL&"Where "&Where_str
'开始执行数据库操作
Conn.Execute(SQL)
If Err.Number<>0 Then
Update_SQL=Err.Description
Else
Update_SQL=True
End If
End Function


'''''''''''''''''''''''''''''''''''''''''''''''
'软件自动生成该方法
'方法名:Update_Pion
'作 用:实现修改数据
'参 数:SQLstr:SQL字符串,自己组合,不需要带set
'参 数:Where_str:SQL Where条件语句
''
'''''''''''''''''''''''''''''''''''''''''''''''
Public Function Update_Pion(ByVal SQLstr,ByVal Where_str)
Dim SQL
SQL="Update [admin_table] Set "
SQL=SQL&"SQLstr"
SQL=SQL&" Where "&Where_str
'开始执行数据库操作
Conn.Execute(SQL)
If Err.Number<>0 Then
Update_Pion=Err.Description
Else
Update_Pion=True
End If
End Function


'''''''''''''''''''''''''''''''''''''''''''''''
'软件自动生成该方法
'方法名:Delete_SQL
'作 用:实现删除数据
'参 数:ID:SQL可以带多个进行批量删除
'调 用可以这样组合ID的字符串:dim Where_str:Where_str="id in(1,2,3,4,5)"
''
'''''''''''''''''''''''''''''''''''''''''''''''
Public Function Delete_SQL(ByVal ID)
Dim SQL
SQL="Delete From [admin_table] "
SQL=SQL&" Where "&Where_str
'开始执行数据库操作
Conn.Execute(SQL)
If Err.Number<>0 Then
Delete_SQL=Err.Description
Else
Delete_SQL=True
End If
End Function

'''''''''''''''''''''''''''''''''''''''''''''''
'软件自动生成该方法
'方法名:getInfos
'作 用:返回当前页的记录集
'参 数:Fields_N,字段串
'参 数:Where_S,SQL语句的Where条,不需要带Where关键字,如果为空。则不连Where条件
''
Public Sub getInfos(Fields_N, Where_S)
'局部变量说明:
'SQL:SQL字符串
'Rs:Recordset对象
'SQL:SQL字符串
'Fields_Count:获得字段个数
Dim Rs, SQL, Fields_Count
SQL = "Select " & Fields_N
SQL=SQL&" From [admin_table] "
SQL=SQL&" Where "&Where_S
Set Rs = Server.CreateObject("ADODB.Recordset")
Rs.Open SQL, conn, 1, 1
If Not Rs.EOF Then
'取得字段总个数
Fields_Count = Rs.Fields.Count - 1
'这是已经是有一维数组
ReDim List(Fields_Count)
For i = 0 To UBound(List)
List(i) = Rs.Fields(i)
Next
Else
'根据自己需要写代码
Response.Write ("数据库中不存在该记录!")
End If
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''
'软件自动生成该方法
'方法名:getList
'作 用:返回当前页的记录集
'参 数:Fields_N,字段串
'参 数:Page_N,传递过来的当前页号
'参 数:Where_str,SQL语句的Where条,不需要带Where关键字,如果为空。则不连Where条件
'参 数:SortTy,确定数据库聚集,一般取ID自动编号
'参 数:OrderBy_S,排列顺序,可以自己选择:ASC或DESC
''
'''''''''''''''''''''''''''''''''''''''''''''''
Public Sub getList(Fields_N, Page_N, PageCount_N,SortTy,Where_S,OrderBy_S)
'局部变量说明:
'SQL:SQL字符串
'Rs:Recordset对象
'SQL:SQL字符串
'AllCounts:获得数据库中总的记录集
Dim SQL, Rs, AllCounts
Set Rs = Server.CreateObject("ADODB.Recordset")
'SQL字符串,目的是取得总记录集
SQL = "Select Count(*) AS Cn From [admin_table] "
'判断SQL语句的条件部分是否为空
If (Where_S <> "") Then
SQL=SQL&" Where " & Where_S
End If
'取得总记录集
AllCounts = conn.Execute(SQL).Fields(0)
'取得页数
'先用除法取整
Counts = CInt(AllCounts / PageCount_N)
'判断是否有余数
If (AllCounts Mod PageCount_N) <> 0 Then
'存在余数则页数+1
Counts = Counts + 1
End If
'当页号大于1时候设置为1
If (CInt(Page_N) < 1) Then Page_N = 1
'当页号大于总页数,设置为最后一页
If (CInt(Page_N) >= Counts) Then Page_N = Counts
'先判断是否为1,也就是小于2
If (CInt(Page_N) <= 1) Then
'如果是第一页,则直接取得前PageCount_N条记录
SQL = "SELECT TOP " & PageCount_N & Fields_N &"From [admin_table] ORDER BY "& OrderBy_S
Else
'否则,按以下规则进行过滤抽出记录集
SQL = "SELECT TOP " & PageCount_N & Fields_N
SQL=SQL&" FROM [admin_table] WHERE ("&SortTy&" NOT In (SELECT TOP " & ((CInt(PageCount_N))) * CInt(Page_N - 1) & ""&SortTy&" FROM [admin_table] ORDER BY "&OrderBy_S&" ))"
SQL=SQL&" ORDER BY "&OrderBy_S
End If
'打开数据库取当前页号的记录集
Rs.Open SQL, conn, 1, 1
'取得字段个数
Row_N = Rs.Fields.Count - 1
'取得当前记录的条数
Col_N = Rs.RecordCount - 1
'重定义二维数组
ReDim List(Row_N, Col_N)
'判断存在,循环输入数组
If Not Rs.EOF Then
'循环取出行记录
For i = 0 To Col_N
'如果到尾,跳出循环
If Rs.EOF Then Exit For
'循环取出字段
For j = 0 To Row_N
List(j, i) = Rs.Fields(j)
Next
'移动到下一条记录
Rs.MoveNext
Next
End If
'关闭
Rs.Close
Set Rs = Nothing
End Sub
End Class
%>

adminModel的Action处理Get或Post传送数据页面.asp:

<!--该页面通过软件自动产生代码,请自行完善所需要的功能-->
<!--引入您自己的连接数据库页面,例如下面的Inc/conn.asp-->
<!--#include file="Inc/conn.asp"-->
<!--进入类页面,例如:uu.asp-->"
<!--#include file="adminModel.asp"-->
<!--根据需要引入您的其他页面-->
<%
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'定义变量Action:Action可以是From表单的隐藏域,或直接以Get方式传送
'当然这个变量也可以自己任意定义,代码自动生成默认名为:Action
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim Action
Dim NewadminModel
'接收Action值
Action = RequestData("Action")
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'接收表单数据,自动生成只提供最简单的方法。可以自己扩展
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Public Sub Init()
'创建类对象
Set NewadminModel = New adminModel
'接收数据
'这里需要注意from表单的元素名的相关匹配
NewadminModel.getnid = RequestData("nid")
NewadminModel.getadminName = RequestData("adminName")
NewadminModel.getpwd = RequestData("pwd")
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'仅提供最简单的方法,可以自己扩展
'当然RequestData在系统中只做一个会更好
'达到代码的重用则高点。
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Function RequestData(ByVal Data)
IF Data<>""Then
RequestData = Trim(Replace(Request(Data), "", " '"))
Else
RequestData=""
End If
End Function
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'判断取得操作
Select Case Action
''''''''''''''''''''''''''''''''''''
'这里仅提供最简单最直观的操作
'需要更多更能可以自己动手添加
''''''''''''''''''''''''''''''''''''
Case "Add" '--------------添加新数据
'调用Init方法
Call Init
'根据需要可以自己修改InsertAll()方法
'还可以自己组合SQL语句调用Insert_Pion()方法
If NewadminModel.InsertAll() = True Then
'根据需要自己完成想要的代码
Response.Write ("OK,添加成功!")
Response.End()
End If
Case "Eidt" '--------------修改数据
'调用Init方法
Call Init
Dim Where_str
'可以通过Myuu.get**取得自动编号,或其他字段
Where_str = 1 '需要自己修改
'更灵活的做法可以调用Update_Pion()方法
'自己组合SQL语句。
If NewadminModel.Update_SQL(Where_str) = True Then
'根据需要自己完成想要的代码
Response.Write ("OK,修改成功!")
Response.End()
End If
Case "Del" '--------------删除数据
Dim ID
'ID可以通过Action=RequestData(id)取得
'名字任意
ID = 1
If (NewadminModel.Delete_SQL(ID)) = True Then
'根据需要自己完成想要的代码
Response.Write ("OK,删除成功!")
Response.End()
End If
Case Else
'根据需要自己完成想要的代码
Response.Write ("Err:错误的参数!")
Response.End()
End Select
%>


adminModel的返回记录集简单调用类页面.asp:

<!--该页面通过软件自动产生代码,请自行完善所需要的功能-->
<!--引入您自己的连接数据库页面,例如下面的Inc/conn.asp-->
<!--#include file="Inc/conn.asp"-->
<!--进入类页面,例如:uu.asp-->
<!--#include file="adminModel.asp"-->
<!--根据需要引入您的其他页面-->
<%
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'定义变量
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim Myclass '创建类admin对象
Dim page '页号
Dim page_C '自己定义每页显示的记录条数
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
page_C = 3 '每页显示的记录条数默认值
page = RequestData("page") '
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'仅提供最简单的方法,可以自己扩展
'当然RequestData在系统中只做一个会更好
'达到代码的重用则高点。这个方法在多页面中生成,可以只用一个。
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'仅提供最简单的方法,可以自己扩展
'当然RequestData在系统中只做一个会更好
'达到代码的重用则高点。
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Function RequestData(ByVal Data)
IF Data<>""Then
RequestData = Trim(Replace(Request(Data), "", " '"))
Else
RequestData=""
End If
End Function
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
If page = "" Then page = 1
Set Myclass = New adminModel
'调用getList方法获得数据,分页功能
'说明:
'参数1:组合字段,如a,b,c,注意中间以 , 间隔
'page参数:当前页号,例如Request来的page
'page_C参数:确定每页显示的记录条数
'SortTy参数:聚集或非聚集字段。例如自动编号
'OrderBy_S参数:确定排序类型,例如:ID ASD 或ID DESC
'注意事项:字符串的引号两头有间隔,注意不好贴近
Call Myclass.getList("a,b,c,d", page, page_C,SortTy,Where_S, OrderBy_S)
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'简单测试,具体做根据自己布局,不一定需要将html代码写入ASP中
str = "<table width=768 border=0 align=center cellpadding=2 cellspacing=1 bgcolor=#333333 >"
For i = 0 To Myclass.Col_N
Str=Str&"<tr bgcolor=#F2F2F2>"
For j = 0 To Myclass.Row_N
Str=Str&"<td>"&Myclass.List(j,i)&"</td>"
Next
Str=Str&"</tr>"
Next
Str=Str&"</Table>"
Response.Write (str)
'简单测试上下页'更好的上下页可以根据需要做一个即可,达到真正重用。
%>
<table width=300 border=0 align=center cellpadding=0 cellspacing=0>
<tr>
<td align=center><a href="?page=1">最前页</a></td>
<td align=center><a href="?page=<%=page-1%>">上一页</a></td>
<td align=center><a href="?page=<%=page+1%>">下一页</a></td>
<td align=center><a href="?page=<%=Myclass.Counts%>">最末页</a></td>
</tr>
</table>
<hr>
<%
Set Myclass = Nothing '注意必须销刚所创建的对象
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'简单测试取得固定的记录,常用于记录修改,传某参数获得对应记录
'取得某个信息
'具体做可不需要循环。可以自己根据需要检索出Myclass.List的信息
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'定义新对象
Dim MygetList
Set MygetList = New adminModel
'参数1:字段,默认是 * ,最好列出来,*只是默认值
'参数2:一般为自动编号,再接一个Request过过来的变量
Call MygetList.getInfos("*", " id=0")
For Each IndexValue In MygetList.List
Response.Write(IndexValue&" <br> ")
Next
%>

外贸综合平台:E贸通
2006-12-20 00:23
渚薰
Rank: 6Rank: 6
等 级:贵宾
威 望:22
帖 子:1132
专家分:0
注 册:2006-8-6
收藏
得分:0 
以下是引用ming206在2006-12-20 0:23:38的发言:
申明:本人再次推荐我的个人代码生成器(全新的模拟面向对象编程思想,非封装。仅仅达到模块化)
以下是一个简单的用户模块代码(CLASS形式),希望斑竹支持!



同样声明,本人很反对用这种方式来掌握OOD。语法现象不难,vbscript的类对象也就一点点语法,没有继承,没有重载,甚至完全不属于OO。任何程序员,必须认真的接触OOD,它不但能使自己领会当今代码编写模式的底层精髓,而且也有助于提高自己对代码结构的认识。一句话,别偷懒!


个人ajax技术专题站: " target="_blank">http://www. 我不会闲你烦,只会闲你不够烦!
2006-12-20 10:55
ming206
Rank: 2
来 自:重庆
等 级:等待验证会员
威 望:3
帖 子:545
专家分:7
注 册:2005-8-2
收藏
得分:0 
大哥,这是我自己开发的一个小软件也。并非我偷懒。虽然我接触ASP不久。但是我在不断的总结经验。我在这里主要目的还是让大家知道模块化编程的重要,当然这不叫什么模块化,真正的OOP更加让人心动!明白吗?

外贸综合平台:E贸通
2006-12-20 16:49
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 

不过模块化开发的确是相当重要的,一般OOP中一个模块类来实现某个特定功能,多个模块类进行组合。
当然这个只是简单的OOP一种,完全理解OOP这些知识的确太少了,建议楼主找一些OOP的书来看。
一般在OOP中任何事物都是对象。
最简单的面向对象例子,人类在程序中可以看作一个类,而某个人就是对象。
可以理解这里的类有归类的意思,也就是把具有相同属性共同行为的对象抽象为一个类。
具体来说描述一个人,一般需要身高、体重、性别、年龄等一些特点,这些特点每个人都有那么就可以把由这些特点(属性)的人(对象)归纳为一个类。而每个人虽然由这些共同的特点,但这些特点都不一样,就跟每个人长的都不一样。
用程序来描述上面的文字就是
Class 人
Public 身高
Public 体重
Public 性别
Public 年龄
End Class
这就是在程序中定义一个人类,而每个人都是对象。必须具体到某个人。
Dim 一个人
Set 一个人=new 人
这里就是程序里创造了一个人这个对象
描述一个人可以这样写
一个人.身高=1米7
一个人.体重=120斤
总之面向对象的内容很多,楼主最好找本书来看。

2006-12-20 22:52
yitingwei
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2006-10-15
收藏
得分:0 
我有视频教程,还不错

QQ:125110341

2006-12-21 14:28
快速回复:[求助]哪有这方面的教材下
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015520 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved