《GIS程序设计》PPT课件.ppt_第1页
《GIS程序设计》PPT课件.ppt_第2页
《GIS程序设计》PPT课件.ppt_第3页
《GIS程序设计》PPT课件.ppt_第4页
《GIS程序设计》PPT课件.ppt_第5页
已阅读5页,还剩77页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

GIS程序设计,课程简介,课程课时构成 20(理论)+28(实验) 课程目标 了解GIS程序设计概念,掌握GIS程序设计基本方法; 理解面向对象GIS程序设计概念,掌握组件式GIS程序设计方法; 具备初步GIS系统开发能力。,课程简介,课程基本内容 GIS程序设计基本概念和方法 组件技术与应用 ArcGIS Engine开发平台 基于ArcGIS Engine的GIS程序设计与开发 *实验:10个方面内容,课程简介,参考教材 ArcObjects开发基础与技巧,蒋波涛,武汉大学出版社,2006年 地理信息系统开发:ArcObjects方法,韩鹏,武汉大学出版社,2004年 ArcGIS Engine 应用开发教程ESRI培训教程,课程简介,其他资源 ArcGIS Engine开发帮助文档 ESRI开发者网络:/software/arcgis/edn/index.html ESIR中国社区:/ESRI/,课程简介,课程要求与考核 突出实践性,强调动手能力,掌握基本的GIS程序设计方法 重视平时作业(成绩) 考试方式为分为两种:上机操作和试卷考查 成绩评定:平时40%,期末60%,第一章 GIS程序设计基础,一、 程序设计概念 1、程序 程序是由计算机语言的语句序列组成的文件。 更确切地说,所谓程序,就是用计算机语言对所要解决的问题中的数据以及处理问题的方法和步骤所做的完整而准确的描述。,第一章 GIS程序设计基础,2、算法 沃思:程序=数据结构+算法 所谓算法,通俗地讲就是一种解题方法,所要采取的确定的有限的解题步骤。计算机解题的算法,严格地讲是由若干条指令组成的有穷序列。,第一章 GIS程序设计基础,3、程序与算法的区别 算法可以采用自然语言、伪代码、流程图、N-S图、PAD图来进行描述,程序只能用计算机语言来编写 程序中的指令必须是可以执行的,而算法中的描述无此限制 算法必须满足有穷性,程序不一定满足有穷性,第一章 GIS程序设计基础,4、程序设计 用计算机语言把解题步骤编写成计算机可执行的指令序列的过程。 程序设计技术是设计、程序编制和调式程序的方法和过程。,第一章 GIS程序设计基础,二、软件开发与程序设计 软件开发是一个系统工程,包含了多个环节。 可行性研究-需求分析-系统分析- 系统设计-系统实施-系统测试-系统维护,第一章 GIS程序设计基础,程序设计处于系统设计中的详细设计阶段以及实施(编码)阶段。 详细设计的基本任务是:描述模块执行过程、局部数据组织、控制流和每一步具体加工要求及实现细节。 实现是将详细设计翻译成为代码的过程,主要由程序员来执行。,第一章 GIS程序设计基础,三、两种程序设计方法 (一)结构化程序设计方法(SP方法) 1.结构化程序设计的概念最早由荷兰学者E.W.Dijkstra提出。结构定理指出:任何程序逻辑都可用顺序、选择和循环3种基本控制结构实现,并且是具有单入口单出口的。,第一章 GIS程序设计基础,A 顺序结构,B 选择结构,C “当型”循环结构,D “直到型”循环结构,第一章 GIS程序设计基础,2.模块化设计 模块是指完成系统中的某种功能的独立单元,即可用一个名字调用的一段程序语句或是软件被划分成若干可独立命名地和编址的元素,类似“子程序”概念。它具有独立的输入、输出、相应的程序、数据结构,相应的数据,相应的程序代码、功能等特性。,第一章 GIS程序设计基础,(1)模块划分原则 相对独立,功能单一。可以单独理解、单独编程、单独测试。 块间联系(耦合度)尽量少,块内联系(聚合度)尽量多。,第一章 GIS程序设计基础,(2)描述方式 模块:用 表示,方框中写有反映该模块功能的名称。 调用:用 表示。 数据:用调用箭头边上的小箭头表示,且将数据名写在其边上。,第一章 GIS程序设计基础,(3)绘制结构图的原则 结构图中模块间传送的数据按调用模块使用的名字(实在参数名)命名。,A,B,x,y,z,A,B,x,y,w,z,第一章 GIS程序设计基础,设计结束后,作为最终文档资料,结构图可采用下图形式。,A,B,C,1,2,1,2,in,out,第一章 GIS程序设计基础,菱形符号表示一个条件。 弧形箭头表示循环。 带有双竖线的方框表示现成的模块或专用模块。,A,B,A,B,C,A,B,第一章 GIS程序设计基础,一个模块在结构中图中只能出现一次,否则修改模块结构时就需要修改多处。为了避免线条交叉过多,需多次用到的模块可用圆表示。,Proc1,Proc2,scanf,printf,scanf,printf,P,P,第一章 GIS程序设计基础,(4)块间联系 模块之间的联系一般从三个方面衡量: 方式块间联系是通过怎样的方式进行的。包括两类: 用过程语句调用:通过模块的名字调用 Main() void proc(int m,int n) proc(a,b); ,第一章 GIS程序设计基础,直接调用:一个模块直接存取另一个模块内部的某些信息,同时它也引用了除模块名之外的别的名字引用模块内的信息。 作用块间共用的信息是作什么用的 按照联系的作用关系分为三类: 数据型 控制型:一个模块直接转向另一个模块内部的某个位置,第一章 GIS程序设计基础,混合型:即控制/数据型,一个模块修改另一个模块的指令。,A,B取平均成绩或最高成绩,平均/最高,成绩,A,B1取平均成绩,B2取最高成绩,成绩,成绩,“控制型”块间联系及改进,第一章 GIS程序设计基础,数量块间共用信息的多少 比如全局变量,大大增加了模块间的联系。一般一个模块最好只引用其调用模块显式传送给它的2-4个参数以及它本身的局部变量。,第一章 GIS程序设计基础,(5)块内联系 块内联系是指一个模块内部各部分之间的联系,它描述了一个模块内部元素在功能上相互关联的强度。包含6种类型: 偶然型(共存型):形成没有什么原因,完全是偶然的。模块内部各部分之间没有联系。模块含义不易说明,不易修改,不易测试、维护。,第一章 GIS程序设计基础,逻辑型:各成分逻辑上相似,即把几种相关功能组合在一个模块内,每次调用由传给模块的参数确定执行哪种功能。缺点是不易修改,效率低。,P,Q,R,S,T MOVE A TOB READ CARDFILE MOVE C TO D,偶然型,X,Y,Z,A,B,C,逻辑型,第一章 GIS程序设计基础,X,Y,Z,AB,X,Y,Z,X,Y,Z,逻辑型,第一章 GIS程序设计基础,瞬时型(时间性内聚) 各成分需要无中断地同时执行,即与时间有关系。例如初始化系统模块、系统结束模块、紧急故障处理模块等。,紧急意外事故处理,关闭文件 报警 保留现场 ,瞬时型,第一章 GIS程序设计基础,通信型 成分引用共同的数据,即模块内各部分使用相同的输入数据,或产生相同的输出结果。,A,B,存入,打印,修改,删除,打印,通信型,第一章 GIS程序设计基础,顺序型(过程性内聚) 某个成分的输出是另一个成分的输入,即模块内个处理成分相关,且必须以特定次序执行。,A 数据,B 计算,读入,编辑,累加,打印,顺序型,第一章 GIS程序设计基础,功能型 所有成分结合起来恰好完成了一个具体任务。判定一个模块是否为功能型,可以从它调用者的角度看能否用一个不含多个动词的短句简略地描述这个模块“做什么”。优点是易于理解,界面一般比较清晰,易编程,易测试和维护,复用性好。,第一章 GIS程序设计基础,块内联系类型性能比较,第一章 GIS程序设计基础,3.详细设计的描述方式 (1)流程图(FC,Flow Chart),第一章 GIS程序设计基础,第一章 GIS程序设计基础,流程图的优点:对控制流程的描绘很直观,简单清晰,便于初学者掌握。 流程图的缺点: 流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构。 流程图中用箭头代表控制流,因此程序员不受任何约束,可以不顾结构化程序设计的精神,随意转移控制。,第一章 GIS程序设计基础,程序流程图不易表示数据结构和描述有关的数据,而只能描述执行过程。 程序流程图中的箭头使用不当时,流程图则不易理解,将来无法维护。 程序流程图中的符号繁多,篇幅很长,记忆不便,容易产生误解。,第一章 GIS程序设计基础,(2)盒图(N-S图) 1973年美国学者IKE.Nassi和Ben.Schneiderman提出。,第一任务,第二任务,第三任务,条件 T F THEN部分 ELSE部分,循环条件,WHILE 部分,顺序结构 选择结构 while循环型,第一章 GIS程序设计基础,循环条件,DOWHILE 部分,条件 值1 值2 处理1 处理2 ,子程序,DO while 循环型,多条件选择结构,调用子程序,第一章 GIS程序设计基础,盒图的优点: 功能域明确,可以从盒图上直接看出。 不可能任意转移控制。 容易确定局部和全局数据的作用域。 容易表现嵌套关系,且嵌套深度没有限制,也可以表示模块的层次结构。 盒图简单,易学易用。,第一章 GIS程序设计基础,aa bb Z1 CASE Zi,i=1,2,3,4 ff Z2 Z3 Z4 Z6 F T Z5 gg ii cc dd ee hh Z7 Z8 jj,第一章 GIS程序设计基础,(3)问题分析图(PAD,Problem Analysis Diagram) 由日立公司二村良颜等人于1973年提出,它用二维树形结构的图形表示程序的控制流,将这种图按“走树”规则翻译成程序代码比较容易。,第一章 GIS程序设计基础,S1,S2,S1,S2,C,WHILE C,S,DOWHILE C,S,顺序结构,选择结构,While循环,Do While循环,第一章 GIS程序设计基础,(4)IPO图(Input-Process-Output) IPO图是层次结构图(HIPO)的一部分,用来描述层次图中每一个功能模块内部的数据处理过程,包括输入、处理和输出三个部分。,IPO标准格式,第一章 GIS程序设计基础,(5)过程设计语言(PDL,Process Design Language) PDL又称为伪码,伪程序,它是一种混杂语言。它的外层语法使用一种结构化程序设计语言的语法描述控制结构和数据结构,是确定的;内层语法描述具体操作,可灵活使用一种自然语言(如英语),是不确定的。,第一章 GIS程序设计基础, Execute process aa Do Execute process bb if condition Z1 Then Execute process ff if condition Z6 Then do Execute process ii while(condition Z7) Else Execute process gg execute process hh else switch(condition) case z2: do execute process cc while(condition Z5) While(condition Z8) Execute process jj,第一章 GIS程序设计基础,PDL的优点: 由于同自然语言很接近,易于理解,修改。 可以作为注释嵌在源程序中成为程序的内部文档。 由于是语言形式,易于使用普通的文本编辑程序,便于修改。 由于同程序是同构的,可以利用自动产生程序自动地由PDL生成程序代码。 PDL的缺点:不如图形描述直观,描述复杂的条件组合与动作间的对应关系时,不如判定表清晰、简单。,第一章 GIS程序设计基础,常用方法比较,第一章 GIS程序设计基础,(二)面向对象程序设计 1.面向对象方法的特点 与人类习惯的思维方法一样 软件系统结构稳定 软件系统具有可复用性 软件系统易于维护,第一章 GIS程序设计基础,2.面向对象的概念 (1)对象(object) 对象是指问题域中某些事物的抽象,可表现该事物的特征和行为,是一个由属性及操作组成的封装体。 (2)类(class) 类是指具有相同属性和操作的对象集合,是对象的抽象。类抽象地描述了属于该类的全部对象的属性和操作,对象是类的一个实例,类可以产生许多对象,每个对象具有不同的属性值和不同的操作内容。,第一章 GIS程序设计基础,(3)封装(encapsulation) 封装是指将类的属性和操作结合起来,形成一个独立的整体。在实际应用中,对象的外部属性和操作是可以访问的,但其内部细节看不到,封装的目的实现了信息隐藏。 (4)继承(inheritance) 继承是指子类具有父类的所有属性和操作,当由父类创建子类时,子类便继承父类的特性和行为,并且可以为子类添加新的属性和操作。,第一章 GIS程序设计基础,(5)多态性(polymorphism) 多态性是指在父类中定义的属性和操作被不同的子类继承后,可以具有不同的特征和行为。同一个属性或操作在父类与子类中有不同的语义,可产生不同的动作或执行结果。 (6)消息(message) 消息是指一个对象向另一个对象发出的请求。消息包括消息名、接受消息的对象名,操作名、输入信息和回答信息等。面向对象技术使对象之间是相互独立的,对象之间的消息传递实现了通信机制。,第一章 GIS程序设计基础,3.UML方法 UML是一种面向对象的建模语言,它统一了Booch、OMT和OOSE等方法中的概念和语法,提供了面向对象模型元素的定义与表示,已成为面向对象软件建模的标准语言。UML提供了5种视图和10种模型图,以图型的方式实现系统建模,过程清晰直观,与程序设计语言无关。,第一章 GIS程序设计基础,(1)构成 视图:用例视图、逻辑视图、组件视图、进程视图、配置视图。 模型图:用例图、类图、对象图、包图、顺序图、协作图、状态图、活动图、组件图、配置图。 模型元素:包括事物和事物之间的关系。 公共机制:为模型元素提供注释、修饰、规格说明、通用划分和扩展机制。,第一章 GIS程序设计基础,UML模型元素符号,第一章 GIS程序设计基础,关系模型元素,第一章 GIS程序设计基础,(2)UML的模型图 用例图:由用例、参与者及其之间的关系组成,用例图的组成,第一章 GIS程序设计基础,第一章 GIS程序设计基础,类图:描述系统中涉及的所有类以及类之间的关系。,类的图形符号 “Teacher”类,第一章 GIS程序设计基础,类的关联关系,类的泛化关系,类的多重继承,第一章 GIS程序设计基础,类的依赖关系,类的聚合关系,类的组合关系,第一章 GIS程序设计基础,对象图:与类图相似,是在类图基础上实例化形成的。与类图不同的是,在对象名下方需加下划线,属性及操作中的参数有具体值。,对象的图形符号,类“Teacher”的对象图,第一章 GIS程序设计基础,包图:若干个包以及包之间的关系组成。包是一种分组机制,其将一些相关的类集合为一个包,相当于一个子系统。,第一章 GIS程序设计基础,状态图:对动态特征进行建模,是对类的补充描述。 一个状态图仅包含一个起始状态,可以包含多个终止状态。,状态图的基本图符,第一章 GIS程序设计基础,活动图:对系统的动态行为建模,描述活动的顺序,主要表现出活动之间的控制流,本质上一种流程图。,活动图的基本图符,第一章 GIS程序设计基础,第一章 GIS程序设计基础,顺序图:描述对象之间动态的交互关系,主要体现对象之间进行消息传递的时间顺序。,顺序图的基本图符,第一章 GIS程序设计基础,协作图:描述相互合作对象之间的交互关系与连接关系,其与顺序图是UML的2中交互图。在实际应用中,若强调时间和顺序,则选择顺序图,若强调对象之间的相互关系,则选择协作图。,第一章 GIS程序设计基础,“AddCourse”协作图,第一章 GIS程序设计基础,组件图:显示组件及其组件之间的依赖关系。组件的类型包括源代码、二进制组件和可执行组件。,组件图的图符,第一章 GIS程序设计基础,“选课管理子系统”组件图,第一章 GIS程序设计基础,4.面向对象设计 系统设计阶段将对系统分析阶段产生的模型进行设计与完善,并转换为系统设计模型。 系统设计的内容包括系统对象设计、系统动态模型设计和系统体系结构设计。 对象设计包括对象服务及标准说明设计、类库设计和组件选择、对象设计分类重组、对象设计优化等。,第一章 GIS程序设计基础,(1)对象类动态模型建模 动态模型用于描述系统的动态行为,体现系统在运行期间的动态交互。动态模型分为交互模型和状态模型,其中交互模型包括顺序图与协作图,状态模型包括状态图与活动图。,第一章 GIS程序设计基础,(2)设计案例,图书管理员处理图书借阅顺序图,第一章 GIS程序设计基础,图书管理员处理图书借阅协作图,第一章 GIS程序设计基础,借阅者账户状态图,第一章 GIS程序设计基础,四、 GIS软件的开发模式 1、常见的三种开发模式 独立开发 指不依赖于任何GIS工具软件,从空间数据的采集、编辑到数据的处理分析及结果输出,所有的算法都由开发者独立设计,然后选用某种程序设计语言,如Visual C+、Delphi等,在一定的操作系统平台上编程实现。 这种方式的好处在于无须依赖任何商业GIS工具软件,减少了开发成本,但一方面对于大多数开发者来说,需要具有教强的开发能力。,第一章 GIS程序设计基础,单纯二次开发 指借助于GIS工具软件提供的开发语言进行应用系统开发。GIS工具软件大多提供了可供用户进行二次开发的宏语言,如ESRI的ArcGIS提供了VBA开发环境,M

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论