arcobjects与基于接口的编程

上传人:w****i 文档编号:111722927 上传时间:2019-11-03 格式:PDF 页数:6 大小:238.85KB
返回 下载 相关 举报
arcobjects与基于接口的编程_第1页
第1页 / 共6页
arcobjects与基于接口的编程_第2页
第2页 / 共6页
arcobjects与基于接口的编程_第3页
第3页 / 共6页
arcobjects与基于接口的编程_第4页
第4页 / 共6页
arcobjects与基于接口的编程_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《arcobjects与基于接口的编程》由会员分享,可在线阅读,更多相关《arcobjects与基于接口的编程(6页珍藏版)》请在金锄头文库上搜索。

1、A R C O B J E C T S与基于接口的编程 许增旺曾杉李军 中国 科学院资源与 环境信息系统国家重点实验室) 摘要本 文 介 绍了 作为 传统面向 对 象 思想 扩展 的 羞 于接口 编程的 原理和 方法, 论述了A r - c O b j e c t 。 的 主 要 内 容 与 应 用开 发方 法和A R C / I N F O 8 所 提 供的 定制 和 扩 展方 式, 以 及 在M i - c r w o f t V is u a l B a s ic 环境 下应用 基于接口 编程原 理对A re O b e j m t 。 的 扩展。 一、基于接口 ( I n t e r

2、f a ce)的编程 1 . 组件对象模型 组 件 对象 模型 ( C o m p o n e n t O b j e c t M o d e l , C O M ) 是M ic r o s o f t , D E C 及 其他 一 些公司 支 持的一种软件结构的 “ 工业标准” , 它是 M ic ro s o f t 建立可重用软件组件的二进制规范或协 议, 通过这个协议,软件组件或模块可以 互相连接, 通过这个协议使得在分布式系统中建立 可以动态互换的可重用的软件组件成为可能。组件之间建立连接以后, 两个模块就可以通过 接口 通信。C o m是独立于计算机语言的, 任何可以控制计算机内存

3、的计算机语言都可以实 现C O M规范。C O M允许在二进制的层次上重用组件,也就是, 第三方开发者不需要知道 组件的源码、头文件和对象库就可以在最低的层次上应用组件。 组件对象模型 ( C O M)是建立于基于接口 编程的思想上的,离开接口的概念C O M将没 有意义。经典的面向对象的程序中, 客户程序与类定义建立着牢固的依赖,这些依赖使得在 不破坏这种依赖的情况下维护和扩充此类变得非常困难。随着时间的推移,为一个对象改进 代码变的基本不可能。其主要问题与面向 对象编程中的继承性有关, 这种继承性使应用程序 的可维护性和可扩展性大打折扣。基于接口 编程是一种编程规程,它是共用接口同实现分离

4、 的思想为基础的,使用明确的接口,可以使大型的应用程序更易于维护和扩充。 2 . 从面向对象编程到面向接口编程 面对对象编程的两个著名特性是继承性和多态性。 继承性允许子类复用父类的状态和行 为,子类继承父类的属性和方法并通过重载方法和添加属性的方法对子类进行扩充。继承性 对于代码的维护是一柄双刃剑, 在上层类中改进方法的实现后, 下层类将自 动受益。但随着 继承层次的增多,顶层对代码的修改对下面的继承层会产生不利的影响。多态性允许用同一 种方法处理不同的对象,即便它们是由不同的类产生并且表现出不同的行为。可以看出继承 性所带来的最大优点是方法实现的重用性和多态性, 但继承性也带来潜在的问题,

5、 这个问题 就是它破坏了 非公共成员的封装。 提供实现继承的 语言, 除了公共和私有外, 还提供了一个 保护级的可见性。保护级的属性和方法虽然向用户封装但对下级类是可以访问的。如果一个 下级类使用了上级类的保护的属性和方法, 在上级类的属性和方法被改变时, 继承性就会被 一3 3 3 一 破坏。这样,就使得带有大量继承层次的应用程序, 尤其是对于规模较大的程序变的非常脆 弱。这样,一种适应于更大程度的不断改进设计的重用机制就应运产生了, 这就是基于接口 的编程。 3 . 墓于接口的编程 在基于接口的编程思想中, 对象永远不会向客户暴露创门 内部的详细资料。接口 与实现 是分离的。接口是自 定义

6、的数据类型而不是经典的面向对象编程的公共方法和属性。接口提 供了一套公共方法签名。当 接口 定义方法签名时, 不能包含任何的实现和数据属性。它提供 了一定层次的间接性, 减弱了类和客户程序之间的依赖性。利用接口可以创建对象的引用而 不是对象本身。 通过一个接口 引用和一个对象通讯时, 对象将向每个接口定义的方法提供实 现。接口 具有继承性, 这种继承不需要方法实现的重用。经典的面向 对象编程中的继承可以 叫做实现继承, 接口 的继承性可以叫做接口 继承。在接口 继承中, 次级类不会从上级类中继 承状态和行为, 其状态和行为需要重新定义。实现继承在重用状态和行为方面比接口 继承强 大, 在它实现

7、的程序中 类层次的藕合非常紧密, 而封装性差。 接口 继承强化了 封装性, 弱化 了藕合性,但这种性能大大增强了应用程序的可维护性和可扩展性。 二、A r c O b j e c t s 1 . A r c O b j e c t s 概述 现 在常见的几种对象模型标准有: J a v a B e a n , C O R B A 和C O M , A r c O b j e c t s 技术是以 C O M规范为基础的。 A r c O b j e c t s 组 件 是 形成A r e / i n f o 8 的 技术主 体 ( 图1 ) o A r c O b j e c t s 包括一个

8、技术框架, 一个面向对象地理数据模型, 一个软件组件库和一个丰富的面向开发人员的资源集合。A r - c 0 场 e c t s 组件是作为一个组织 好的 对象组件集合而发 送给用户的。A r e / I n fo 对象模型描述了 组件的范围和组织情况。 应用层 ( A . M a o . A m C a ta l o p ,) 功能层 了 A .O b i e c t s ) 数据管理层 图1 A r c O b j e c t 。 在A r c l a f a g 的作用 第一代用C / C + 建立的面向对象 G I s 有许多不尽如人意的地方,如,很难共享系统 的部分功能,维护和更新C

9、 十+ 组件需要重新编译, 缺少好的模型语言和工具等。为了克服 这些困难, 基于组件的系统开发方法应运而生。一个软件组件是可重用代码的二进制单元。 组件成功的关键是它以非常实用的方法实现了 许多面向 对象原理。组件将方法和数据封装在 一个已 经明确定义的 接口 后面, 而且, 接口 支持继承和多态。它使得软件的可重用非常容易 一3 3 4 实现,因为每个组件是一个很容易组装进大的系统中的独立建立的模块口 软件开发的对象组件方法提供了扩展数据模型和定制地理信息系统的一个基本框架。 E S R I 运用A r c O 场 e c t s 的 对 象 组件 模型建立A r c / I n f o ,

10、 用户同 样可以 运用A r c O b j e c t s 的 对象 组件模型对数据模型进行扩展,这个扩展过程完全不同于以前的二次开发。对于用户来说, E S R I 的 基本对 象组件 和其他 第三方组件没有任何的 不同。 应用A rc O b j e c t s 的开发,用户只 需熟悉A r c O b j e c t s 的 接口 , 并且 按照基于 接日 编程原 理即可 进行 应用开发 和功能扩展。 A r e / I n f o 8 对象数据模型是对A r c O 与 e c t s 的一个较高层次的概括。它主要是将A r c O b - j e c t s 组件库分为A r c

11、C a t a l o g , A r c M a p( 包括A r c M a p L a y o u t t o o ls , A r c M a p S t u d io t o o l s , F r a m e W o r k ) , O b j e c t E d i t o r , O u t p u t , S p a t ia l R e f e r e n ce , D i s p la y , G e o m e t ry , G e o d a t a b a s e ( 包 括R a t e r ) , N e t w o r k 九个子系 统。 每个子系 统都有更详

12、细的 对象模型图。 应用A r c O b j e c t s 的 主要要求就是理解对象模型图中对象接口和对象的层次。 A r c O b j e c t s 也包括了 大蚤的 面向开 发人员的资源, 包括在线帮助, 一系列对象模型图和 包括A r c O b j e c t s D e v e l o p e r s G u i d e 在内的文 档以 及E S R I 的网 上在 线帮助系 统。 2 . A r e / I n f o 8 的定制 ( C ts t a n a t i o n ) 从A r e / I n f o 8 本身扩展的角度来看,A r c / I n f o 8

13、有三层定制功能。A r e / I n f o 8 提供了同 其他常用软件 ( 如M i c r o s o f t W o r d 等)类似的定制 ( 或者称为用户化) 功能。这种功能不需 要 编程, 因 此 投 有 直 接 应用A r c O b j e c t s 。 用 户可以 应 用 这 种功能 容易 地改 变系 统 的外 观和用 户界面内容。这是A r e / I n f o 8 的第一层定制功能,也是最基本的定制功能。第二层定制功能 涉 及 应 用内 建的V B A ( V i s u a l B a s ic f o r A p p li c a t io n ) 将 新的菜单

14、、 工具条和工作流加人到 A r e / I n f o 应 用中 。 A r c M a p 和A r c C a t a lo g 提 供了V B A 的 一 个非 常 完 善的 工作 环 境, 甚 至 还 包 括了 一 个V B A的 调 试器, 而且它 可以 应用所有的A r c O b j e c t 。 技术。V B A 允许将模块、 类模 块和 用户的f o r m , 加 人到A r c / I n f o 的工 程 文 件中 。 运 用V B A可 以 建立基 于A r c O 与 e c t s 的 更 复杂 和 完善的 应 用, 但 这 个 应 用 必 须 在A r c

15、M a p 和人 。 C a t a lo g 的 应用 框架内 运行, 且不能创 建新的实体类。V B A非常适合于只需要应用和扩展 A r e / I n f o 功能的中小型应用。那些希望 创建可重用的 模块, 建立新的应用或者在G e o d a t 曲 a s e 对象模型中加人实体的更专业的软件 开 发 人员, 可以 在通用开发 平台 如V i s u a l B a s ic , V is u a l C + , D e l p h i 等) 上直接应用 A r c O 与 e c t s o 从 应 用开 发的 角 度来 看, 应 用A r c / I n f o 8 可 进行

16、4 种类 型的 扩展。 第一 种 是在A r c M a p 和A r c C a ta lo g 的 框 架 基 础 上 的 定 制 功 能 。 这 种 定 制 功 能 非 常 容 易 使 用, 但 功 能 强 大, 包 括 了 工具和界面的客户化, 涉及从简单的命令、 工具到复杂的面向 应用的解决方案。第二种为数 据棋型的扩展。A r c / I n f o 8 的数据模型可以以两种方式进行扩展。其一为:与数据模型的单 个对象类有关的特定行为可以通过定制的实体和关系被加到系统框架内; 其二为: 通过扩展 G e o d a t a b a s e 支持的数据格式加入新的数据类型。此外,A r e / I n f o 8 也支持 U M L ( U n i f i e d M o d e l in g L a n g u a g e ) 静态数据模型 。 第三 种为: 与 其他C O M组件一样, 任何能够集成 C O M 组件 的 应用, 都可以 嵌 人A r c O b j e c t s 。 如, 在M i c r o s o f t W o r d 中

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号