今年2月15日,在旧金山举行的Visual Basic圈内人士峰会(VBITS)上,微软宣布了在VB7中会包含的一系列令人激动的新特性。微软还表示VB的这一新版本将在约一年后发布,所以现在想急于用到VB7的朋友们呢,恐怕还得耐心地等待一段时间。不过现在,我们还是可以先来看看微软到底宣布了些什么新特性。据说在VB7中将有许多核心层面的改进,它可以做到完全地面向对象,并且VB的表单系统也有一定的改进,还集成了部分WEB技术。不过,我们不打算在这里对VB的新特性做一个十分详细而全面的介绍,这里我们只想关注那些意义重大的改进,至于详细的情况,有兴趣的朋友可以去看看technologies.
一直以来,大家总是针对VB究竟是“面向对象”还是“基于对象”,甚至“面向组件”的语言而争论不休。但是!这些争论在即将来临的VB7面前,马上就会偃旗息鼓的——因为,不管依照怎样的标准来定义“面向对象”,VB7绝对是符合面向对象的每一个标准的。现在让我们来看看它有着怎样的特性。
构造函数:当我们创建一个对象的时候,利用构造函数我们就可以同时给这个对象中的成员赋初值,这样有助于我们正确地初始化一个对象。现在,我们在创建对象的时候,必须要等到对象创建完毕之后,另外调用一个独立的方法来对它进行初始化。将来在VB7中,我们就可以利用构造函数给对象赋初值——这样我们就不需要再去进行烦琐的调用赋初值的方法了。构造函数简化了编码的过程,也减少了出错的机会。
封装特性:封装的意思就是程序提供一个包含了一系列过程和函数的接口,其他的程序可以直接利用对象的这个接口,而不需要去了解接口里面的具体代码。接口中的代码一般来说总是实现一些相对完整的功能。
自由线程:线程是一个很复杂的概念,一时半会解释不了。但是,基本上来讲,线程的意思就是让我们的程序可以在同一时刻做两件以上的事情。比如,我们也许需要让程序在后台打印一个文档,同时还要让它响应当前用户不断发出的命令。线程在创建具有高度扩展性服务端程序的时候显得比较有用,并且,利用线程来编写具有极强交互性用户界面的时候也十分容易,例如我们可以为一个需要长时间运行的程序加上一个Cancel按钮,让用户可以有更多的选择。大家一定记得以前VB编程的时候对线程想尽了办法。调试线程的复杂和不稳定性使,线程编写相当的复杂(因为只能使用API来写,还是伪线程的,说是多线程不如说是多进程来的恰当。)。现在VB提供了编写线程的能力,线程编写在调试上是相当复杂的事,VB7终于已一种相对简单的形式实现出来。
继承:一个语言是否具有继承特性常被人们用作判断是否是面向对象语言的关键标准。继承是这样的一种概念:如果一个对象能够获得另外一个对象的接口和方法,并且可以扩展这些接口和方法,我们就称这个对象继承了另一个对象。举个实际的例子,我们在产品存储程序中,可以创建一个通用的可以处理所有产品的产品对象“Product”。从这个对象中,根据是否需要上税,我又可以派生出一个免税产品对象“NonTaxableProduct”和一个需税产品对象“TaxableProduct”。两个对象都将继承原始产品对象“Product”的接口和所有方法,但是将根据各自不同的实际情况在需要的地方修改或者扩展原始对象的方法。
初始化函数:现在我们在VB中还需要首先声明一个变量,然后我们才能对它赋初值——这样子我们需要写两行代码。初始化函数可以让我们将这两个步骤合并在一行代码中完成。虽然这是一个微小的变化,但是从代码的角度来看,这个改进为我们提供了更少、更简单、更容易维护的代码。
基于对象:对于一种计算机语言来讲,做到基于对象要比面向对象相对容易些。不过,什么是基于对象,到现在也只有一个很模糊的定义——大概是指一种语言具有直接和对象进行交互的能力。VB3.0就已经是基于对象的语言了,当时它能够和DAO对象以及控件交互;后来随着版本的提升,这些对象已经扩大到了ActiveX控件、RDO、ADO对象等等。
面向对象:一种面向对象的语言至少需要满足三个条件。封装性(VB4中就已经实现了)。继承性(VB7中才会有)。多形性(呵呵,多行性指的是多形态,就是对个对象的相同接口。VB3中就有了哟!是不是感到很惊奇?)所以在VB7中,VB将会实现完全的面向对象,因为他将满足这三个条件。
重载:对象们经常在类似的数据上开展同样的功能。比如,我们需要能够加服务和产品项到一个订购对象上。现在,我们必须分开对订购对象执行一个方法和一个方法。利用函数重载,我们紧需要执行ASS方法,然后让VB语言自己根据情况去选择执行正确的函数。
覆盖:当使用继承功能的时候,我们的新类从父类那里得到了一切方法。但是,也许我们需要让其中的某一钟或者几钟函数执行另外的动作。我们可以通过覆盖原始的方法来实现这样的功能。典型地我们的新代码也可以调用原始的父类对象的原始方法,这样的过程我们可以使用XX关键子来实现(比如MY,)
多形性:简单地说,着就是让两个不同的类型的对象,执行同一种方法的能力。这个允许我们写代码,这个代码调用这个方法而不管那个时候使用的对象的类型。VB支持这个通过后来的捆绑,而在VB5中通过执行关键子和多个COM接口。现在,在第7版本中,我么将看到继承接口同样也可以具有多行星。最后,VB在执行对性性的时候给程序想当大的灵活行。
共享成员:又叫做静态成员和类级成员。这些是方法和变量相同地对所有的类事例来说。每一个对象创建的时候,基于一个给定的类。分享这些相同的变量和函数。这意思为着,比如,我们可以计算出一个类有多少个实例创建了,只要我们生命一个共享的技术器变量。
结构化错误处理:替代了不稳定的也极不灵活的ONERRGOTO语句,我们有一个新的结构来处理错误。这是一块结构包含了TRY,CATCH,和DD关键字的。在TRY和CARCK之间的代码块被保护,如果有个错误出现了,这个CATCH代码快就会运行,在CATCJ运行完之后,FAN块内的代码就做错误结束处理完之后的清除和收尾的工作。
类型安全保证:VB今天在变量的类型转换上显得特别前卫。他会自动将数字转换成文字为了打印,并且还有更多类似。有时候这样的情况会导致不可知的副作用。有了类型安全控制后,我们将可以自己选择让VB避免自动做类型转换,在程序编写时避免一些不可淤滞的错误是显得是十分有用的。
用户界面继承:语言继承还是不够的,VB65还将让VB的表单具有继承特性。这以为着我们能创建一个基本的表单摸班,也许摸班中包含一个标准的工具条,公司标志,和颜色,然后从这个摸班中派生出我门所需要的其他模本。所有其他的摸班将继承摸班的样式和代码从原始摸吧。一个改变对于原始摸班的(CCC),可以自动地簸箕所有又次摸班派生出来的其他表单,只需要简单的便宜即可。
WEB表单:很多年以来VB很广泛地被认为是强大的表单设计工具。我们也喜欢习惯于在空间上双击出来一个编码窗口,然后我们就可以在窗口里面写哪个空间的事件了。WEB表单将这个特性带给了HTML开发。WEB表单是浏览器为平台的,所有的代码都运行在WQEN服务器上。+但同时他给我们拉放表单设计和双机空间编写服务端的时间代码的能力。更妙的是,这是真正的VB代码不是VBS代码。
WEB服务:一个WEB服务是一个组件,运行于一个WEB服务起上并且允许客户程序通过HTTP调用他的方法。在组件上的每个方法都表现为一个URL并且可以返回数据(或许是XNL文档)并且接受参数输入。这样的技术基于的是开放SOAP标准,所以现在我们的服务端组件实际上可以被任何客户访问到,而不管是什么语言或者平台。
既然我们有很好的理解,剩下的问题是,微软怎样来实现这些新特性,并且更重要的是,我们将怎样完全地利用起来让他们更有效率更强大?
有一点是确定的——有了这些改变,VB将成为一个完全的面向对象的语言。有了上述提到的这些新特性,VB仍然将会是世界上最广泛使用的开发工具。