Visual Basic .NET中的语言创新

visual

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语句进行错误处理使大型应用程序的开发和维护速度变得很慢。它的名字就反映了某些问题:正如GoTo所暗示的,当一个错误发生时,控制被转移给子程序中某个标记的位置。一旦错误代码运行,通常它必须通过标准的GoTo依靠另一个清除位置转移,它最终将使用另一个GoTo或Exit来推出这个过程。利用各种Resume和Next组合快速地处理几个不同的错误,将产生难读地代码,并且在执行路径没有完全考虑到时将会导致出现频繁的错误。

利用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 .NET支持在变量被声明的一行中对其进行初始化。初始化可以用在任何位置,包括框架结构内部。包括初始化工具的过程层次的声明的语义,与紧跟一个赋值语句的声明语句相同。换句话说,这个语句"

Dim X As Integer = 1

与下面的这些语句意义相同:

Dim X As Integer
X = 1

结论

Visual Basic现在已经成了第一流的面向对象的程序设计语言。使用Visual Basic .NET,开发人员将能够创建高度可伸缩的、具有明确的自由线程(Free Threading)代码。他们的代码使用了现代化的语言结构,如结构化的异常处理(Structured Exception Handling),具有很高的可维护性。Visual Basic将提供开发人员创建健壮的、可伸缩的分布式Web应用程序所需的所有特性。

时间: 2016-06-11

Visual Basic .NET中的语言创新的相关文章

Visual Basic.NET 中的语言新变化

visual 简介 要快速创建企业级的Web应用程序,开发人员必须依赖于可伸缩性.强壮性和可重用性等商业逻辑.在过去的几年中,面向对象的程序设计成为符合这些要求的系统的首要方法.使用面向对象的编程语言有助于使大规模的系统更易于理解.更易于调试.升级更迅速. 为了使Visual Basic开发人员能够从面向对象设计中受益并简化企业级Web应用程序的开发,Visual Basic的下一个版本­--Visual Basic.NET将支持包括实现继承在内的全部面向对象的语言特性.有了这些语言特性,Vis

在 Visual Basic .NET 中实现后台进程

visual|后台|进程 Rockford LhotkaMagenic Technologies 2002年10月1日 从 MSDN Code Center 下载 VBbackground.exe 示例文件(英文).(请注意,在示例文件中,程序员的注释使用的是英文,本文中将其译为中文是为了便于读者进行理解.) 摘要:Rocky Lhotka 建议并实现了一个结构化架构示例,该架构可用于充当辅助线程和 UI 线程之间的媒介,从而简化编写多线程辅助代码和 UI 以对其进行控制的过程.该架构包括可下载

EXCEL窗口在Visual Basic窗口中显示技巧

Visual http://www.aliyun.com/zixun/aggregation/11183.html">Basic是常用的应用软件开发工具之一,由于Visual Basic的报表功能有限,而且一但报表格式发生变化,就得相应修改程序,给应用软件的维护工作带来极大的不便.因此有很多程序员现在已经充分利用EXECL的强大报表功来实现报表功能.但由于Visual Basic与EXCEL由于分别属于不同的应用系统,如何把它们有机地结合在一起,是一个值得我们研究的课题. 一. Visua

在 Visual Basic .NET 中使用存储过程(1)

visual|存储过程 在 Visual Basic .NET 中使用存储过程 Billy Hollis 2002年9月14日 从 MSDN Code Center 下载 StoredProcVB.NET.exe 示例文件(英文).(http://msdn.microsoft.com/code/default.asp?url=/code/sample.asp?url=/msdn-files/026/002/872/msdncompositedoc.xml) 摘要:Billy Hollis 解释了

.net入门之VB篇:Visual Basic.Net中的文件操作(一)

visual Visual Basic.Net中有三种访问文件系统的方法:第一种是使用 Visual Basic 运行时函数进行文件访问 (VB传统方式直接文件访问):第二种是通过.Net中的System.IO模型访问:第三种是通过文件系统对象模型FSO访问. 文件是存储在某种介质上数据的集合,就其本身来讲,文件只不过是磁盘上的一系列相关的数据字节.当应用程序访问文件时,它必须假定字节是否表示字符.数据记录.整数.字符串等.通过指定文件的访问类型来告诉应用程序假定什么内容. Visual Bas

Visual Basic .NET 中动态加载类(一)

visual|动态|加载 Visual Basic .NET 中动态加载类 · ··Microsoft 摘要:理想情况下,编写软件系统之前我们就应该知道此软件系统需要完成哪些操作.但实际情况并非如此,因此我们的系统应该是可以调整的. 最能体现这种适应性的是动态集成新功能的能力.例如,在 Windows 窗体应用程序中,这种能力是指加载编译原始应用绦蚝芫靡院蟠唇ǖ拇疤宓哪芰Α?/P> 这种操作在 Microsoft Visual Basic 6.0 中几乎是不可能的,但是在 Visual Basi

Visual Basic .NET 中动态加载类 (三)

visual|动态|加载 ··Microsoft 步骤 8:用新的窗体信息更新配置文件 现在,我们已经创建了一些新窗体,还需要在配置文件中引用它们.请用以下代码行替换 FormsOnTheFly.exe.config 中的占位符信息: <add key="First Form" value="C:\NewForms\FirstForm.dll~FirstForm.Form1"></add><add key="Second Fo

Visual Basic .NET 中动态加载类 (二)

visual|动态|加载 Microsoft 步骤 3:创建配置文件以存放可用窗体 应用程序在运行时需要的某些信息可能在编译时无法提供,这些信息通常放置在配置文件中.在 Visual Basic 6.0 中,配置文件应该是 INI 文件或 Windows 注册表.而在 .NET 中,则使用基于 XML 的配置文件. 我们无法详细介绍配置文件,因为这个主题非常复杂.但是,您应该知道,Windows 窗体应用程序的配置文件与应用程序的 EXE 启动文件在同一个目录中.配置文件的名称与程序的 EXE

在 Visual Basic .NET 中使用存储过程(2)

visual|存储过程 从存储过程返回值以上示例有一个不足之处.Northwind Customers 表使用数字字母形式的主键,并且必须由插入数据的应用程序生成.也就是说,如果使用以上程序插入新记录,则必须为 CustomerID 自行创建由五个字符组成的值. 在真实软件中,为新记录自动生成主键更为常见.主键通常是按顺序分配的长整数. 为新记录设置主键有两种基本技术.应用程序可调用生成下一个可用 ID 的存储过程,然后将此 ID 直接放到 DataSet 的新行中.或者,用于插入记录的存储过程