1.引言
我们经常会问这样的问题“:到底什么使得Delphi如此优秀?”和“为什么和别的编程工具相比,我更愿意选择Delphi?”等等。简而言之就是:高效性。决定一个软件开发工具效率的因素归结为以下五点:①可视化开发环境的性能。②编译器的速度和已编译代码的效率。③编程语言的功能及其复杂性。④数据库结构的灵活性和可扩展性。⑤框架对设计和使用模式的扩充。
2.Del phi的特点
2.1可视化集成开发环境
可视化开发环境通常分为三个组成部分:编辑器、调试器和窗体设计器。和大多数现代RAD(快速应用开发)工具一样,这三部分是协同工作的。当你在窗体设计器中工作时,Delphi在后台自动为你正在窗体中操纵的控件生成代码。你还可以自己在编辑器中加入代码来定义应用程序的行为,同时还可以在同一个编辑器中通过设置断点和监控点等来调试程序。
在版本5里,Delphi的调试器具备了许多先进的功能,如远程调试、过程关联、DL断口包调试、自动本地监控以及CPU窗口等。Delphi还支持在调试时随意放置和停靠窗口并把这一状态保存为命令的桌面设置。由此,Delphi的IDE实现了对调试功能的良好支持。对RAD工具(如Delphi、Visual Basic、C++Builder和PowerBuilder等)来说,窗体设计器是一项独特的功能。一些更为经典的开发环境,如VC++和BC++,都提供了对话编辑器,但却没有将窗体设计器集成到开发流程中,没有窗体设计器将会降低开发工具的整体效率。几年来,Delphi与Visual Basic在完善窗体设计器的功能方面展开了激烈的竞争。Delphi的窗体设计器的与众不同之处在于,Delphi是建立在一个真正面向对象的框架结构基础之上的。这样,你对基类所做的改变都将会传递给所有的派生类。这里涉及的一项关键技术就是VFI(visual form inheritance),即可视化窗体继承。VFI技术使你能够动态地继承当前项目或对象库中的任何其他窗体。一旦基窗体发生改变,派生的窗体会立即予以更新。
2.2编译器的速度和已编译代码的效率
Pascal编译器最著名的特点就是速度快,而Delphi正是建立在这种编译器的基础之上的。事实上,它可能是针对windows的最快的高级语言本地代码编译器。以往速度很慢的C++编译器在近年来取得了很大的进步,增加了链接和各种缓存策略,尤其是在VISua1C++和C++Builder中。但即便如此,C++的编译器还是比Delphi的慢了几倍。Delphi和C++Builder共享同一种编译器后端,是一个公司的产品,因此生成的代码等效于由一个优秀的C++编译器生成的代码。
2.3编程语言的功能及其复杂性
C++是非强类型语言,有些错误编译器无法发现。Object Pascal和Java很相似,它们很好地把握住了复杂性和功能性的平衡。它们都采取了这样一种途径,即限制其可用功能以加强开发者的逻辑设计。例如,两者都避免了完全面向对象但却容易被滥用的多重继承的观念,而是实现了一个执行多重接口功能的类。两者都不支持美观却危险的操作符加载。两者都有一些强大的功能,诸如异常处理、运行期类型信息(RTT工)和生存期内存自管理字符串。特别是运行期类型信息(RTTI),对我们设计仿真培训系统中的操作站与现场站很重要,用它我们可根据组态数据库的数据在运行期自动创建组件和自动识别组件而赋给相应的数据。同时,Delphi使用编程语言是Object Pascal,是面对对象、强类型语言。有利编制稳健的应用程序,减少调试、检错时间以提高开发效率;有利描述真实世界的事物和系统,如控制系统、工艺数学模型。
2.4数据库结构的灵活性和可扩展性
由于Borland缺少一种数据库计划,因此Delphi保留了我们认为是所有工具中最灵活的数据库结构。对大多数基于本地、客户服务器和ODBC数据库平台的应用程序来说,BDE的功能都非常强大。如果你对此不满意,可以避开使用BDE以支持新的本地ADO组件。如果你没有装ADO,可以自己创建数据访问类或者购买第三方数据访问解决方案。此外,MIDAS使对数据源的多层访问更易于实现。而Microsoft的工具(ODBC、OLEDB或者其他)从逻辑上来说趋向于支持Mi-crosoft自己的数据库和数据访问解决方案。
2.5框架对设计和使用模式的扩充
这是一项经常被其他软件设计工具忽略了的重要功能。VCL是Delphi最重要的组成部分。在设计时操纵组件、创建组件、使用面向对象技术继承其他组件的行为,这些能力都是决定Delphi效率的关键因素。在许多场合,编写VCL组件都采用固定的00设计方法。相比之下,其它基于组件的框架经常过于死板或过于复杂。比如ActiveX控件具有和VCL控件相同的设计期性能,但却不能被继承以创建一个具有其他不同行为的新类。传统的类框架,如OWL和MFC,需要你有大量的内部结构知识,而且如果没有RAD工具的设计期支持,其功能将会受到抑制。
3.Del phi的事件驱动机制
3.1无约定编程
与传统的Windows消息机制相比,Delphi的事件处理机制的最大优势在于所有的事件都是无约定的。对程序员而言,无约定就是指可以在事件处理程序中什么都不干。而在传统的Windows消息机制中,就不得不调用基类的消息处理程序,还要把信息回传给Windows。当然,Delphi的事件处理机制的无约定的编程方式可能无法对消息进行直接的灵活有效的处理,你要受制于谁引发了这一事件以及应用程序对这一事件要做出什么响应等。例如,可以在OnKeyPress处理程序中修改和取消击键,但onResize事件处理程序却只能提供这一事件已发生的通知而无法进一步防止或控制尺寸的改变。
不过,Delphi仍然允许在事件处理程序中直接处理Windows消息。只是这就不像事件处理机制那么简单,因为消息处理需要程序员对要处理的消息有详细了解。可以通过message这个关键字处理所有Windows消息。使用Delphi开发应用程序的好处是,你既可以用高级的、易于理解的方式来编程,也可以在需要时直接访问低层的信息。
3.2 Delphi的VCL消息系统
所有的Delphi类有一个处理消息的内置机理,称之为消息处理方法或者Message handlers。Message handlers的基本思想就是:类获取一些种类的消息,然后再分发(dis-patch)它们,由响应的处理函数或者过程进行处理(调用哪一个处理函数或过程取决于所接受的消息)。对于一个特殊的消息,如果没有一个指定的方法存在的话,则由一个缺省的消息处理。
VCL定义了消息分发系统,该系统将所有的windows消息(包括用户定义的消息)传递给相应的对象,由各对象的消息分发系统进行处理。VCL对象用于接收消息的方法叫做MainWndProc()。通过MainWndProc()可以对消息进行任何特殊的处理。不过,一般情况下很少直接调用MainWndProc()来处理消息,除非不想让消息通过VCL的消息系统分发。从MainWndProc()返回后,消息被传递给对象的WndProc()方法,这就是该对象的窗体过程,然后进入VCL的分发机构。分发机构使用Dispatch()方法把消息分发给一个消息句柄。消息到达该消息的处理句柄(Handler)后,经过该句柄的处理,这个消息处理过程就结束了。没有必要改变这个消息分发机理,所要做的只是产生一个消息处理方法或者句柄,即一个消息处理函数。
3.3加速原型化
当对Delphi使用了一段时间后,即使你只是一个Delphi新手,你也会发现,用Delphi编写第一个项目就能马上获益:开发周期短、应用程序稳健。设计用户界面(UI)是许多windows程序员头疼的问题,而这恰好是Delphi的长处。用户界面的设计和程序的布局被称为原型化。在非可视化的开发环境中,应用程序的原型化经常比真正实现程序的时间还要长。一个简洁直观、令人愉悦的用户界面是应用程序的一大部分。
Delphi能够用它的自定义控件或自己开发的控件来快速建立您需要的用户界面。当你能熟练运用窗口、控件和事件响应方法以后,将发现过去要花很大精力的原型化工作现在大大简化了。同时,用Delphi开发的用户界面丝毫不比用传统的开发工具建立的用户界面逊色。在Delphi中你在设计期看到的往往就是最终的产品。
4.结束语
综上所述,大家可发现Delphi 5本身就是一个功能十分强大的面向对象开发平台,它的可视组件库VCL(VisualComponent Library)是一个易学、易用、高效的可重用的软件对象,还包含有丰富的数据库应用,通讯组件。Delphi自身就是使用VCL编写而成的;不仅界面开发方便迅速,而且对于系统所带组件和自编组件的运用就如同组态一样。只要将组件放置在窗体中,用鼠标移动到你要求的位置,改变某些属性以满足你的要求。
欢迎访问最专业的网吧论坛,无盘论坛,网吧经营,网咖管理,网吧专业论坛
https://bbs.txwb.com
关注天下网吧微信/下载天下网吧APP/天下网吧小程序,一起来超精彩
|
本文来源:CFAN整理 作者:佚名