对象模型图(OMD)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在哪里可以找到ArcGIS OMD图表
Start > Programs > ArcGIS > Developer Help 简单的、详细的类图 PDF files 软件安装的目录中
一般在 安装目录\DeveloperKit\Diagrams下
电子书籍光盘中
解析对象模型图
OMD中的类有: 抽象类(Abstract Class):不能用于创建对象,但可以用来指定子 类。(通过类型继承)。 组件类(CoClass):可以直接创建对象。 普通类(Class):不能直接创建对象,但可以作为另一个类的属性 或者通过另一个类的实例化来创建对象。
类和他们相应的对象
MxDocument Application
Map
*
Layer
*
FeatureLayer
抽象类( Abstract Class )
不能创建或实例化
抽象类永远不能有实例
为子类定义了泛化(general)
子类集成了抽象类的接口
抽象类的OMD 符号: 2维阴影矩形
组件类 (CoClass)
这些接口也是有效的。但是详细的 属性和方法必须在其它地方浏览。 (e.g., Object Browser).
ArcObjects OMD图表上的虫洞
概念上,这是一个对象模型 事实上, 被分别在几张图表里存放
虫洞表现了图表与图表间的连接关系
虫洞
Element on ArcMap OMD
FeatureLayer on Map Layer OMD
ArcObjects UML关系符号
抽象类 实例化
继承 组件类 组成 类
关联
ArcObjects UML关系符号例子
继承 组成 用来创建
对应关系 1:N 联合 *
_____
鸟
Abstract
巢
CoClass
小鸡
CoClass
*
羽毛
Class
蛋
Class
2
翅膀
Class
ArcObjects 对象例子
属性传引用: 一些 ArcObjects的属性
属性保存了一个对象的引用 必须使用Set关键字
Set pLayer.FeatureClass = pMoresbyData
'Must use Set!
如果引用对象发生了变化,对象的属性将同步受到影响
查找接口
接口棒棒糖类型的图标 (
)
继承接口是有效的 该接口被本类使用. 所有的属性和方法都列表在类图中.
生
成
实例化类的OMD符号: 3维没有阴影的矩形
属性和方法的符号
属性
哑铃形状的图标
Property Get (read)
Property Set (write)
方法
设置属性
属性传值: 大部分 ArcObjects的属性
属性保存了一个对象的值或者一个拷贝
不需要使用Set关键字
pLayer.Name = "Port Moresby" 'No Set keyword
在OMD中的关系类型主要有: 类型继承(Type inheritance) A和B为普通类对象,C为组件类对象,D为 创建(Instantiation) 如下面代码: 组成(Composition):对象间的主次关系 A = B.writeA() A = C.writeA() 关联(Associations) A = New D () X 普通类不能通过New方法产生 A的生命周期是由产生它的对象B和C控制的
例子: MxDocument > Map > layer
从当前的文档中取得聚焦的Map (active data frame)
MxDocument 可以包含一些 Maps ( * )
从一个 Map中取得图层对象
图层对象有多种的类型 (
MxDocument
)
*
Map
IMxDocument pMxDoc = LoadMxdDoc (@"c:\Temp\test.mxd"); IMap pMap = pMxDoc.FocusMap; ILayer pLayer = pMap. get_Layer(1); // Is pLayer a FeatureLayer? if( pLayer is IFeatureLayer ) { MessageBox.Show( "Yes!, it’s a feature layer" ); }
ຫໍສະໝຸດ Baidu
可以创建:使用 New关键字
IMap pMap = new MapClass() 实例化: 从其它对象获得 IMap pMap = pMxDocument.FocusMap()
可创建类的OMD符号:3维阴影矩形
类 (Class)
不能直接创建的类
不能使用New关键字来创建
从其它对象处获得实例 IRow pNewRow = pTable.CreateRow()
理解对象模型图(OMD)
OMD是基于OMT(Object Modeling Technique) 的表示方法,先来看看OMD能帮我们做些什么? 1. 该类支持哪些接口; 2. 完成任务需要哪些对象; 3. 如何使用该类的对象; 4. 是否可以直接实例化类; 5. 接口有哪些方法和属性; 6. 是否有其它类也支持该接口; 7. 对象间的关系。
*
Layer
FeatureLayer Others