ArcGIS Engine开发前基础知识(3)
对象模型图
一、对象模型图中的类与接口
ArcGIS Engine 提供大量的对象,这些对象之间存在各种各样的关系,如继承、组合、关联等。对象模型图(Object model diagram,ODM)是以统一建模语言UML为基础,用来表现对象之间关系的类图,它是了解和熟悉ArcGIS Engine 体系架构的基础。熟练掌握OMD图可以帮助开发人员快速了解类之间的相互关系,类的接口转换,选择正确的接口,获取所需的属性、方法等;熟练阅读OMD图不但能够基于ArcGIS Engine的GIS软件可发过程中获得非常大的帮助,也是熟练掌握ARCGIS Engine开发技能的必备要求。
从图中可以看出,ArcGIS Engine 包含三种类型的类:AbstractClass类、CoClass类、Class类,在UML中采用不同的样式填充。
- 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. 类的关系
- 继承关系
继承是面向对象编程的重点之一,只能通过派生子类的方法来实现自己。子类继承父类的全部非私有属性和方法。类之间的继承可以看成是类功能的扩展,即子类在继承父亲属性和方法的基础上,还可增加自己特有的属性和方法。
- 组合关系
组合关系是指其中一个类对象的组成部分,由组成对象控制被组成对象的整个生命周期。
- 关联关系
关联关系是指可以从一个类对象是另一个对象的组成部分,他是一种松散的关系,关联关系是具有方向的,若只存在一个方向,则为单向关联。
- 依赖关系
依赖关系表示一个对象具有生产另外一个对象的方法。在OMD图中一般用虚线表示。
ArcGIS Engine开发前基础知识(3)的更多相关文章
- ArcGIS Engine开发前基础知识(2)
ArcGIS基本控件简介 ArcGIS Engine控件是一组可视化的开发组件,每个ArcGIS Engine控件都是一个COM组件.这些组件包括MapControl,PageLayoutContro ...
- ArcGIS Engine开发前基础知识(4)
ArcGIS不同开发方式的比较 关于GIS应用软件的开发,通常有三种方式:C/S架构.网络GIS和移动GIS.ArcGIS平台提供了对三种开发方式的支持,对于采用从C/S架构的大多数开发者来讲,首先想 ...
- ArcGIS Engine开发前基础知识(1)
ArcGIS二次开发是当前gis领域的一项重要必不可少的技能.下面介绍它的基本功能 一.ArcGIS Engine功能 在使用之前首先安装和部署arcgis sdk,(在这里不在赘述相关知识)可以实现 ...
- ArcGIS Engine开发基础总结(一)
标准Engine功能 地图浏览 地图制作 数据查询 数据分析 及 所有的开发控件 —MapControl, PageLayout, Toolbar, TOC, ArcReader 对所有矢量和栅 ...
- ArcGIS Engine开发鹰眼图的功能(基础篇)
鹰眼是用于调节全视域范围内主地图显示范围情况的副地图.它体现了地图整体与详细局部的关系. 用户可以通过鼠标单击或者画框等动作实现鹰眼与主地图的交互情况. 鹰眼功能的原理是通过主地图窗口的地图控件和鹰眼 ...
- ArcGIS Engine开发鹰眼图的功能(代码优化篇)
在上一篇,ArcGIS Engine开发鹰眼图的功能(基础篇) 上一篇的实现效果图如下, 如果仔细观察,会发现一个问题,即在“鹰眼”的区域,只要在红色线框内的注记会被覆盖. 如果红色框包括整张图的话, ...
- ArcGIS Engine开发之地图基本操作(4)
ArcGIS Engine开发中数据库的加载 1.加载个人地理数据库数据 个人地理数据库(Personal Geodatabase)使用Miscrosoft Access文件(*.mdb)进行空间数据 ...
- ArcGIS Engine开发的ArcGIS 版本管理的功能
原文:ArcGIS Engine开发的ArcGIS 版本管理的功能 转自:http://blog.csdn.net/linghe301/article/details/7965901 这是以前的Arc ...
- C#,ArcGIS Engine开发入门教程
C#,ArcGIS Engine开发入门教程 转自:http://blog.csdn.net/yanleigis/article/details/2233674 目录(?)[+] 五实现 一 加载A ...
随机推荐
- .Net程序在linux mono环境和WindowsServer上执行测试对比
最近研究了一下mono,想把windows上写的.Net程序移植到linux上跑.网上有资料说Linux上mono执行.Net程序效率比Windows高,本着实证的态度,只有实际验证过才有说服力. 写 ...
- Leetcode 笔记 112 - Path Sum
题目链接:Path Sum | LeetCode OJ Given a binary tree and a sum, determine if the tree has a root-to-leaf ...
- c += c-- | ++b;
一切都是从这开始的 一个大一学弟通过QQ给我发来一个C++的题: int c = 8, b = 3; c += c-- | ++b; 问c的值是多少.通过笔算得到c为19,然后随手建了个C#控制台项目 ...
- linux NFS 配置步骤
转载 http://woxihuanpes.blog.163.com/blog/static/12423219820097139145238/ NFS server可以看作是一个FILE SERVER ...
- Jquery事件
在JS里加事件 <input type="button" value="测试" onclick="test()"/>跟一个函数 ...
- angular1
1.双向绑定: 可进可出 2.依赖注入 函数有定义方定义 3.MVC M: Model 模型--数据 V: View 视图--表现层 C: Controller 控制器--业务逻辑 4.模板: {{ ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(22)-权限管理系统-模块导航制作
系列目录 最近比较忙,系统难度独步增加,文章的发布速度明显比以前慢了. 由于我们已经跑通了整个系统,所有东西都回到了简单,接下来我们做模块制作也就是操作SysModule表. 首先我们来回顾一下之前的 ...
- scikit-learn 梯度提升树(GBDT)调参小结
在梯度提升树(GBDT)原理小结中,我们对GBDT的原理做了总结,本文我们就从scikit-learn里GBDT的类库使用方法作一个总结,主要会关注调参中的一些要点. 1. scikit-learn ...
- 原生js之四步走搞定Ajax
说到Ajax,不得不先提一下HTTP(HTTP,HyperText Transfer Protocol)协议,中文名:超文本传输协议,是互联网上应用最为广泛的一种网络协议.所有的WWW文件 ...
- spring boot(五):spring data jpa的使用
在上篇文章springboot(二):web综合开发中简单介绍了一下spring data jpa的基础性使用,这篇文章将更加全面的介绍spring data jpa 常见用法以及注意事项 使用spr ...