1、GISGIS程序设计概述程序设计概述主要内容主要内容一一软件类型与形式软件类型与形式二二程序开发语言程序开发语言三三软件即服务软件即服务四四GISGIS程序设计分类程序设计分类五五GISGIS对程序设计的要求对程序设计的要求六六本课程教学内容本课程教学内容一、软件类型与形式一、软件类型与形式n IEEE对软件的定义(1983): 软件是计算机程序、方法、规则、相关的文档资料以及在计算机上运行的程序时所必需的数据的集合。程序程序:是计算机需要遵照执行的一系列指令,它作为一:是计算机需要遵照执行的一系列指令,它作为一种具有逻辑结构的信息,精确而完整地描述计算任务中种具有逻辑结构的信息,精确而完整地
2、描述计算任务中的处理对象和处理规则。的处理对象和处理规则。方法、规则方法、规则:通常是在文档中说明并在程序中实现的。:通常是在文档中说明并在程序中实现的。文档文档:开发、使用和维护程序所需要的图文资料。:开发、使用和维护程序所需要的图文资料。数据数据:向一个程序提供的输入。:向一个程序提供的输入。软件软件 = = 程序(方法)程序(方法) + + 数据数据+ + 文档文档一、软件类型与形式一、软件类型与形式软件类型软件类型n 系统软件系统软件:居于计算机系统中最靠近硬件的一层,:居于计算机系统中最靠近硬件的一层,其他软件一般通过系统软件发挥作用。如操作系其他软件一般通过系统软件发挥作用。如操作
3、系统、编译程序、网络软件系统、数据库系统、人统、编译程序、网络软件系统、数据库系统、人机交互软件系统等。机交互软件系统等。n 支撑软件支撑软件:支撑软件的开发与维护的软件工具和:支撑软件的开发与维护的软件工具和软件开发环境。如环境数据库、各种接口软件和软件开发环境。如环境数据库、各种接口软件和工具组等。工具组等。n 应用软件应用软件:特定应用领域专用的软件。:特定应用领域专用的软件。GISGIS软件软件一、软件类型与形式一、软件类型与形式软件表现形式软件表现形式桌面桌面组件组件浏览器浏览器服务器服务器嵌入式嵌入式一、软件类型与形式一、软件类型与形式软件运行环境软件运行环境一、软件类型与形式一、
4、软件类型与形式多种表现形式软件的挑战多种表现形式软件的挑战多种语言多种语言多种形式多种形式开发方式开发方式多种接口多种接口多个平台多个平台.以不变应万变以不变应万变与时俱进与时俱进一、软件类型与形式一、软件类型与形式C+程序设计的方法论程序设计的方法论OPPDesign Pattern经验经验实践实践功夫功夫二、程序设计语言二、程序设计语言文章文章汉语、英语汉语、英语字、词、语法结构字、词、语法结构写文章写文章程序程序计算机语言计算机语言数据表示、表达式、语句结构数据表示、表达式、语句结构编程序编程序u程序设计语言程序设计语言是人与计算机之间交换信息的工具是人与计算机之间交换信息的工具. 第一
5、代语言(1GL): 汇编语言语言高级语言非过程性语言自然语言语言机器语言 第二代语言(2GL): 第三代语言(3GL): 第四代语言(4GL): 第五代语言(5GL): 与与硬硬件件环环境境无无关关二、程序设计语言二、程序设计语言过程性语言过程性语言n 带有过程性特征的语言称为过程性语言。 用过程性语言编写的程序包含一系列的描述,告诉计算机如何执行这些过程来完成特定的工作。程序通常有一个起点和终点,执行的流程呈直线型,至上而下顺序执行。比如FORTRAN、Pascal、C语言。二、程序设计语言二、程序设计语言脚本语言脚本语言n 脚本语言(Script Language)是一种简单的描述性语言,
6、它的出现较好地解决了Web页的动态交互问题。它通过一个标记或 % 嵌入到HTML页中。脚本语言分为客户端和服务端两个不同的版本,客户端实现改变Web页外观的功能,服务器端完成输入验证、表单处理、数据库查询等功能。n 脚本需要一个主机应用系统依附来运行,不能单机运行。例如用HTML标签为显示网页编写一个脚本,则脚本由网络浏览器解释,这里的网络浏览器就是主机应用系统,没有它HTML脚本就不能运行。二、程序设计语言二、程序设计语言脚本语言示例脚本语言示例WelcomeWelcome欢迎走进计算机世界欢迎走进计算机世界%Dim computerdate,cihdateDim computerdate,
7、cihdatecomputerdate=Datecomputerdate=Datecihdate=DateValue (April 25)cihdate=DateValue (April 25)If computerdate=cihdate Then If computerdate=cihdate Then Response.write&Response.write&小心小心CIHCIH病毒发作病毒发作!End IfEnd IfResponse.write&Response.write&当前日期为当前日期为:&Now:&Now%二、程序设计语言二、程序设计语言n目前常用的程序设计语言有:目前常
8、用的程序设计语言有: C C、C+C+、C#C#、JavaJava、PascalPascal、Visual BasicVisual Basic(VBVB)、)、FlexFlex、QtQtJavaC+/C#二、程序设计语言二、程序设计语言nC+C+n C/C+的历史 汇编语言、FORTRAN、ALGOL-60、Pascal、C Smalltalk、带类的C、C+C+C+是由是由AT&T Bell(AT&T Bell(贝尔贝尔) )实验室的实验室的Bjarne StroustrupBjarne Stroustrup博士及其同博士及其同事于事于2020世纪世纪8080年代初在年代初在C C语言的基础
9、上开发成功的。语言的基础上开发成功的。C+C+保留了保留了C C语言原有的所有优点,增加了面向对象的机制。语言原有的所有优点,增加了面向对象的机制。 C+语言的特点C+C+是由是由C C发展而来的,与发展而来的,与C C兼容。用兼容。用C C语言写的程序基本上可以不加语言写的程序基本上可以不加修改地用于修改地用于C+C+。从。从C+C+的名字可以看出它是的名字可以看出它是C C的超集。的超集。C+C+既可既可用于面向过程的结构化程序设计,又可用于面向对象的程序设用于面向过程的结构化程序设计,又可用于面向对象的程序设计,是一种功能强大的混合型的程序设计语言。计,是一种功能强大的混合型的程序设计语
10、言。二、程序设计语言二、程序设计语言nC+C+n C+语言的特点 支持OOP的最主要代表语言 代码简洁高效率 是C语言的超集 是使用最广泛、最主流的程序设计语言以不变应万变的看家本领!以不变应万变的看家本领!二、程序设计语言二、程序设计语言nC#C#NET NET 框架类库框架类库 FrameworkFramework 二、程序设计语言二、程序设计语言nC#C#n C#C#大多数特点和大多数特点和JAVAJAVA一致一致n C#C#用的符号和用的符号和C,C+C,C+接近接近n 完全面向对象语言完全面向对象语言n C+C+不是完全面向对象语言不是完全面向对象语言n 无用单元搜集无用单元搜集n
11、避免了内存泄漏避免了内存泄漏n 不用指针不用指针 避免了引用空指针避免了引用空指针二、程序设计语言二、程序设计语言nC#C#C#C#语言及其开发环境语言及其开发环境 Visaul Studio.NETVisaul Studio.NET二、程序设计语言二、程序设计语言nJavaJavaJava的起源 JavaJava是是SunSun公司公司19951995年正式推出的新一代面向对象程序设计语言年正式推出的新一代面向对象程序设计语言, , 特别特别适合于适合于InternetInternet应用程序开发应用程序开发, , 具有平台无关性。具有平台无关性。 JavaJava来自于来自于1991199
12、1年年SunSun公司的一个叫公司的一个叫GreenGreen的项目的项目, , 其原先的目的是为其原先的目的是为家用消费电子产品开发一个分布式代码系统家用消费电子产品开发一个分布式代码系统, , 可以把可以把E-mailE-mail发给电冰箱、发给电冰箱、 电视机等家用电器电视机等家用电器, , 对它们进行控制。开始对它们进行控制。开始, , 准备采用准备采用C+, C+, 但但C+C+太复杂太复杂, , 安全性差安全性差, , 最后基于最后基于C+C+开发了一种新的语言开发了一种新的语言Oak(JavaOak(Java的前身的前身), Oak), Oak是一是一种用于网络的精巧而安全的语言
13、。种用于网络的精巧而安全的语言。 19941994年下半年年下半年, Internet, Internet的快速发展的快速发展, , 促进了促进了JavaJava语言研制的进展语言研制的进展, , GreenGreen项目组成员用项目组成员用JavaJava编制了编制了HotJava HotJava 浏览器浏览器, , 触发了触发了JavaJava进军进军InternetInternet,使得它逐渐成为,使得它逐渐成为InternetInternet上受欢迎的开发与编程语言,现已发上受欢迎的开发与编程语言,现已发展成为一种重要的展成为一种重要的InternetInternet平台。平台。二、程
14、序设计语言二、程序设计语言- 简单易学:1)风格类似于C+, 基本语法与C语言类似;2)摒弃了C+中容易引发程序错误的地方, 如指针和内存管理; 3)提供了丰富的类库。 面向对象:支持静态和动态风格的代码继承及重用,是完全 面向对象的, 它不支持类似C语言那样的面向过程 的程序设计技术。 解释执行:Java解释器(运行系统)能直接运行目标代码指令。 平台无关:Java源程序被编译成一种高层次的与机器无关的 byte-code格式语言, 被设计在Java虚拟机上运行。nJavaJava特点特点二、程序设计语言二、程序设计语言性能优异:Java可以在运行时直接将目标代码翻译成机器指令, Sun用直
15、接解释器一秒钟内可调用300,000个过程, 翻译目标代码的速度与C/C+的性能没什么区别。 分布式:Java包括一个支持HTTP和FTP等基于TCP/IP协议的子库。因此, Java应用程序可凭借URL打开并访问网络上的对象, 其访问方式与访问本地文件系统几乎完全相同。可移植:Java应用程序可以在配备了Java解释器和运行环境的任何计算机 系统上运行, 通过定义独立于平台的基本数据类型及其运算, Java数据得以在任何硬件平台上保持一致。多线程:Java提供的多线程功能使得在一个程序里可同时执行多个小任务。多线程带来的好处是可以有更好的交互性能和实时控制性能。二、程序设计语言二、程序设计语
16、言 健壮:Java致力于检查程序在编译和运行时的错误。 类型检查帮助检查出许多开发早期出现的错误。 Java自已操纵内存减少了内存出错的可能性。 Java还实现了真数组, 避免了覆盖数据的可能。 安全:Java的安全性可从两个方面得到保证。一方面, 在Java语言里, 象指针和释放内存等C+功能被删除, 避免了非法内存操作。 另一方面, 当Java用来创建浏览器时, 语言功能和一些浏览器本身提供的功能结合起来, 使它更安全。 动态:Java的动态特性是其面向对象设计方法的拓展, 它允许程序动态地装入运行过程中所需要的类。二、程序设计语言二、程序设计语言Sun JDKSun JDKJavaJav
17、a的基石的基石 ,SunSun公司产品,公司产品,19961996年年1 1月推出月推出JDK1.1JDK1.1,目前是,目前是20042004年年9 9月推出的月推出的J2SE 5.0J2SE 5.0Eclipse Eclipse 以构架赢天下,以构架赢天下,20012001年年IBMIBM投资成立了投资成立了EclipseEclipse联盟,联盟,是目前最受欢迎的是目前最受欢迎的JavaJava开发工具开发工具Junit/AntJunit/Ant让让JavaJava自动化的绝代双骄,自动化的绝代双骄, JunitJunit是单元测试的工是单元测试的工具,具,AntAnt是编译部署工具,是是
18、编译部署工具,是JavaJava程序员的必备工程序员的必备工具具WebsphereWebsphere19991999年年IBMIBM推出,开发推出,开发Web Web 应用程序的平台应用程序的平台WebLogicWebLogic19981998年年BEABEA推出的以推出的以JavaJava为基础的应用平台服务器为基础的应用平台服务器JBuilderJBuilderJavaJava开发工具的王者,是由开发工具的王者,是由BorlandBorland公司推出的公司推出的Java Java 集成开发环境,半年推出一个新版本,目前集成开发环境,半年推出一个新版本,目前为为20052005版版Jdev
19、eloper IDEJdeveloper IDEOracleOracle公司提供的公司提供的JavaJava开发工具开发工具二、程序设计语言二、程序设计语言JavaC+/C#C C语言或语言或C+C+语言无疑是目前最佳的选择。几乎所有的操语言无疑是目前最佳的选择。几乎所有的操作系统都支持作系统都支持C/C+C/C+,JavaJava程序的特点是程序的特点是“编写一次,到处运行编写一次,到处运行(Write once, (Write once, run anywhere)”run anywhere)”用用C/C+C/C+编写的程序则具有编写的程序则具有“编写一次,到处编译编写一次,到处编译 (W
20、rite once, compile anywhere)”(Write once, compile anywhere)”的特点。的特点。C/C+C/C+不仅具不仅具有支持多种操作系统的特点,而且成熟、标准,还可以被有支持多种操作系统的特点,而且成熟、标准,还可以被其它多种开发语言调用,更重要的是其它多种开发语言调用,更重要的是C/C+C/C+程序的效率远高程序的效率远高于于JavaJava。 二、程序设计语言二、程序设计语言nFlexFlexFlex是为满足希望开发RIA的企业级程序员的需求而推出的表示层服务器和应用程序框架,它可以运行于J2EE和.NET平台。Flex具有桌面应用程序的响应性
21、与丰富性,又具有Web传播范围广的的特性。二、程序设计语言二、程序设计语言nFlexFlexFlex弥补了许多传统Web应用缺乏的元素,减少了于服务器之间通信的次数,更为详细的展示数据的细节。最适用的应用程序包括:解决多步处理、客户端验证、控制可视数据,使桌面应用和Web应用结合在一起,表现出更强大的表现力。Flex在解决用户体验困难的同时,也带来了新的特点,具体如下。1高效性2易用性3灵活性4全面性二、程序设计语言二、程序设计语言nQtQt Qt是跨平台的C+图形界面的工具包,可以方便的应用于绝大多数的操作系统。 MS/Windows 95、Windows 98、WindowsNT 4.0、
22、Windows 2000、Windows XP; Unix/X11 Linux、Sun Solaris、HP-UX、Compaq True64Unix、IBM AIX、SGI IRIX和很多其它X11 平台; Macintoshi Mac OSX; 嵌入式的,包含有FramBuffer 的Linux 平台。二、程序设计语言二、程序设计语言nQtQt优点优点1. 优良的跨平台特性Qt支持下列操作系统: Windows,Linux, Solaris, SunOS, FreeBSD, BSD/OS, SCO, AIX, OS390,QNX 等等。2. 面向对象Qt 的良好封装机制使得 Qt 的模块化
23、程度非常高,可重用性较好,对于用户开发来说是非常 方便的。 Qt 提供了一种称为 signals/slots 的安全类型来替代 callback,这使得各个元件 之间的协同工作变得十分简单。3. 丰富的 API Qt 包括多达 500 个以上的 C+ 类,还替供基于模板的 collections,serialization, file, I/O device, directory management, date/time 类。甚至还包括正则表达式的处理功能。4. 大量的开发文档二、程序设计语言二、程序设计语言nQtQt架构架构二、程序设计语言二、程序设计语言nQtQt开发的软件开发的软件二、
24、程序设计语言二、程序设计语言n程序设计语言的选择程序设计语言的选择在程序设计语言发展的历程中,出现过上百种编程语言,在程序设计语言发展的历程中,出现过上百种编程语言,它们分别用于不同的目的。它们分别用于不同的目的。程序设计语言的选择程序设计语言的选择人的因素:编程小组精通这门语言吗人的因素:编程小组精通这门语言吗任务需要:选择的语言能否实现任务的全部功能?能跨任务需要:选择的语言能否实现任务的全部功能?能跨平台吗?有数据库接口功能吗?能直接控制声卡等硬件平台吗?有数据库接口功能吗?能直接控制声卡等硬件吗?吗?客户指定:如要通过串行口控制一个外部设备,客户指定:如要通过串行口控制一个外部设备,C
25、+C+汇编汇编语言是最明智的选择。语言是最明智的选择。二、程序设计语言二、程序设计语言nGISGIS程序设计语言使用情况程序设计语言使用情况二、程序设计语言二、程序设计语言n程序设计语言的发展趋势程序设计语言的发展趋势 程序设计语言的发展从面向过程面向过程,到面向对象面向对象,现在又进一步发展成为面面向组件向组件,到现在面向服务面向服务三、软件即服务三、软件即服务托管软件服务的连续体许可证许可证永久性定购交易广告赞助地点地点内部部署工具第三方托管生命周期管理生命周期管理企业IT应用服务提供商(ASP)黑盒软件通过托管服务的方式来部署而且是通过网络(Internet)来访问的三、软件即服务三、软
26、件即服务为何它如此有吸引力?为何它如此有吸引力?三、软件即服务三、软件即服务给软件架构带来的影响给软件架构带来的影响n多租赁的效率高 共享资源 (在一个实例上运行所有的用户)n可定制的 通过配置来定制n可扩展的 许多应用程序可能对Internet规模有要求三、软件即服务三、软件即服务面向服务的架构面向服务的架构转型转型业务流程外包业务流程外包购并与剥离购并与剥离随需应变的运行环境需要需要可编排服务(SOA)可编排流程开发基础设施管理面向服务架构 (SOA)软件开发整合基础设施SOMA灵活的灵活的业务业务灵活的IT三、软件即服务三、软件即服务以服务的方式开发软件以服务的方式开发软件n SO 是分
27、布式对象技术的演变,但是对于本地处理,SO 未取代(或者尚未取代)OOn 事实上,多数服务提供与使用都用对象模型和 OO 最佳方法来编码四、四、GISGIS程序设计分类程序设计分类n平台软件平台软件n基于平台软件的扩展开发程序基于平台软件的扩展开发程序n基于平台软件的组件开发程序基于平台软件的组件开发程序nWebWeb程序程序n跨平台程序跨平台程序n开源程序开源程序四、四、GISGIS程序设计分类程序设计分类n平台软件平台软件四、四、GISGIS程序设计分类程序设计分类n平台软件平台软件四、四、GISGIS程序设计分类程序设计分类n基于平台软件的扩展开发程序基于平台软件的扩展开发程序n Arc
28、Map VBA 开发、插件开发n MapInfo MapBasic开发n AutoCAD下的开发:Lisp、ARX、插件开发四、四、GISGIS程序设计分类程序设计分类n基于平台软件的组件开发程序基于平台软件的组件开发程序n MO、AO、AEn MapX、MapXTremen SuperObject四、四、GISGIS程序设计分类程序设计分类nWebWeb程序程序n Service:C+n 客户端JSC#RIA:flex、silverlight、html5四、四、GISGIS程序设计分类程序设计分类n跨平台程序跨平台程序n Win CE、Mobilen AndroidnPalm OSnSymb
29、ian OSnSeries90 UIQ四、四、GISGIS程序设计分类程序设计分类n开源程序开源程序五、五、GISGIS程序设计要求程序设计要求二次开发二次开发扩展开发扩展开发基础的平台开发技术基础的平台开发技术开源开发开源开发跨平台开发跨平台开发Web开发开发兴趣努力掌握兴趣六、本课程内容六、本课程内容nGISGIS程序设计基础:程序设计基础:C+/COM/DBAC+/COM/DBAnGISGIS扩展开发:扩展开发:VBAVBA、插件开发、插件开发nGISGIS组件开发组件开发nWeb ServiceWeb Service开发开发n开源开发开源开发关于程序语言学习关于程序语言学习质疑猜测实践验证动手实践动手实践! !关于程序语言学习关于程序语言学习质疑猜测实践验证动手实践动手实践! !