ASP网页编程之Visual Basic 6/VBScript cVisual Bas...
asp,jsp,php是web开发的三大技术,asp简单易用且有microsoft做靠山,jsp功能强大是因为有java支持,php则开源跨平台.在国内,asp应用范围最广,jsp发展势头最猛,php则处于劣势.这可能与公司的支持以及技术的培训有关.vbscript|visual新的易O定(assignment)Z法
Visual Basic.NET 供应新的易O定Z法,程式a撰以下r
MyVal = 10
MyVal += 10
@r MyVal 的值 20 ,程式a等於
MyVal = MyVal + 10
^承(Inheritance)
Visual Basic.NET F今是一完全的物件(Object Orient)Z言,也就是完全增援封b、^承、多型等等程式撰的体例,K供应建/解子。所以它增添了以往 Visual Basic 在@一方面所缺少的功效,如^承。
Visual Basic.NET 增添的^承你可以其他的 Class 榛A斫⑿碌 Class,衍生的(Derived) Class 可以^承(inherit)和延长原始 Class 的傩院头椒ākm然衍生的 Class 只能^承自我坏幕A(base) Class,但它可以做(implement)o限的康慕槊(interface)。衍生的 Class 也能够撰新的办法 override ^承下淼姆椒ǎ Visual Basic.NET 创立的 Class AO都是可以被^承的。
^承和介面你可以做多型(polymorphism),分歧的 class 可以从头定x不异名Q的傩院头椒ā6嘈褪俏锛(object-orient)程式O的基A,因樗你可以呼唤不异名Q的办法,而不论在利用的下是哪一N型B的物件。例如o一 NormalPayroll 的基A class,多型程式O可以定x多衍生 Class 分歧的 PayEmployee 办法。其他的傩院头椒梢韵嗤姆绞绞褂醚苌锛 PayEmployee 办法,而不论是用到哪一衍生的物件。
Visual Basic.NET 供应以下的Z句矶x和增援^承
[*]Inherits Z句 -- 定x下 Class 要^承的 Class(也Q榛A class)。凡是可以透^傩砸窗(properties window)碓O定。
[*]NotInheritable 定x子 -- 避免利用者⒃ Class 作基A class 硎褂
[*]MustInherit 定x子 -- 定x class 不克不及用斫 instance,独一利用它的体例是^承它。
衍生的 class 可以新的做体例 override 一些^承淼姆椒āVisual Basic.NET 利用以下的定x子砜刂品椒ê傩缘 overriding
[*]Overridable -- 傩院头椒ㄔ诶^承的 Class 可以 override
[*]Overrides -- 定x要 override 哪一基A的傩曰蚍椒
[*]NotOverridable(AO) -- 避免傩曰蚍椒ū焕^承的 class override
[*]MustOverride -- 请求^承的 class 必定要 override 傩曰蚍椒
程式a例以下 Imports System
Namespace MyNamespace Class Payroll
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifOverridable Function PayEmployee(ByVal HoursWorked As Single, ByVal PayRate As Single)
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifhttp://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gif PayEmployee = HoursWorked * PayRate
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifEnd Function
End Class Class BonusPayroll
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifInherits Payroll
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifOverrides Function PayEmployee(ByVal HoursWorked As Single, ByVal PayRate As Single)
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifhttp://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifPayEmployee = (HoursWorked * PayRate) * 1.45 ' 45% t利
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifEnd Function
End Class Module
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifMyModule Sub Main()
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifDim BonusPayrollItem As Bonuspayroll = New Bonuspayroll
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifDim PayrollItem As Payroll = New Payroll
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifDim PayRate As Single = 14.75
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifDim HoursWorked As Single = 40
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gif Console.WriteLine("Normal pay is: " & Pay(PayrollItem, HoursWorked, PayRate))
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gif Console.WriteLine("Pay with bonus is: " & Pay(BonusPayrollItem, HoursWorked, PayRate))
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifEnd Sub http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifFunction Pay(ByVal PayObject As Payroll, ByVal HoursWorked As Single, ByVal
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gif PayRate As Single) Pay = PayObject.PayEmployee(HoursWorked, PayRate) * 0.75 ' withold tax
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifEnd Function
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifEnd Module
End Namespace 绦薪Y果以下
在程式a中你可以看到Class BonusPayroll ^承自 Payroll,K Override PayEmployee 函怠K援 Pay 函魅氩煌 Class 物件但呼唤不异的办法r,可以有分歧的Y果。所以以上的程式例也同r展F了多型的利用体例。
Free Threading
在以往版本的 VB 中,_l者除非藉由 Win 32 API 否to法_l多 threading 的贸淌剑灾荒茏鐾降幼鳎簿褪浅淌酱a需要循序地绦小Visual Basic.NET 你可以撰 multiple task 的贸淌健C恳 Task 可以在一l thread 绦校绦(process)可所以 free thread。程式a例以下 Imports System.Threading
...
Private iVal, iary(1) As Integer
...
Protected Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifDim t As New Thread(AddressOf AddVal)
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gif t.Start()
End Sub
Sub AddVal()
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gif SyncLock iary
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifDim i As Integer
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifFor i = 1 To 1000000
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifival += 1
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifNext textbox1.text = CStr(ival)
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifend synclock
End Sub
建子(Constructor)息争子(Destructor) 建子是用砜刂 Class 在创立一新的 Instance r所需求做的初始化法式。同拥兀子是 Class 的 Instance Y束r(多是O定 Nothing)所需求做的法式,如放系yY源等等。 在原本的 VB 中,可以使用 Class_Initialize() 和 Class_Terminate() 事务法式(Event Procedure)沓跏蓟蛟 Instance Y束r绦小
在 Visual Basic.NET 中改以 Sub New() 和 Sub Destruct() 法式碜鼋子c解子的幼鳌
Sub New() 办法只 Class 创立r绦幸淮危页艘酝 Class 其他的建子或是衍生 Class 的建子的第一行程式a呼唤以外,不成以在任何其他中央呼唤利用。且 Sub New() 办法之鹊某淌酱a在绦r,]有任何 Class 鹊某T已被创立出怼 .NET 绦协h境谇宓粑锛r自雍艚兴 Sub Destruct() 办法,@一副函狄膊豢梢员缓艚惺褂谩
.NET 绦协h境在系yQ定物件不需求存在rr忧宓粼物件。c Class_Terminate 和 Sub New() 分歧的是,你o法_切地晓得 .NET 绦协h境r呼唤 Sub Destruct(),只能_定的是υ物件最後的一⒄(reference)被放後,系y雍艚 Sub Destruct()。
■ 利用 Sub New() 斫祷慕子 --要创立一 class 的建子可以在 class 定x鹊娜魏蔚胤阶 Sub New() 副函怠=子的第一行程式a必是呼唤基A Class 的建子或是统一 Class 绕渌慕子,@保C被^承的物件谘苌奈锛俺跏蓟瓿伞I踔潦钱你在创立你本人的基A class r,也凡是艚 MyBase.New 沓跏蓟A的物件,因樗械 Class 最K都是^承自 Object Class。
在呼唤完父物件的建子後,在 Sub New() 副函燃由铣跏蓟物件所需求的幼鳌Sub New() 副函悼梢越邮担缦铝械某淌酱a例。
■ 利用 Sub Destruct() 解子 --要创立 class 的解子,可以在 class 的定x热魏蔚胤郊由 Sub Destruct() 副函怠D憧梢栽谠副函燃由厢放物件,P]n案等等任务。
程式a例以下
Imports System
Namespace MyNamespace
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifModule MyModule
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifClass Truck
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifPrivate iWheels As Integer
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifSub New(iInitialWheels As Integer)
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifMyBase.New '呼唤基A Class 的建子
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifiWheels=iInitialWheels
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifEnd Sub
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifSub Destruct()
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gif '绦幸恍┬枰幼
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifEnd Sub
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifProperty Wheels As Integer
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifGet
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifWheels=iWheels
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifEnd Get
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifSet
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifiWheels = Value
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifEnd Set
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifEnd Property
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifEnd Class
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifSub Main()
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifDim t as Truck = New Truck(18)
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifConsole.WriteLine("@是一部 {0} 大卡",t.Wheels)
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifConsole.Write("入您想要改b的: ")
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gift.Wheels = CInt(Console.ReadLine())
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifConsole.WriteLine("你已把它改b成 " & t.Wheels & " 大卡")
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifEnd Sub
End Module
End Namespace 绦薪Y果以下
DelegateDelegates 的行橄褚 type-safe,物件蚴胶抵(object-oriented function pointer)。使用 delegate 鬟f用 VB 的 addressof \算子获得 class 副函档闹私o其他的 VB class 副函怠Mǔ Delegate 碜鍪录砗担簿褪钱事务l生r要自绦械暮怠
每 delegate class 定x一建子,利用r魅胍物件办法的指水作是怠档母袷饺缦
AddressOf [.]<办法名Q>
在gr期, 必是一 class 或是一介面(interface),K且有著一合适 delegate class 所宣布的办法格局的办法。
@办法可所以同享的(class)办法或是 instance 办法。 要|l delegate class 的 instance 鹊姆椒ū仨要呼唤冉ǖ Invoke 办法,整程式a例以下
Imports System
Namespace TestDelegate
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifPublic Delegate Sub EventHandler(ByVal strText As String)
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifClass EventTake
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifSub GetEvent(ByVal strIn As String)
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifconsole.WriteLine("Delegate 事务 " & strIn)
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifEnd Sub
End Class
Class EventRaise
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifSub UseInvoke()
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifDim c As New EventTake()
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifDim DelSub As EventHandler
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifdelsub = New EventHandler(AddressOf c.getevent)
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifdelsub.Invoke("一些r")
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifEnd Sub
End Class
Module Module1
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifShared Sub Main()
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifDim c2 As New EventRaise()
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifc2.UseInvoke()
http://www.163design.net/n/UploadFiles_8187/200607/20067416521197.gifEnd Sub
End Module
End Namespace 绦薪Y果以下
Active Server Page技术为应用开发商提供了基于脚本的直观、快速、高效的应用开发手段,极大地提高了开发的效果。在讨论ASP的安全性问题之前,让我们来看看ASP是怎么工作的。 以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。 弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。 代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。 如何更好的使自己的东西看上去很不错等等。其实这些都不是问题的实质,我们可以在实践中不断提升自己,不断充实自己。 我想问如何掌握学习节奏(先学什么再学什么)最好详细点? 用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。 ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp),它可以看作是VC和Java的混合体吧。 他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。 从事这个行业,那么你可以学ASP语言,简单快速上手,熟练dreamweav排版,写asp代码,熟练photoshop处理图片,打好基础就行了 ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码,能产生和执行动态、交互式、高效率的站占服务器的应用程序。 掌握asp的特性而且一定要知道为什么。 以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。 以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。 ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。 我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。 学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点: ASP也是这几种脚本语言中最简单易学的开发语言。但ASP也是这几种语言中唯一的一个不能很好支持跨平台的语言。 因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。 不是很难但是英文要有一点基础网上的教程很少有系统的详细的去买书吧,另不用专门学习vb关于vbscript脚本在asp教材都有介绍
页:
[1]