本书全面介绍了组件级编程和设计的方法,而且在这种重要的、最新的应用程序开发风格的各个方面,都为读者提供了一个坚实的基础。本书首先介绍了可视化编程,说明了如何由胶连逻辑和现有组件创建一个程序。与该问题的其他论述方法不同,本书的内容并非仅此而已。
在简要介绍了常规的可视化编程之后,《组件级编程》介绍了定制组件。本书通过一些范例说明了如何将一个应用程序分解为三个部分:现有组件、胶连逻辑和定制组件。本书还介绍了组件分类和一种用于识别和指定定制组件的有效工具。本书展示了每种组件类型的多个范例,并为每种组件类型提供了一种详细的设计方法。完成这些内容的学习后,读者就能从零开始开发大量基于组件的应用程序,而且还能具备开发各种第三方定制组件所需的技能。
关键特性:
●介绍了组件基于设计方法的综合分类机制
●介绍了用于识别和指定定制组件的基于分类机制的技术
●针对每种定制组件类型,专门介绍了一整套设计方法
●介绍了大量基于各种技术的不同组件,其中包括JavaBeans、ActiveX和.NET
●本书包含50多个完全开发的可运行范例,并在配套网站上提供了相应的代码
●每章均列出了前提条件和学习目标
●每章最后都提供了一些练习
第1章 绪论
1.1 组件革命
1.2 工程和计算机科学
1.3 组件的定义
1.4 组件框架
1.5 编程模型
1.6 组件开发
1.7 结论
第2章 Visual Basic编程
2.1 前提条件和学习目标
2.2 引言
2.3 属性
2.4 事件
2.5 方法
2.6 数据库应用程序
2.7 在Visual Basic中”真正的”编程
2.8 结论
第3章 组件技术概述
3.1 前提条件和学习目标
3.2 引言
3.3 简单控件
3.4 VBX
3.5 ActiveX
3.6 COM/DCOM
3.7 JavaBeans
3.8 Delphi组件
3.9 .NET组件
3.10 CORBA
3.11 结论
第4章 基于组件的应用程序设计
4.1 前提条件和学习目标
4.2 引言
4.3 基于组件的开发
4.4 一个设计范例
4.5 组件分类
4.6 可见的组件
4.7 不可见组件
4.8 其他组件类型
4.9 结论
第5章 组件实现
5.1 前提条件和学习目标
5.2 引言
5.3 属性.方法和事件
5.4 被动式实现风格
5.5 形式规范
5.6 单个组件开发
5.7 ActiveX开发
5.8 结论
第6章 模型组件
6.1 前提条件和学习目标
6.2 引言
6.3 设计方法
6.4 汉诺塔
6.5 拼图游戏
6.6 模型的各种形式
6.7 结论
第7章 编辑器
7.1 前提条件和学习目标
7.2 引言
7.3 设计方法
7.4 绘制对象
7.5 绘制模式
7.6 鼠标操作
7.7 鼠标处理例程
7.8 选择功能
7.9 修改功能
7.10 撤消功能
7.11 创建撤消对象
7.12 其他问题
7.13 方法回顾
7.14 结论
第8章 后台编辑器
8.1 前提条件和学习目标
8.2 引言
8.3 方法
8.4 SGE后台编辑器
8.5 结论
第9章 串行器
9.1 前提条件与学习目标
9.2 引言
9.3 方法
9.4 SGE串行化函数
9.5 SGE文件处理函数
9.6 SGE剪贴板处理函数
9.7 SGE打印控件
9.8 结论
第10章 显示
10.1 前提条件与学习目标
10.2 引言
10.3 方法
10.4 SGE对象浏览器
10.5 SGE调试浏览器
10.6 文本文件浏览器
10.7 快速排序查看器
10.8 方法回顾
10.9 结论
第11章 存取器
11.1 前提条件与学习目标
11.2 引言
11.3 方法
11.4 SGE存取器
11.5 文本文件存取器
11.6 方法回顾
11.7 结论
第12章 高速缓冲存储器
12.1 前提条件与学习目标
12.2 引言
12.3 方法
12.4 两个简单的高速缓冲存储器
12.5 随机数发生器
12.6 文字提取器
12.7 SGE高速缓冲存储器
12.8 方法回顾
12.9 结论
第13章 过滤器
13.1 前提条件与学习目标
13.2 引言
13.3 方法
13.4 热过滤器和冷过滤器
13.5 文件转换器
13.6 对象转换器
13.7 方法回顾
13.8 结论
第14章 UI窗口部件
14.1 前提条件与学习目标
14.2 引言
14.3 方法
14.4 十字控件
14.5 扑克牌组件
14.6 骰子组件
14.7 方法回顾
14.8 结论
第15章 装饰组件
15.1 前提条件与学习目标
15.2 引言
15.3 方法
15.4 简单的LED组件
15.5 闪烁的文本控件
15.6 方法回顾
15.7 结论
第16章 函数库
16.1 前提条件与学习目标
16.2 引言
16.3 方法
16.4 VDAL通用对话框组件
16.5 结论
第17章 服务包装器
17.1 前提条件与学习目标
17.2 引言
17.3 方法
17.4 INI文件管理器
17.5 方法回顾
17.6 结论
第18章 容器
18.1 前提条件与学习目标
18.2 引言
18.3 方法
18.4 简单容器
18.5 结论
第19章 半持久性对象
19.1 前提条件与学习目标
19.2 引言
19.3 对象的所有权
19.4 虚函数
19.5 对象的确认
19.6 结论
第20章 组件级编程的未来
20.1 前提条件与学习目标
20.2 引言
20.3 支持直接编译
20.4 远程对象
20.5 环境服务
20.6 分层标准和协议独立
20.7 结论
附录A 面向对象设计
A.1 引言
A.2 私有、受保护或公共变量的使用时机
A.3 对象与类
A.4 参数化的构造函数
A.5 抽象封装
A.6 虚基类和多重继承
A.7 C++缺陷
A.8 结论
附录B Windows GUI编程
B.1 引言
B.2 设备环境
B.3 画笔和画刷
B.4 有用的绘制函数
B.5 缩放和滚动
B.6 位图.图标和其他资源
B.7 结论
附录C MFC和ATL
C.1 引言
C.2 MFC属性页
C.3 ATL与MFC的区别
C.4 ATL的属性.方法和事件
C.5 Windows固有的图形函数
C.6 无窗口激活
C.7 固定大小的MFC组件
C.8 结论
附录D 在Web上使用ActiveX控件
D.1 引言
D.2 控件安全
D.3 ATL组件的安全标记
D.4 在ATL中支持属性包
D.5 创建INF文件
D.6 创建cab文件
D.7 标记组件
D.8 版本编号
D.9 HTML标签和编程器
D.10 脚本
D.11 授权
D.12 结论
本书以2000年秋季我在南佛罗里达大学所讲授的一门组件级设计课程为基础,该课程是面向对象设计课程的后继课程(在学习本书前,了解一些面向对象的设计知识是有益的,但并非必需)。该课程的主要学习对象是高年级的在校大学生,但也可以作为研究生的预备课程。
我们有必要开设有关组件级设计的课程,这一需求已出现了很长时间。基于组件的语言(诸如Visual Basic)已经在商业领域作为开发引擎而广泛使用,而且计算机专业的学生也需要透彻地理解这种语言。然而,有关Visual Basic(或其他一些基于组件的开发语言)的课程却并不完善。这些课程只是向学生说明如何使用现有的组件,但并没有说明如何创建自己的组件。
在开发新的基于组件的应用程序时,必须将组件和利用宿主语言(Visual Basic及其他开发语言)编写的代码结合起来。应当作为组件组成部分实现的功能与应当采用宿主语言编程实现的功能之间,有着本质的差别。通常情况下,虽然大家更愿意购买第三方开发的组件,而不愿意开发自己的组件,但仍有许多应用程序所需的组件并不存在。对于定制软件来说,这种趋势是一种规律,而不是个别现象,也没有理由认为这种趋势在将来会有所改变。
学生通过本书将学习到基于组件开发的其他方面内容——也就是说,组件本身的开发。本书不仅讨论了如何开发各种类型的组件,而且还讨论了如何将应用程序划分为组件和宿主级编码。
本书的第1~5章包含了各种课程所必备的基本知识。教员应该在学习后面章节前先介绍这部分内容。第6~18章相对较为独立,因而在介绍时可以不分次序。然而,第7章是其他许多章节的基础,特别是第8章、第9章和第11章内容的基础,以及第10章和第12章部分内容的基础。我建议每门课程都应当讲授第6章、第7章和第13章的内容。(因为第6章介绍的内容可用于大量有趣的学生项目,我喜欢先介绍这些内容,以使学生在开始时能够接触较大的项目)。第19章和第20章的内容适用于准备进一步学习组件级设计的学生。
第13章的内容为组件级软件与更典型的编程类型架起了一座桥梁。通过使用本章的技术,可将针对基于字符的接口(诸如MS-DOS或者UNIX外壳)开发的软件转换为组件级软件。对于其余章节,学生可以根据自己的兴趣有选择地进行学习。我已尽可能让本书的内容丰富多彩。
介绍完第7章的内容后,教员随时都可以介绍第19章的内容。实际上,这些章节是相互独立的,但如果没有一些范例,就很难生动地介绍第19章的内容。第7章和第13章提供了这些范例。
学生们将会发现,这是一门引人入胜的课程,因为课程允许学生开发出他们在自己计算机上用过的同类软件。此外,该课程还允许学生们开发出各种具有精美外观的软件,而不用学习GUI编程的所有细节知识。随着基于组件开发系统课程的普及,本书的内容也会相应地变得更重要。