日期:2011-04-04  浏览次数:20382 次

Visual Basic .NET中的语言创新
引言

要快速地创建企业Web应用程序,开发人员必须依靠可伸缩的、健壮的、可重用的商务逻辑。在过去的几年中,面向对象的程序设计已经成为了创建满足这些需求的系统的主要技术。使用面向对象的程序设计语言可以使得大型系统更容易理解,更容易调试,并且更新速度更快。

为了使Visual Basic开发人员从面向对象的设计中获益,简化企业Web应用程序的开发,将在Visual Basic的下一个版本 - Visual Basic .NET中支持包括实现继承在内所有的面向对象的语言特性。利用这些新的语言特性,Visual Basic .NET将迅速有效地提供开发企业关键的应用程序所需的所有强大功能,而同时保持使其成为世界上最流行的开发工具的即时可达性。

Visual Basic .NET将提供第一流的面向对象的、拥有新特性的程序设计语言,如实现继承、重载和带参数的构造函数。此外,开发人员将能够创建高度可伸缩的具有明确的自由线程(free threading)代码,以及加入了现代化的语言结构,如结构化的异常处理的高度可维护的代码。Visual Basic将提供开发人员使用下面的新特性,创建健壮的、可伸缩的分布式Web应用程序所需的所有语言特性:

新的面向对象的程序设计特性

继承
重载
带参数的构造函数
其他现代化的语言特性

自由线程
结构化的异常处理
严格的类型检查
共享成员
初始化工具
语言创新的历史

Visual Basic语言有一个很长的更新历史,它反映了Windows平台中的根本性的变化。例如,使QuickBasic?为支持Windows 3.0 GUI开发所作出的重大变化导致了Visual Basic的首次发布。在Visual Basic 4.0中,向基于COM的程序设计转移导致了用于创建DLL的语言结构的出现。而在Visual Basic 5.0中,语言发展为支持创建COM控件。

利用每次成功的修订,Visual Basic的普及有了飞速的增长。新的面向对象的语言特性提供给创建企业Web应用程序的开发人员的启动功能,将最有可能继续这种趋势。

面向对象的程序设计

对于传统的结构化的程序设计(数据与程序式的代码分别存储),存在几个缺点。作为结构化的代码编写的任何代码都不是模块化的。由于数据元素可以从任何代码中访问,因此在没有开发人员的知识的情况下,修改数据是不可能的。这可能会导致非常难调试的运行错误。此外,维护也可能会成为一项实质性的任务。试图理解使用程序式设计改变一行代码的全局影响可能会非常困难。最后,依靠程序员来管理代码和数据将导致非常低的重用率。

面向对象的程序设计(OOP,Object-oriented Programming)解决了这些问题。它将数据以及在数据上采取行动的方法打包成一个称为对象的单位中。一个对象的数据可以被隐藏起来,以避免出现未授权的修改。此外,这个对象提供了一组公共方法对这个数据进行操作。这种概念被称为封装。由于实现细节与接口分离,底层的程序设计逻辑可以在日后修改,而不用担心破坏调用这个对象的代码。

OOP还允许开发人员通过继承重用代码和数据。通过继承预定义的对象,开发人员可以更迅速地构造更复杂的应用程序。由于编写新代码通常有可能加进错误,因此重用代码可以使出现额外错误的机会降到最低。

为了解决这些需求,Visual Basic .NET将提供这些额外的语言特性,这将使得它称为第一流的具有上述的所有好处的、面向对象的程序设计语言。

继承

一贯地,对Visual Basic最突出的请求是支持实现继承(implementation inheritance)。Internet时代的程序开发需要快速的编译和大量的重用。Visual Basic 现在包括了包括可视化窗体继承在内的全部实现继承。

开发人员可以使用新的关键字Inherits来从一个已有的类派生。

Class1
    Function GetCustomer()
    ...
    End Function

Class2
    Inherits Class1
    Function GetOrders()
    ...
    End Function

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

派生类可以使用关键字Overrides重载基类中定义的方法。为了减少程序设计错误,Visual Basic可以防止你意外地重载一个函数;只有被声明为"Overridable(可重载)"地函数才能在派生类中被重载。

重载

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语句进行错误处理使大型应用程序的开发和维护速度