深入浅出MFC第2版(PDF格式)-第66部分
按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
the mon requirements and design in a specific application domain。
* Nirvana 是涅盘、最高境界的意思。
318
…………………………………………………………Page 381……………………………………………………………
第5章 總觀Application Framework
Bjarne Stroustrup (C++ 原创者)在他的The C++ Programming Language 一书中对于
Application Framework 也有如下叙述:
Libraries build out of the kinds of classes described above support design and re…use of
code by supplying building blocks and ways of bining them; the application
builder designs a framework into which these mon building blocks are fitted。 An
alternative; and sometimes more ambitious; approach to the support of design and re
use is to provide code that establishes a mon framework into which the application
builder fits application…specific code as building blocks。 Such an approach is often
called an application framework。 The classes establishing such a framework often have
such fat interfaces that they are hardly types in the traditional sense。 They approximate
the ideal of being plete applications; except that they don't do anything。 The
specific actions are supplied by the application programmer。
Kaare Christian 在1994/02/08 的PC Magazine 中有一篇〃C++ Application Frameworks〃
文章,其中有下列叙述(节录):
两年前我在纽约北边的乡村盖了一栋post…and…beam 房子。在我到达之前我的木匠已经
把每一根梁的外形设计好并制作好,把一根根的粗糙木材变成一块块锯得漂漂亮亮的零
件,一切准备就线程只待安装。 (注:所谓post…and…beam 应是指那种梁柱都已规格化,
可以邮购回来自己动手盖的DIY ! V Do It Yourself …房子)。
使用Application Framework 建造一个 Windows 应用程序也有类似的过程。你使用一
组早已做好的零件,它使你行进快速。由于这些零件坚强耐用而且稳固,后面的工作就
简单多了。但最重要的是,不论你使用规格化的梁柱框架来盖一栋房子,或是使用
Application Framework Windows 程序,工作类型已然改变,出现了一种完
来建立一个
全崭新的做事方法。在我的post…and…beam 房子中,工作类型的改变并不总是带来帮
助;贸易商在预制梁柱的技巧上可能会遭遇适应上的困扰。同样的事情最初也发生在
Windows 身上,因为你原已具备的某些以C 语言写Windows 程序的能力,现在在以
319
…………………………………………………………Page 382……………………………………………………………
第篇 湷觥 FC 程式設計
C++ 和Application Framework 开发程序的过程中无用武之地。时间过去之后,
Windows 程序设计的类型移转终于带来了伟大的利益与方便。Application Framework
本身把message loops 和其它Windows 的苦役都做掉了,它促进一个比较秩序井然
的程序结构。
Application Framework …建立Windows 应用软件所用的 C++ 类别库…如今已行之
有年,因为对象导向程序设计已经快速地获得了接受度。Windows API 是程序性的,
Application Framework 则让你写对象导向式的Windows
程序。它们提供预先写好的机
能(以C++ 类别型式呈现出来),可以加速应用软件的开发。
Application Framework 提供数种优点。或许最重要的;是它们在对象导向程序设计模式
下对Windows 程序设计过程的影响。你可以使用Framework 来减轻例行但繁复的琐
事; 目前的Application Framework 可以在图形、对话框、打印、求助、OCX 控制组件、
剪贴簿、OLE 等各方面帮助我们,它也可以产生漂亮的UI 接口如工具栏和状态列。
借着Application Framework 的帮助写出来的码往往比较容易组织化;因为Framework
改变了Windows 管理消息的方法。也许有一天Framework 还可以帮你维护单一一套
码以应付不同的执行平台。
你必须对Application Framework有很好的知识 ;才能够修改由它附带的软件开发工具
制作出来的骨干程序。它们并不像Visual Basic 那么容易使用。但是对Application
Framework 专家而言,这些程序代码产生器可以省下大量时间。
使用Application Framework 的主要缺点是;没有单一一套产品广被所有的C++ 编译
器支持。所以当你选定一套Framework,在某个范围来说,你也等于是选择了一个编译
器。
320
…………………………………………………………Page 383……………………………………………………………
第5章 總觀Application Framework
为什么使用Application Framework
虽然Application Framework 并不是新观念,它们却在最近数年才成为PC 平台上软件开
发的主流工具。对象导向语言是具体实现Application Framework 的理想载具,而C++ 编
译器在PC 平台上的出现与普及终于允许主流PC 程序员能够享受Application
Framework 带来的利益。
从八十年代早期到九十年代初始,C++ 大都存在于UNIX 系统和研究人员的工作站
中,不在PC 以及商业产品上。C++ 以及其它的对象导向语言(例如Smalltalk…80)使
一些大学和研究计划生产出现今商业化Application Framework 的鼻祖。但是这些早期产
品并没有明显区隔出应用程序与Application Framework 之间的界线。
今天应用软件的功能愈来愈复杂,建造它们的工具亦复如此。Application Framework 、Class
Library 和GUI toolkits 是三大类型的软件开发工具(请见方块说明),这三类工具虽然
以不同的技术方式逼近目标,它们却一致追求相同而基本的软件开发关键利益:降低写
程序代码所花的精力、加速开发效率、加强可维护性、增加强固性(robustness )、为组合
式的软件机能提供杠杆支点(有了这个支点,再大的软件我也举得起来)。
当我们面临软件工业革命,我们的第一个考量点是:我的软件开发技术要从哪一个技术
面切入?从raw API 还是从高阶一点的工具?如果答案是后者,第二个考量点是我使用
哪一层级的工具?GUI toolkits 还是Class Library 还是Application Framework ?如果答
案又是后者,第三个考量点是我使用哪一套产品?MFC 或OWL 或Open Class Library ?
(目前PC 上还没有第四套随编译器附赠的Application Framework 产品)
别认为这是领导者的事情不是我(工程师)的事情,有这种想法你就永远当不成领导者。
也别认为这是工程师的事情不是我(学生)的事情,学生的下一步就是工程师;及早想
点工业界的激烈竞争,对你在学生阶段规划人生将有莫大助益。
我相信,Application Framework 是最好的杠杆支点。
321
…………………………………………………………Page 384……………………………………………………………
第篇 湷觥 FC 程式設計
, ,
Application Framework Class Library GUI toolkit
一般而言,Class Library 和GUI toolkit 比Application Framework 的规模小,定位也
没那么高阶宏观。Class Library 可以定义为「一组具备对象导向性质的类别,它们使
应用程序的某些功能实现起来容易一些,这些功能包括数值运算与数据结构、绘图、
内存管理等等等;这些类别可以一片一片毫无瓜葛地并入应用程序内」。
请特别注意这个定义中所强调的「一片一片毫无瓜葛」,而不像Application
Framework 是大伙儿一并加入。因此,你尽可以随意使用Class Library ,它并不会强
迫你遵循任何特定的程序架构。Class Library 通常提供的不只是UI 功能、也包括一
般性质的机能,像数据结构的处理、日期与时间的转换等等。
GUI toolkit 提供的服务类似Class Library ,但它的程序接口是程序导向而非对象导
向。而且它的功能大都集中在图形与UI 接口上。GUI toolkit 的发展历史早在对象
导向语言之前,某些极为成功的产品甚至是以汇编语言(assembly )写成。不要必然
地把GUI 联想到Windows ,GUI toolkit 也有DOS 版本。我用过的Chatter Box 就
是DOS 环境下的GUI 工具(是一个函数库)。
使用Application Framework 的最直接原因是,我们受够了日益暴增的Windows API 。把
MFC 想象为第四代语言,单单一个类别就帮我们做掉原先要以一大堆APIs 才能完成的
事情。
但更深入地想,Application Framework 绝不只是为了降低我们花在浩瀚无涯的Windows
API 的时间而已;它所带来的对象导向程序设计观念与方法,使我们能够站在一群优秀
工程师(MFC 或OWL 的创造者)的努力心血上,继承其成果而开发自己之所需。同时,
因为Application Framework 特殊的工作类型,整体开发工具更容易制作,也制作的更完
美。在我们决定使用Application Framework 的同时,我们也获得了这些整合性软件开发
环境的支持。在软件开发过程中,这些开发工具角色之吃重不亚于Application Framework
本身。
322
…………………………………………………………Page 385……………………………………………………………
第5章 總觀Application Framework
Application Framework 将成为软件技术中最重要的一环。如果你不知道它是什么,赶快
学习它;如果你还没有使用它,赶快开始用。机会之窗不会永远为你打开,在你的竞争
者把它关闭之前赶快进入!如果你认为改朝换代还早得很,请注意两件事情。第一,江
山什么时候变色可谁也料不准,当你埋首工作时,外面的世界进步尤其飞快;第二,物
件导向和Application Framework 可不是那么容易学的,花多少时间才能登堂入室可还得
凭各人资质和基础呢。
浩瀚无涯的Windows API
Windows 版本 推出日期 API 个数 消息个数
1。0 1985。11 379 ?
2。0 1987。11 458 ?
3。0 1990。05 578 ?
Multimedia Ex。 1991。12 120 ?
3。1 1992。04 973 271
Win32s 1993。08 838 287
1449 291
Win32