GIS程序设计课件:GIS程序设计2.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《GIS程序设计课件:GIS程序设计2.ppt》由用户(罗嗣辉)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- GIS 程序设计 课件
- 资源描述:
-
1、GISGIS程序设计基础程序设计基础主要内容主要内容一一C+C+二二COMCOM三三DBADBA四四并行计算并行计算1 C+ 介绍介绍C+ reviewn C+语言基础n Object-Based Programmingn Object-Oriented Programmingn STLC+ in my opinionn C+语言在变化,我们的概念也要调整变化n 最能反映OO思想的语言,掌握C+有助于理解OOn 区分C和C+,C+不是C语言,不要用看待C语言的方式来看待C+The foundation for C+n 操作系统的基础知识 文件API、内存管理 infrastructuresn
2、计算机原理 汇编语言 C/C+是产生ASM代码的frameworkn 编译和执行过程 编译过程 执行过程n 许多概念 进程、heap、stack,.程序开发过程程序开发过程开发编辑编译出错?链接执行结果正确?结束源程序file.cpp目标程序file.obj库函数和其它OBJ可执行程序file.exeYesYesNoNoBuild过程:过程:compile timen Compile + linkn 如何对待错误和警告 错误:一定要排除,从第一个错误找起 警告:或者排除,或者确实理解不会对程序造成危害n 学会设置compile options和link options IDE中如何设置? 一定
3、要知道! 命令行如何设置? 程序代码中如何设置?执行过程:执行过程:runtimen Load、重定位、初始化、mainn 如何调试 断点 assertionn 程序对环境的依赖性 系统环境 CRT 内存影响C+语言语言内容内容n 数据类型 内置(built-in)、标准库、自定义的n 表达式n 控制语句n 函数(模板)n 异常处理C+标准库标准库n C标准库n iostream librarycin、cout、cerrostream& operator (istream& os, MyClass&)n STL(Standard Template Library)n 例子:template T
4、ype min(Type a, Type b)return ab?a:b;n min(10,20);min(10.0, 20.0);n 模板实例化 由参数决定 隐式实例化 显式实例化 min(10,20);函数模板函数模板n Why ?n For instance Macro:# define max(a,b) (a)(b)?(a):(b) Overload:int max(int a,int b) return ab?a:b;float max(float a,float b) return ab?a:b;异常处理异常处理(exception handling)n 错误处理机制、错误代码隔离
5、n Throw (raise) an exception Throw expression 类似于return 语句n Try、catch语句(handler) try catch(type) 或 catch(type obj)n 类似于函数调用 但是类型匹配发生在runtimeObject-Based Programmingn class实现数据封装n 对象n 构造函数与析构函数n 嵌套类n 类中成员初始化n 虚拟函数n 类中运算符重载n 类模板this指针指针n 在类的内部指向类自身的指针n 在每个成员函数中,this指针提供了使用上的方便n this指针把类的多个实例对象区分开来模板模板
6、n函数模板 即以数据类型为“参数”的函数 例如: template Swap(T &a, T&b) T temp; temp = a; a = b; b = temp; n 类模板类模板( (模板类或类生成器模板类或类生成器) ) 即以数据类型为即以数据类型为“参数参数”的类的类 例如:例如: template class template class StackStack private : private : T T poolmaxNumpoolmaxNum; ; intint sp; sp; public: public: Stack(); Stack(); void void Push
7、(TPush(T x); x); T Pop(); T Pop(); BOOL BOOL IsEmptyIsEmpty() const;() const; BOOL BOOL IsFullIsFull() const;() const; ; ; 使用:使用: Stack Stack intStackintStack; ; Stack Stack floatfloat Stack; Stack;从面向过程转换到面向对象从面向过程转换到面向对象n 面向过程以功能为组织单元面向过程以功能为组织单元 在在C C语言中以函数作为功能单元;语言中以函数作为功能单元; 通过数据结构来描述具体的问题;通过数据
8、结构来描述具体的问题; 数据在功能数据在功能( (函数函数) )之间以参数的形式被传送。之间以参数的形式被传送。 n 面向对象面向对象 用类用类classclass封装数据以及与数据相关的操作;封装数据以及与数据相关的操作; 用类的继承性来实现类的重用性;用类的继承性来实现类的重用性; 多态性。多态性。Object-Oriented Programmingn CShapen CPointn CLinen CCirclen CArcn CTextCShapeCPointCLineCCircleCArcCText多态性和虚拟函数多态性和虚拟函数n 多态性是面向对象的一个支柱 允许程序在实施对象的操
9、作时,允许对象按不同的方式完成不同类型对象的操作;不同类型对象有自己实现操作的方法。n 虚拟函数虚拟函数实现了多态性。说明:在函数说明之前加上关键字virtual在基类的说明中,定义虚拟函数:virtual void Display();调用:CShape *pShape = GetCurrentShape();pShape-Display();关于程序语言学习关于程序语言学习克服当前程序语言学习的克服当前程序语言学习的“三个三个”主义主义 拿来主义:缺乏自己的思考拿来主义:缺乏自己的思考 本本主义:为了考证而学习本本主义:为了考证而学习 迷茫主义:不知道该怎么培养自己的动手能力迷茫主义:不知
10、道该怎么培养自己的动手能力想学英语一样想学英语一样学程序语言!学程序语言!n 象学英语一样学VC+n “授人以鱼不如授人以渔” 语言的学习能力胜于学习语言本身n 强制动手编程:项目的压力n 强制自主学习:积累与成功感n 学会利用资源:自己实现别人的程序关于程序语言学习关于程序语言学习质疑猜测实践验证动手实践动手实践! !2、COM程序、组件和插件程序、组件和插件系统中一种物理系统中一种物理的、可代替的部的、可代替的部件、它封装了实件、它封装了实现并提供了一系现并提供了一系列可用的接口。列可用的接口。组件就是对象,组件就是对象,是对数据和方法是对数据和方法的简单封装的简单封装 程序程序(EXE)
11、组件组件(COM)(COM)插件插件(DLL)(DLL)应用程序是指为了完成某项或某几项特定任务而被开发运行于操作系统之上的计算机程序。运行在用户运行在用户模式,它可以和用户模式,它可以和用户进行交互,具有可视进行交互,具有可视的用户界面的用户界面 插件是一种遵插件是一种遵循一定规范的循一定规范的应用程序接口应用程序接口编写出来的程编写出来的程序。序。 运行在应运行在应用程序提供的用程序提供的界面上界面上扩展扩展基础基础二次开发二次开发控件控件可视化的组件可视化的组件以以ArcGIS体系来说明体系来说明以以ArcGIS体系来说明体系来说明以以ArcGIS体系来说明体系来说明插件插件以以ArcG
12、IS体系来说明体系来说明组件的二次开发组件的二次开发像用像用MFC下下控件一样使用控件一样使用组件的二次开发组件的二次开发举例举例如何封装组件如何封装组件学会封装组件的必要性学会封装组件的必要性解决解决软件发展中遇到的问题n 软件的复杂度增加 代码开发管理n 软件升级和更新 牵一而发动全身?n 分布式软件的发布和配置 用户需要培训,程序员和设计人员更需要n 依赖于全才开发人员 软件层次划分n 软件的可扩展性 用户可定制、脚本支持n 与标准接轨:如Web B/S如何封装组件如何封装组件n 现实:软件工程中的合作越来越普遍n 需要利用别人的资源n 需要以资源的方式提供n 同一项目组的合作学会封装组
13、件的必要性学会封装组件的必要性现实中实际项目和工作的要求现实中实际项目和工作的要求如何封装组件如何封装组件一般动态连接库的开发与使用一般动态连接库的开发与使用由用户自己开发的、可以加入到最终用户(包括用户本人和由用户自己开发的、可以加入到最终用户(包括用户本人和其他使用该模块的人)应用程序中提供某一特定功能的函数其他使用该模块的人)应用程序中提供某一特定功能的函数和类的集合。和类的集合。包括:静态连接库和动态连接库包括:静态连接库和动态连接库 如何封装组件如何封装组件静态连接库的开发与使用静态连接库的开发与使用静态连接库提供了函数的完整的目标代码,如果程序调用静静态连接库提供了函数的完整的目标
14、代码,如果程序调用静态连接库中的函数,则在进行连接时连接程序将静态连接库态连接库中的函数,则在进行连接时连接程序将静态连接库中所包含的该函数的代码拷贝至运行文件中。中所包含的该函数的代码拷贝至运行文件中。 开发与使用开发与使用调试调试 #ifndef _MYLIB_H#define _MYLIB_H#endif如何封装组件如何封装组件动态连接库的开发与使用动态连接库的开发与使用 动态连接库是一个可执行模块,其包含的函数可以由动态连接库是一个可执行模块,其包含的函数可以由Windows应用程序调用以执行一些功能。在程序连接动态连接应用程序调用以执行一些功能。在程序连接动态连接库中的函数时,连接程
15、序并不将包含在动态连接库中的函数的库中的函数时,连接程序并不将包含在动态连接库中的函数的目标代码拷贝至运行文件,而只是简单地记录了函数的位置信目标代码拷贝至运行文件,而只是简单地记录了函数的位置信息,程序在执行时,即可找到该函数的目标代码。因为只是在息,程序在执行时,即可找到该函数的目标代码。因为只是在执行时才得到真正的连接,因此称为动态连接。执行时才得到真正的连接,因此称为动态连接。开发与使用调试 /DEF 文件文件LIBRARY DLLLIBEXPORTS TestDllLib TestDllMFCConnect如何封装组件如何封装组件推荐动态连接库的开发与使用推荐动态连接库的开发与使用1
16、、微软的扩展、微软的扩展 DLL2、输出类方式、输出类方式AFX_CLASS_EXPORT 如何封装组件如何封装组件ActiveX的开发与使用的开发与使用 ActiveX是在是在MS与与JAVA抗争时产生的一个新名词(抗争时产生的一个新名词(1996年年3月),月),ActiveX技术的前身是技术的前身是OLE技术是技术是MS为了适应为了适应Internet的发展对的发展对OLE进行的扩展(当时的含义是进行的扩展(当时的含义是“Activate the Internet”),当时只是为了发展一种小型的可从网络上快),当时只是为了发展一种小型的可从网络上快速下载的可重用组件。速下载的可重用组件。
17、 现在的现在的ActiveX控件等价与以前的控件等价与以前的OLE控件或控件或OCX,一个典,一个典型的控件包括设计时和运行时的用户界面,唯一的型的控件包括设计时和运行时的用户界面,唯一的IDispatch接接口定义了控件的属性和方法,唯一的口定义了控件的属性和方法,唯一的IConnectionPoint接口定接口定义控件可引发的事件。一个控件可以在容器中运行,所以从运行义控件可引发的事件。一个控件可以在容器中运行,所以从运行的角度看它类似与一个的角度看它类似与一个DLL。由于在。由于在IE中添加了对控件的支持,中添加了对控件的支持,所以你可以在所以你可以在WEB页面中通过页面中通过VBScr
展开阅读全文