第九讲 组件 gis 设计与开发
DESCRIPTION
RSGIS. 第九讲 组件 GIS 设计与开发. 2004 年 10 月. 版权所有 • 地理信息系统教研室. RSGIS. 讲 授 内 容. 组件原理与组件开发技术. GIS 开发技术概述. MapX 组件开发. MapObject 组件开发. 版权所有 • 地理信息系统教研室. RSGIS. 9.1 组件原理与组件开发技术. 软件及其开发技术的发展 组件及组件特点 组件开发技术的类型 组件原理 基于 VC 的组件实现 组件 GIS. 版权所有 • 地理信息系统教研室. RSGIS. 一、软件及其开发技术的发展. 1 、计算机科学的本质. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/1.jpg)
第九讲 组件第九讲 组件 GISGIS 设计与开发设计与开发
RSGIS
版权所有•地理信息系统教研室
2004 年 10 月
![Page 2: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/2.jpg)
版权所有•地理信息系统教研室
组件原理与组件开发技术 GIS 开发技术概述
MapObject 组件开发
讲 授 内 容
MapX 组件开发
RSGIS
![Page 3: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/3.jpg)
版权所有•地理信息系统教研室
一.软件及其开发技术的发展
二.组件及组件特点
三.组件开发技术的类型
四.组件原理
五.基于 VC 的组件实现
六.组件 GIS
9.1 组件原理与组件开发技术RSGIS
![Page 4: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/4.jpg)
版权所有•地理信息系统教研室
一、软件及其开发技术的发展
计算机的定义冯 - 诺伊曼定义: define a computer as a device that acc
epts data, processes data, stores data, and produces output.
指令流处理方式本质:
动态 —— 计算(软件)
静态 —— 存储
11 、计算机科学的本质、计算机科学的本质
RSGIS
![Page 5: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/5.jpg)
版权所有•地理信息系统教研室
一、软件及其开发技术的发展
22 、软件领域的发展与开发技术的发展、软件领域的发展与开发技术的发展 程序设计方法的发展 软件需求的变化 软件环境的变化 软件开发模式的变化
RSGIS
![Page 6: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/6.jpg)
版权所有•地理信息系统教研室
软件需求的发展
计算
实用
管理 (MIS)
分布式系统( Web )
RSGIS
![Page 7: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/7.jpg)
版权所有•地理信息系统教研室
软件环境的变化
单任务
多任务
文字界面
图形界面
单线程
多线程
平台相关
跨平台
单机 ( 本地 )
网络 ( 分布式 )
单一语言
多种语言
RSGIS
![Page 8: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/8.jpg)
版权所有•地理信息系统教研室
软件设计方法的发展
功能分解法 —— 计算任务
结构化程序设计 —— 以数据为中心
面向对象程序设计 —— 以对象为中心
组件程序设计 —— 以组件为中心
综
合
使
用
RSGIS
![Page 9: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/9.jpg)
版权所有•地理信息系统教研室
软件开发模式的变化
机器码
高级语言和脚本代码
OS + Compiler + Editor
OS + Compilers + IDEs+ Libraries + Wizards+ Components + other inforstructures+ 经验
RSGIS
![Page 10: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/10.jpg)
版权所有•地理信息系统教研室
一、软件及其开发技术的发展33 、软件发展与组件技术、软件发展与组件技术(( 11 )软件发展面临的问题)软件发展面临的问题
软件的复杂度增加:代码开发管理 软件升级和更新:牵一而发动全身? 分布式软件的发布和配置:用户需要培训,程序员和
设计人员更需要 依赖于全才开发人员:软件层次划分 软件的可扩展性:用户可定制、脚本支持 与标准接轨:如 Web —— 〉 B/S
RSGIS
![Page 11: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/11.jpg)
版权所有•地理信息系统教研室
一、软件及其开发技术的发展33 、软件发展与组件技术、软件发展与组件技术(( 22 ))现实中实际项目和工作的要求现实:软件工程中的合作越来越普遍
需要利用别人的资源 需要以资源的方式提供 同一项目组的合作 需要以部分功能的方式提供软件
RSGIS
![Page 12: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/12.jpg)
版权所有•地理信息系统教研室
一、软件及其开发技术的发展33 、软件发展与组件技术、软件发展与组件技术
用一种新的思路来看待问题软件技术多年的发展证明了 OO 符合软件的规律对象技术的发展需要开发工具和开发语言的支持
三大特性:封装性、继承性、多态性两种思想
Object-Based
Object-Oriented
(( 33 )对象技术已经成为处理的通用模型)对象技术已经成为处理的通用模型
RSGIS
![Page 13: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/13.jpg)
版权所有•地理信息系统教研室
Object-Based Programming (MFC)
class 实现数据封装对象构造函数与析构函数访问控制、友元嵌套类类中成员初始化虚拟函数类中运算符重载类模板
class Stack
{
private :
T pool[maxNum];
int sp;
public:
Stack();
void Push(T x);
T Pop();
BOOL IsEmpty() const;
BOOL IsFull() const;
};
RSGIS
![Page 14: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/14.jpg)
版权所有•地理信息系统教研室
Object--Oriented Programming
CShape
CPoint CLine CCircle CArc CText
多态性是面向对象的一个支柱多态性是面向对象的一个支柱 允许程序在实施对象的操作时,允许对象按不同允许程序在实施对象的操作时,允许对象按不同的方式完成不同类型对象的操作;不同类型对象的方式完成不同类型对象的操作;不同类型对象有自己实现操作的方法。有自己实现操作的方法。
RSGIS
![Page 15: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/15.jpg)
版权所有•地理信息系统教研室
一、软件及其开发技术的发展33 、软件发展与组件技术、软件发展与组件技术(( 44 )组件技术已成为对象技术实现的最佳工具)组件技术已成为对象技术实现的最佳工具 组件技术适合于现代的软件环境
软件更新快、规模大、强调协作等组件的概念、软件 IC
组件的可独立发布性要求“接口与实现分离” 组件 infrastructure ,组件体系
COM 、 CORBA (和 Java ) 中间件 (middleware) 市场
RSGIS
![Page 16: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/16.jpg)
版权所有•地理信息系统教研室
二、组件技术及其特点11 、基本概念、基本概念(( 11 )类、对象)类、对象 类是定义,它封装了状态和操作 对象是实例,它反映了具体的事物 对象由类来定义 一个对象可以与多个具有继承关系的类相联系
RSGIS
![Page 17: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/17.jpg)
版权所有•地理信息系统教研室
二、组件技术及其特点11 、基本概念、基本概念
定义:可独立发布的二进制单元 有的地方称作“ package”
容易混淆:服务器 (server) 、对象
例如:COM 组件、 Java Applet
(( 22 )组件)组件
RSGIS
![Page 18: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/18.jpg)
版权所有•地理信息系统教研室
二、组件技术及其特点11 、基本概念、基本概念
软件设计的目标 能反复使用 不同形式的重用:跨平台、跨操作系统例如:
类库(动态、静态连接库)、中间件
(( 33 )) ReuseReuse
RSGIS
![Page 19: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/19.jpg)
版权所有•地理信息系统教研室
二、组件技术及其特点11 、基本概念、基本概念
Interface and implementation 接口是对象或者组件的通信协议 实现是对象或者组件的内部细节客户只关心接口
(( 44 )接口与实现)接口与实现
RSGIS
![Page 20: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/20.jpg)
版权所有•地理信息系统教研室
二、组件技术及其特点11 、基本概念、基本概念
Decouple尽可能地消除软件之间或者软件的不同部
分之间的联系 是软件设计的重要手段,也是目标
(( 55 )去耦)去耦
RSGIS
![Page 21: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/21.jpg)
版权所有•地理信息系统教研室
二、组件技术及其特点22 、特点、特点 关键:接口设计
接口不变性接口可扩展性
内部独立设计、独立开发 独立发布、独立测试 语言无关:规范和实现都是语言无关的 进程透明 ——〉位置透明 可重用性 多线程特性 可扩展性
RSGIS
![Page 22: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/22.jpg)
版权所有•地理信息系统教研室
二、组件技术及其特点33 、优势、优势
部分升级——补丁——缩短软件的更新周期
增加了异构软件的可能标准接口、标准规范、标准协议
动态组合,提高软件生产力 符合现代软件的发展要求
RSGIS
![Page 23: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/23.jpg)
版权所有•地理信息系统教研室
三、组件开发技术的类型11 、三个、三个 COMCOM 的基本概念的基本概念
COM 组件可独立发布的二进制组件在 Windows 平台上为 DLL或者 EXE
COM 对象通过 COM 接口提供服务符合 OO 中对象的基本概念
COM 接口客户与对象之间的协议,对象实现 COM
接口,客户使用 COM 接口
RSGIS
![Page 24: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/24.jpg)
版权所有•地理信息系统教研室
三、组件开发技术的类型22 、组件技术的类型、组件技术的类型
如何设计与开发组件的技术(做组件)
基于组件的二次开发技术(用组件)
RSGIS
![Page 25: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/25.jpg)
版权所有•地理信息系统教研室
三、组件开发技术的类型 如何设计与开发组件的技术(做组件)
静态连接库动态连接库ATLCOM及 COM+
RSGIS
![Page 26: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/26.jpg)
版权所有•地理信息系统教研室
三、组件开发技术的类型 基于组件的二次开发技术(用组件)
客户 组件
COM 库(OLE32.DLL)
SCM(RPCSS.EXE)
SCM(RPCSS.EXE)
RPC
调用创建函数
远程创建
创建进程和对象
RSGIS
![Page 27: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/27.jpg)
版权所有•地理信息系统教研室
四、组件技术原理
对象 B
ISomeInterface
对象 AISomeInterface
客户程序 调用
调用
IOtherInterface
COMCOM包容模型包容模型
RSGIS
![Page 28: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/28.jpg)
版权所有•地理信息系统教研室
四、组件技术原理
对象 A
ISomeInterface
客户程序 QueryInterfaceAddRefRelease
SomeFunction
委托
IUnknown
非委托
IUnknown
COMCOM聚合模型聚合模型
RSGIS
![Page 29: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/29.jpg)
版权所有•地理信息系统教研室
五、基于 VC 的组件实现1、静态连接库的开发静态连接库提供了函数的完整的目标代码,如果程序调用静态连接库中的函数,则在进行连接时连接程序将静态连接库中所包含的该函数的代码拷贝至运行文件中。 ( 1 )如何做静态连接库
#ifndef _MYLIB_H#define _MYLIB_H
#endif
创建静态连接库工程创建库函数及输出函数
RSGIS
![Page 30: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/30.jpg)
版权所有•地理信息系统教研室
五、基于 VC 的组件实现( 2 )使用静态连接库
将静态连接库文件 (*.lib) 和头文件复制至使用工程在使用工程中包含头文件和库文件直接调用函数
( 3 )静态连接库的调试
RSGIS
![Page 31: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/31.jpg)
版权所有•地理信息系统教研室
五、基于 VC 的组件实现2、动态连接库的开发动态连接库是一个可执行模块,其包含的函数可以由Windows应用程序调用以执行一些功能。在程序连接动态连接库中的函数时,连接程序并不将包含在动态连接库中的函数的目标代码拷贝至运行文件,而只是简单地记录了函数的位置信息,程序在执行时,即可找到该函数的目标代码。因为只是在执行时才得到真正的连接,因此称为动态连接。
RSGIS
![Page 32: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/32.jpg)
版权所有•地理信息系统教研室
五、基于 VC 的组件实现( 1 )创建动态连接库
使用 MFC创建动态连接库工程创建库函数及输出函数创建 DEF 文件
//DEF 文件LIBRARY DLLLIBEXPORTS TestDllLib
入口
RSGIS
![Page 33: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/33.jpg)
版权所有•地理信息系统教研室
五、基于 VC 的组件实现( 2 )使用动态连接库
将库文件 (*.lib , *.dll) 和头文件复制至使用工程在使用工程中包含头文件和库文件直接调用函数
( 3 )动态连接库的调试
RSGIS
![Page 34: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/34.jpg)
版权所有•地理信息系统教研室
五、基于 VC 的组件实现3、微软的扩展 DLL
RSGIS
![Page 35: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/35.jpg)
版权所有•地理信息系统教研室
五、基于 VC 的组件实现4、输出类
AFX_CLASS_EXPORT
RSGIS
![Page 36: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/36.jpg)
版权所有•地理信息系统教研室
五、基于 VC 的组件实现5、 ActiveX 组件开发 ActiveX 是在 M$ 与 JAVA抗争时产生的一个新名词( 1996 年 3 月), ActiveX 技术的前身是 OLE 技术是 M$ 为了适应 Internet 的发展对 OLE进行的扩展(当时的含义是“ Activate the Internet” ),当时只是为了发展一种小型的可从网络上快速下载的可重用组件。 现在的 ActiveX 控件等价与以前的 OLE 控件或 OCX ,一个典型的控件包括设计时和运行时的用户界面,唯一的 IDispatch 接口定义了控件的属性和方法,唯一的 IConnectionPoint 接口定义控件可引发的事件。一个控件可以在容器中运行,所以从运行的角度看它类似与一个 DLL 。由于在 IE 中添加了对控件的支持,所以你可以在 WEB页面中通过 VBScript 对控件进行操纵。
RSGIS
![Page 37: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/37.jpg)
版权所有•地理信息系统教研室
五、基于 VC 的组件实现ActiveX 组件开发 图像显示控件
RSGIS
![Page 38: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/38.jpg)
版权所有•地理信息系统教研室
五、基于 VC 的组件实现ActiveX 组件开发 图像显示控件
RSGIS
![Page 39: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/39.jpg)
版权所有•地理信息系统教研室
五、基于 VC 的组件实现ActiveX 组件开发 图像显示控件
添加 COM 对象
RSGIS
![Page 40: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/40.jpg)
版权所有•地理信息系统教研室
五、基于 VC 的组件实现6 、 ATL 组件开发
ATL 可以作为一个完整的控件开发框架,它的主要目标是提供方便的开发手段和生成更小的目标文件。由于 ATL 可以脱离开 MFC 所以它的执行速度和加载速度都比MFC 开发的控件快。当然你也可以在 ATL 中使用 MFC ,但这样就失去了ATL 的优势,因为利用 MFC 开发控件在目前来讲还是要比 ATL 方便和快捷。由于在 ATL 中不使用 MFC 所以所有的的功能调用都是通过WIN32 API 函数和 C 运行库函数来完成。
RSGIS
![Page 41: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/41.jpg)
版权所有•地理信息系统教研室
6 、 ATL 组件开发 封装了一些数据类型
CComBSTR 、 CComVariant 、 CComPtr ,等 实现 COM 接口和 COM 对象
接口映射表、对象映射表,等 窗口的支持
CWindow 、 CWindowImpl 、 CDialogImpl ,等 其他 COM 特征的支持永久性支持连接点支持集合对象和枚举器对象ActiveX control and container等
RSGIS
![Page 42: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/42.jpg)
版权所有•地理信息系统教研室
6 、 ATL 组件开发CComBSTRCComBSTR
封装了 BSTR 类型提供了大量便利的字符串操作
构造函数各种操作符以及一般的字符串操作对于流 (stream) 的支持
CComVARIANTCComVARIANT
CComPTRCComPTR
RSGIS
![Page 43: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/43.jpg)
版权所有•地理信息系统教研室
6 、 ATL 组件开发
通过 通过 ATL Object WizardATL Object Wizard 创建对象创建对象
RSGIS
![Page 44: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/44.jpg)
版权所有•地理信息系统教研室
6 、 ATL 组件开发
通过 通过 ATL Object WizardATL Object Wizard 设置对象名字设置对象名字
RSGIS
![Page 45: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/45.jpg)
版权所有•地理信息系统教研室
6 、 ATL 组件开发
通过 通过 ATL Object WizardATL Object Wizard 设置对象属性设置对象属性
RSGIS
![Page 46: 第九讲 组件 GIS 设计与开发](https://reader033.vdocuments.net/reader033/viewer/2022061423/56815156550346895dbf7834/html5/thumbnails/46.jpg)
版权所有•地理信息系统教研室
六、组件 GIS 介绍RSGIS