UML软件工程组织

创新中的VB.NET
作者:中国计算机报 本文选自:中国计算机报 2002年02月27日

 

为了使Visual Basic开发人员从面向对象的设计中获益,简化企业Web应用程序的开发,Visual Basic .NET支持包括实现继承在内所有的面向对象的语言特性。利用这些新的语言特性,Visual Basic.NET将迅速有效地提供开发企业关键性应用程序所需的所有强大功能,而同时保持了使其成为世界上最流行的开发工具的易用性。
Visual Basic .NET将提供第一流面向对象的、拥有新特性的程序设计语言,如实现继承、重载和带参数的构造函数。此外,开发人员将能够创建高度可伸缩的自由线程代码,并加入了现代化的语言结构,如结构化的异常处理的高度可维护代码。

继承
应用开发人员对Visual Basic最突出的请求是支持实现继承,Internet时代的程序开发需要快速的编译和大量的重用。Visual Basic 现在拥有包括可视化窗体继承在内的全部实现继承。
开发人员可以使用新的关键字Inherits来从一个已有的类进行派生。
Class1
Function GetCustomer()
...
End Function
  Class2
Inherits Class1
Function GetOrders()
...
End Function

Inherits语句支持与继承相关的所有可视化属性。派生类的实例支持这个基类所支持的所有方法和接口。当然,派生类可以扩展基类所支持的方法和接口集合。

重载
Visual Basic现在允许进行函数重载,这使得开发人员可以创建有相同名称,但却有不同的自变量类型的、不同版本的Sub或Function。
当你的对象模型规定了对于操作不同数据类型的过程使用类似的名称时,重载尤其有用。例如,一个可以显示几种数据类型的类可能会有如下所示的Display过程:
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应用程序时,可伸缩性是关键。开发人员需要支持并发处理的工具。
通过包含自由线程,开发人员可以产生一个执行某些长期任务、执行复杂的查询或运行多部分的计算的线程,而应用程序的其他部分则继续执行,从而提供了异步处理功能。例程如下:
Sub CreateMyThread()
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

·结构化的异常处理
开发企业应用程序需要构造可重用的、可维护的组件。在以前版本的Visual Basic中,Basic语言的一个具有挑战性的方面就是支持错误处理。开发人员发现,一个一致的错误处理模式意味着可以大量地复制代码。使用现有的On Error GoTo语句进行错误处理使大型应用程序的开发和维护速度变得很慢。它的名字就反映了某些问题:正如GoTo所暗示的,当一个错误发生时,控制被转移给子程序中某个标记的位置,一旦错误代码运行,通常它必须通过标准的GoTo依靠另一个清除位置转移,它最终将使用另一个GoTo或Exit来退出这个过程。利用各种Resume和Next组合快速地处理几个不同的错误,将产生难以理解的代码,并且在执行路径没有完全考虑到时将会导致出现频繁的错误。
VB.NET中,利用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”用于处理异常错误,如当数字类型和字符串之间的自动类型转换不是用户所预期的时候,Strict会生成错误,从而提高了类型安全性。
·共享成员
共享成员是指可以被类的所有实例共享的类的数据和函数成员。在一个类的所有实例间共享一个数据成员或函数成员的实例,这在使用继承的Visual Basic应用程序中是极其必要的。一个共享的数据成员独立于这个类的任何一个具体的实例而存在。一个共享的方法与普通的方法不同,它并不被隐含地传递类的实例。由于这个原因,在一个共享的方法中是不允许不合格的引用非共享的数据成员。公共的共享成员可以进行远程访问,并且可以从这个类的某个实例中对它们进行绑定。
·初始化工具
Visual Basic.NET支持在变量被声明的一行中对其进行初始化。初始化可以用在任何位置,包括框架结构内部。包括初始化工具的过程层次的声明的语义、与紧跟一个赋值语句的声明语句是相同的。 结论
Visual Basic现在已经成了第一流的面向对象的程序设计语言。使用Visual Basic.NET,开发人员将能够创建高度可伸缩的、具有明确的自由线程代码。他们的代码使用了现代化的语言结构,如结构化的异常处理,具有很高的可维护性等。Visual Basic将提供开发人员创建健壮的、可伸缩的分布式Web应用程序所需的所有特性。



版权所有:UML软件工程组织