对象模型图


一、对象模型图中的类与接口

ArcGIS Engine 提供大量的对象,这些对象之间存在各种各样的关系,如继承、组合、关联等。对象模型图(Object model diagram,ODM)是以统一建模语言UML为基础,用来表现对象之间关系的类图,它是了解和熟悉ArcGIS Engine 体系架构的基础。熟练掌握OMD图可以帮助开发人员快速了解类之间的相互关系,类的接口转换,选择正确的接口,获取所需的属性、方法等;熟练阅读OMD图不但能够基于ArcGIS Engine的GIS软件可发过程中获得非常大的帮助,也是熟练掌握ARCGIS Engine开发技能的必备要求。

从图中可以看出,ArcGIS Engine 包含三种类型的类:AbstractClass类、CoClass类、Class类,在UML中采用不同的样式填充。

  1. AbstractClass类

AbstractClass即抽象类。该类不能被实例化,也就是说不能用new关键字去生成一个该类的对象。根据面向对象思想的概念,不同的类可以继承自同一个抽象类,但是内部的实现可能是不一样的。例如:

IGeometry point=new Point();IGeometry polygon=new Polygon();IEnvelop envelope=point.Envelope;
envelope=polygon.Envelope; 

上面的例子中,Point类都继承于Geometry抽象类,都实现了Geometry抽象类的Envelope属性,但其中的内部细节的实现是不同的,每次得到的envelope变量也是不同的。

2. CoClass类

CoClass类即可创建类。该类可以通过new关键字直接实例化对象,它的实例对象不依赖其他对象的存在而存在,其生存周期也不由其他的对象管理。如“QueryFilter是一个组件类,可以用new关键字创建一个pQueryFilter对象”。例如

IQueryFilter pQueryFilter=new QueryFilterClass();

3. Class类

Class类,即可实例化类。该类不能直接使用new关键字创建对象,但是可以借助其他对象类来创建该类的实例,例如Workspace类可以通过WorkspaceFactory类的OpenFromFile方法来创建。代码如下:

IWorkspaceFactory pWSFactory=new ShapfileWorkspaceFactoryClass();

IWorkspace pWorkspace=pWSFactory.OpenFromFile(filepath,0);

4. 类的关系

  1. 继承关系

继承是面向对象编程的重点之一,只能通过派生子类的方法来实现自己。子类继承父类的全部非私有属性和方法。类之间的继承可以看成是类功能的扩展,即子类在继承父亲属性和方法的基础上,还可增加自己特有的属性和方法。

  • 组合关系

组合关系是指其中一个类对象的组成部分,由组成对象控制被组成对象的整个生命周期。

  • 关联关系

关联关系是指可以从一个类对象是另一个对象的组成部分,他是一种松散的关系,关联关系是具有方向的,若只存在一个方向,则为单向关联。

  • 依赖关系

依赖关系表示一个对象具有生产另外一个对象的方法。在OMD图中一般用虚线表示。

转载于:https://www.cnblogs.com/dongteng/p/5864337.html

ArcGIS Engine开发前基础知识(3)相关推荐

  1. ArcGIS Engine开发前基础知识(2)

    ArcGIS基本控件简介 ArcGIS Engine控件是一组可视化的开发组件,每个ArcGIS Engine控件都是一个COM组件.这些组件包括MapControl,PageLayoutContro ...

  2. ArcGIS Engine开发前基础知识(4)

    ArcGIS不同开发方式的比较 关于GIS应用软件的开发,通常有三种方式:C/S架构.网络GIS和移动GIS.ArcGIS平台提供了对三种开发方式的支持,对于采用从C/S架构的大多数开发者来讲,首先想 ...

  3. ArcGIS Engine开发基础总结(一)

    标准Engine功能 地图浏览    地图制作 数据查询 数据分析 及 所有的开发控件 -MapControl, PageLayout, Toolbar, TOC, ArcReader 对所有矢量和栅 ...

  4. 前端开发之基础知识-HTML(一)

    1.1 html概述和基本结构 html概述 HTML是 HyperText Mark-up Language 的首字母简写,意思是超文本标记语言,超文本指的是超链接,标记指的是标签,是一种用来制作网 ...

  5. C#,ArcGIS Engine开发入门教程

    利用ArcGIS Engine.VS .NET和Windows控件开发GIS应用 Dixon整理 此过程说明适合那些使用.NET建立和部署应用的开发者,它描述了使用ArcGIS控件建立和部署应用的方法 ...

  6. GIS二次开发:实验一 ArcGIS Engine 开发初步

    实验一 ArcGIS Engine 开发初步 一.实验目的 掌握ArcGIS Engine的安装: 熟悉ArcGIS Engine中几个常用的控件: 搭建第一个简单的ArcGIS Engine 程序: ...

  7. ArcGIS Engine开发的类ArcCatalog数据管理工具

    这是以前的ArcGIS Engine开发成果,主要是Geodatabase方面的,模仿ArcCatalog的相关功能,进行了相关的开发 系统环境: VS2010.ArcGIS Engine10.Dev ...

  8. 音视频开发入门基础知识(视频入门篇)

    RTSP实时音视频开发实战课程:<RTSP实时音视频开发实战> 音视频开发入门基础知识(音频入门篇) 目录 一.前言 二.视频采集和显示 三.视频常见的格式 四.RGB转YUV和YUV转R ...

  9. NT内核和驱动开发的基础知识-笔记

    这是我在学习NT内核和驱动开发的基础知识时记录的一些笔记,不是连续的教程,欢迎指正错误的地方 ----------------------------------------------------- ...

  10. 移动web开发入门—基础知识、自适应布局、调试

    之前没做过移动端web开发,最近接手的一个小项目是做微信公众号,需要考虑手机适配.UI给出的设计稿是一般是基于iphone手机做的(15年之后是基于ipone6),我们的UI是基于iphone6来做的 ...

最新文章

  1. 数据恢复利器:通过frm文件恢复数据表的sql结构语句
  2. 李飞飞点赞「ARM」:一种让模型快速适应数据变化的元学习方法 | 开源
  3. 条件随机场 (CRF) 分词序列谈之一(转)
  4. kindeditor图片上传 struts2实现
  5. 第三次学JAVA再学不好就吃翔(part21)--局部变量与成员变量
  6. 从事web前端两年半后的迷茫
  7. mfc 子窗体 按钮不触发_实战经验:MFC非模态对话框的使用
  8. 关于Firefox OS的陈述
  9. Java解析魔兽争霸3录像W3G文件(二):压缩数据块解压合并
  10. 屏幕坐标转换世界坐标
  11. 域名泛解析,二级域名转向问题- -完美解决
  12. 订酒店接口 携程酒店在线预订
  13. Zuul网关的快速使用
  14. 今天说一件细心的事情
  15. 数学思想方法之抽象与概括(2)概括
  16. 用知识图谱实现可拓学例子
  17. 如何学习python
  18. 知识图谱学习笔记四(知识抽取与挖掘)
  19. 不恰当的使用效能度量
  20. 快速接入小爱音箱,操作电脑动动嘴

热门文章

  1. ACM 学习笔记(二) 位运算、并查集、模拟、枚举、递推、递归
  2. 计算机视觉实战(十四)答题卡识别 (附完整代码)
  3. 这些Python骚操作,你知道吗?
  4. SQL Server数据库占用过多内存的解决方法
  5. Linux常用终端命令及扩展(五)
  6. luogu2508 [HAOI2008]圆上的整点
  7. framework7日期插件使用
  8. [转] MongoDB shell 操作 (查询)
  9. ApiDemos示例学习(1)——ApiDemos示例的导入
  10. centos 网卡状态