简介
要经常创建Web应用程序,开发人员必须按照可升级、够稳定和可重用的规律来开发。在过去的几年里,面向对象的编程已经成为创建符合要求的系统的最主要方法。使用面向对象的编程可以使那些大规模的系统程序更容易读懂,更容易纠错,升级更快。
为了使Visual Basic的开发人员从面向对象的设计方法中受益并使企业网站应用程序的开发更简单,下一个版本的Visual Basic------Visual Basic .NET将会支持完全的面向对象的编程功能包括继承的实现。有了这些新的语言功能,Visual Basic .NET将会带来所有我们所需要的功能,更快、更有效的开发企业级的应用程序,同时,作为世界最流行的开发软件,保持了容易上手的特点。
Visual Basic .NET将会提供一流的面向对象的编程语言,同时带来了许多新的功能,比如继承的实现,重载和参数化构造函数。 另外,随着现代化的语言结构的调整,如结构化的异常处理,代码更易于维护,这使得开发人员将可以使用简洁明了的自由线程来编写高扩展性的代码。Visual Basic 将会提供开发人员所需要的所有语言特点来使他们能建立稳定、可扩展的分布式Web应用程序,这些应用程序将会包括以下新功能:
面向对象编程的新功能
继承性
重载
参数化构造函数
现代化附加的新功能
自由线程
结构化的异常处理
严格类型检测
共享成员
初始化功能
语言变革的历史
Visual Basic语言随着Windows平台基本结构的改变而做出相应的升级,这已经有了一个很长的历史。比如说,QuickBasic为了支持Windows 3.0的图形化用户界面而做出的重大改变促成了后来Visual Basic的第一个版本的发行。在Visual Basic 4.0中,随着转向基于COM的编程,使程序结构中出现了DLL。另外,在Visual Basic 5.0中,它开始支持建立COM控件。
面向对象的编程
传统的编程语言有很多缺点,比如说,它的数据是分布在整个代码段中分开存放的;任何写成结构化的代码并不是模块;因为数据元素对任何代码都是可操作的,所以即使没有告诉开发者,任何人都可以对数据做改动,这可能会造成运行时的错误并且极难纠错。还有,程序的维护是一项极其繁重的工作。要在试着去理解改动一行代码对整个程序会造成的影响之后再去修改会非常困难。最后,让程序员级管理代码又管理数据而造成的信任问题会使代码的重用率降得非常低。
面向对象的编程解决了所有这些问题。他把用来操作数据的方法连同数据一起打包成一个对象。对象的数据可以被隐藏,以防止非法的改动。另外,一个对象会登记出一套公用的可用于操作数据的方法。这就是所谓的封装性。因为具体的实施细节使于实际界面分离的,所以我们可以在不影响主要程序及数据的前提下,以后再改动这个被调用的后台运行的对象程序。
面向对象的编程能够让程序的开发人员通过继承来重用代码和数据。通过继承预先定义的对象,开发者可以更经常的创建复杂的应用。由于编写新的代码常常会带来产生潜在的Bug的可能性,因此重用经过测试的代码会大大减少Bug产生的可能。
为了能够满足所有这些要求,Visual Basic .NET将会提供更多的语言功能来实现所有上面提到的功能,使其成为第一流的面向对象的编程语言。
继承性
一个大家强烈要求Visual Basic实现的功能就是继承性的实现了。Internet时代发展需要迅速的拼装和大块的重用。Visual Basic现在已经支持完全的实施继承,包括窗体继承。
开发者可以用信的关键字Inherits 从一个已经存在的类中衍生出去。
Class1
Function GetCustomer()
...
End Function
Class2
Inherits Class1
Function GetOrders()
...
End Function
表达式支持所有的一般的与继承相关的属性。衍生类的实例支持所有的基类的方法和接口,当然的,衍生类也可以扩展这些方法和接口。
衍生类可以使用Overrides关键字重载基类定义的方法。为了降低编程的错误率,Visual Basic防止你随便重载一个函数,只有那些被声明为“可重载”的函数才允许被衍生类重载。
重载
Visual Basic现在已经支持函数重载,这样,程序员就可以通过使用不同的参数类型来使用名称相同而功能不同的子过程或者函数了。
当你的对象模型要求你使用相似的过程名来操作不同类型的数据的时候,重载就变得非常有用了。比如说,一个可以显示多种数据类型的类可以使用下面的显示子程序:
Overloads Sub Display (theChar As Char)
...
Overloads Sub Display (theInteger As Integer)
...
Overloads Sub Display (theDouble As Double)
如果没有重载,你就不得不为每一个子过程建立唯一的名称或者只能使用Variant参数。重载提供了一种更清楚更有效的方法来处理多种数据类型。
参数化构造函数
参数化构造函数(简称构造函数)使你能够在建立一个新的实例的同时把参数传递给它。构造函数对面向对象的编程来讲是十分关键的,因为它们使实例的建立者能够传递自定义参数的创建代码。它们允许用一条简单的表达式来创建并初始化一个新的实体,从而简化了客户端的代码。
更多现代化语言的新功能Visual Basic .NET新增了许多新功能,简化了编写更稳定、可扩展的应用程序的开发过程。这些新功能包括自由线程,结构化的异常处理,严格类型检测以及一些如初始化功能,共享成员等的提高生产效率的新功能。
自由线
现在,当开发者用Visual Basic建立一个应用程序的时候,他的代码已经是同步的了。意思是在下一行语句被输入前,上一行的语句必须被执行完毕。在开发Web应用程序的时候,可扩展性是关键。开发者需要可以实时处理的工具。
自由线程提供了非同步处理机制,开发者可以在不影响其他应用程序的前提下新建一鱿叱汤唇?幸恍┏な奔涞娜挝瘛⒏丛拥牟檠?肭蠡蛘叨嗫橥?郊扑恪?BR
Dim b As BackGroundWork
Dim t As Thread
Set b = New BackGroundWork()
Set t = New Thread(New ThreadStart(AddressOf b.Doit))
t.Start
End Sub
Class BackGroundWork
Sub DoIt()
…
End Sub
End Class
结构化的异常处理
开发企业应用程序需要创建可重用的易维护的组件。支持错误处理曾经是Basic语言的一个非常出色的方面。但是,开发人员发现编写一个可靠的错误处理程序就意味着大段的重复代码。使用现有的On Error GoTo 表达式常常会降低大型应用程序的开发和维护过程。它的名称就说明了一些问题:GoTo 意味着一旦错误发生,控制权就会被转移到一个子程序内标号的段落。那样,当错误发生时,程序将会相遇到一个标准GoTo一样转移到一个新的地点执行程序,然后,通过另外的GoTo或者Exit来跳出这个过程。同时处理几个错误的时候,当他们使用了不同Resume和 Next的组合而执行路径又没有完全处理好时,就会很快导致非法的代码和Bug。
运用Try...Catch...Finally,这些问题迎刃而解,开发者可以把异常处理直接嵌入程序,并且,会有一个控制结构,专门用来编写清空代码,无论在通常情况还是在例外情况下,这段代码都会被执行。
Sub SEH()
Try
Open "TESTFILE" For Output As #1
Write #1, CustomerInformation
Catch
Kill "TESTFILE"
Finally
Close #1
End try
End Sub
严格类型检测
现在的Visual Basic语言在类型声明上是非常自由的。除了使用引用以外的其他参数传递,Visual Basic编译器可以生成运行时的强制类型转换,允许几乎所有的类型转换成所有其它的类型。如果被转换的数据类型不允许任何的数据丢失,那么使用运行时的强制类型转换将会失败。使用新的附加的编译选项, Visual Basic会针对任何有可能产生运行时错误的类型转换产生编译错误。对于那些可能会在运行时产生错误的类型转换, 这个Strict的选项将会使Visual Basic产生编译错误以改善类型安全性。这些错误包含一些用户无法预计的错误,如数字和字符串之间的自动转换等等。
共享成员
共享成员是指那些可以被类的所有实例共享的数据和函数成员。作为具有继承性的Visual Basic应用程序,在类中所有的实例中共享一个数据成员或者函数是需要的。一个共享成员是独立于类中任何特定的实例而存在的。一个共享的方法是一个不同于一般方法的方法,它并不隐式地传递出一个类的实例。出于这个原因,在共享方法中,不允许访问没有指定对象的非共享的数据成员。公共的共享成员可以被远程访问并且它们可以被后绑定到类的实例。
初始化功能
Visual Basic .NET支持在变量定义行直接初始化变量。初始化功能可以在任何场合使用,包括在控制结构内部。初始化功能的这种过程级的语法声明与在定义变量以后立即初始化的作用是一样的。换种说法,比如:
Dim X As Integer = 1 与以下代码是相同的:
Dim X As Integer X = 1
小结Visual Basic.Net是目前最好的一种面向对象的编程语言之一。通过使用Visual Basic .NET,开发者可以利用自由线程设计出具有良好的可扩展性的代码。这些代码具备了结构化异常处理这样的现代语言特性。Visual Basic将为设计健壮、可扩展的分布式网络应用的开发者在语言特点上提供所有的帮助。