`

arcobjects 模型图

    博客分类:
  • AE
阅读更多
UML:Unified Modeling Language 统一建模语言,是用来对软件密集系统进行可视化建模的一种语言。UML为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言。
OMD:Object model diagrams 对象模型图表。

首先来看看OMD能帮我们做什么?
1. 该类支持哪些接口;
2. 完成任务需要哪些对象;
3. 如何使用该类的对象;
4. 是否可以直接实例化类;
5. 接口有哪些方法和属性;
6. 是否有其它类也支持该接口;
7. 对象间的关系

下面图示中,便是贯穿本书的对象模型图的钥匙。



这些符号是基于UML 画图工具创建的,UML 符号是面向对象分析和设计的工业图样标准。

对象模型图中提供的信息非常多,是对象浏览器中信息的重要补充。Visual Basic,或者其它的开发环境,都会列出所有的类和成员,但不会指明这些类之间的关系。所以,对象模型图是非常有利于读者对ArcInfo 组件的理解的!

本书使用UML 来描述ArcInfo 组件,即ArcObjects,并描述你能够创建的数据模型。

以下详细说明。

1. 类和对象

在UML 图中有三种类型的类:抽象类(abstract class)、可创建类(createable class)与可实例化类(instantiable class)。

抽象类不能用以创建新对象,但可以用来指定子类。举个例子,“line”(线)是“primaryline”(干线)和“secondary line”(副干线)的抽象类。

可创建类指的是那些你能够直接使用开发环境中的对象定义语法来创建对象。比如在Visual Basic 中是这样书写:Dim As New <object> 或者CreateObject <object>。

可实例化类不能够直接创建新对象,但是这种类的对象能够作为其它对象的属性被创建或是从其它类的方法中创建。------比较难理解。

2. 关联

在抽象类、可创建类和可实例化类之间,有几种存在的关联(或称关系)。

联系(association)便描述了类之间的关联。在两端的类中可以定义多重性( Multiplicity)关联。



在这张图上,一个业主能有拥有一块或多块宗地;同样地,一块宗地可以被一个或多个业主所共有。

多重性关联就是限制对象类与其它对象关联的数目关系。以下是用于多重性关联的符号:

1 —— 一个并且只有一个,这种多样性是可选的;如果不标明,则默认为“1”
0..1 —— 零个或一个
M..N —— 从M 到N(正整数)
*或者0… * —— 从零到任意正整数
1… * —— 从一到任意正整数
类继承(type inheritance)定义了专门的类,它们拥有超类的属性和方法,并且同时也有自身的属性和方法。



上图说明primary line 和secondary line 是line 的一种类型。

实例化(Instantiation)指定一个类的对象有这样的方法,它能够创建另外一个类的对象。



pole 对象有一个方法能够创建transformer 对象。

聚合(Aggregation)是一种不对称的关联方式,在这种方式下一个类的对象被认为是一个“整体”,而另一个类的对象被认为是“部件”。



一个transformer bank 正好有3 个transformer 。在这个图中transformer 能和一个transformer bank 相关联,但当transformer bank 移除以后,transformer 依然能够存在。

组成(Composition)是一种更为强壮的聚合方式,此种方式下,“整体”对象控制着“部分”对象的生存时间。



一个pole 包含一个或多个crossarm。在这个图中当pole 被移除后,crossarm 就不能再使用了。因为pole 控制着crossarm 的生存时间。

在安装完AE后,我们就可以在相关目录中找到AE的OMD图,
一般在 安装目录\DeveloperKit\Diagrams下
下为ArcEngine中OMD的截图:



其中
OMD中的符号:
一个三角形符号 表示继承
菱形的黑色小块 表示组成
虚线前头带个箭头 表示用来创建
* 表示对应关系1:N
一条直线表示 联合

类的类别:
抽象类:不能创建或实例化,从来没有一个抽象类的实例
          用于定义子类的公共接口,子类继承其定义的接口。
          OMD符号为:二维的内部有阴影的矩形。
实例化类:不能创建,从别的对象获得实例。
          OMD符号为:3D矩形内部没有阴影。
可创建的类:用New关键字创建对象或者从别的对象获得运行实例。
          OMD符号为:带阴影的3D矩形符号。

属性和方法:
属性:哑铃状的图标,Read(左侧的哑铃)和write(右侧的哑铃)
方法:指向左侧的箭头
接口:棒棒糖类型的图标
图表之间的连接:虫洞

===========================
个人感觉在OMD图中比较难理解的就是可实例化类CLASS。我做了以下例子去理解它:

ArcEngine中 workSpace 就是一个可实例化类,
WorkSpace不能用new创建,但可以通过WorkSpaceFarctory.Openfromfile()方法来创建.如下:

IWorkspaceFactory pWorkspaceFactory = new AccessWorkspaceFactoryClass();
IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(ConnectionString, 0);

但当我们尝试用New去创建一个Workspace类时,如下:

IWorkspace pWorkspace = new WorkspaceClass();
就会出现以下错误:
“类型”ESRI.ArcGIS.Geodatabase.WorkspaceClass未定义构造函数;

所以,Class和CoClass的主要区别就是CoClass是带构造函数的Class.以此它可以用New直接创建对象
分享到:
评论

相关推荐

    ArcObjects对象模型图

    ArcObjects对象模型图(OMD,Object Model Diagram)是理解ArcGIS平台内部工作原理的基础,它为开发者提供了详细的类、接口、属性和方法的可视化表示。本篇文章将深入解析ArcObjects对象模型图及其相关知识。 首先...

    ArcCatalog Object Model (ArcObjects对象模型图)

    ### ArcCatalog Object Model (ArcObjects对象模型图) #### 概述 在ArcGIS 8.3版本中,ESRI提供了一套丰富的ArcObjects API来帮助开发者构建地理信息系统(GIS)应用。ArcCatalog作为该系统中的一个重要组成部分,...

    Application Framework Object Model ArcObjects对象模型图

    ### ArcGIS 8.3 应用框架对象模型解析 #### 概述 在ArcGIS 8.3中,应用框架(Application Framework)的对象模型(Object Model)是构建自定义应用程序的基础。该模型提供了一系列接口和类,使开发人员能够扩展ArcGIS...

    ArcObjects中三维模型的创建方法

    ### ArcObjects中三维模型的创建方法 #### 一、引言与背景 随着地理信息系统(GIS)技术的不断发展,从二维GIS向三维GIS的转变已成为趋势。三维GIS不仅能够更真实地反映客观世界的实体,还能在空间分析和可视化...

    ArcObjects 9.3 in Delphi

    ArcObjects是一系列COM(组件对象模型)组件,包括接口、类和枚举,用于访问和操作Esri的ArcGIS平台的核心功能。这些对象允许开发者创建、编辑、查询和展示地理数据,执行复杂的空间分析,并且可以处理地图服务和...

    ArcObjects 概念及体系架构

    为了开发ArcObjects应用,开发者可以利用Arcobjects Developer Kit,其中包含开发帮助文件、对象模型图(OMD)、示例代码以及在线资源。OMD是理解ArcObjects的关键,它展示了类、接口、对象之间的关系,帮助开发者...

    AO的OMD对象模型图

    描述:"AO的OMD对象模型图AllOMDs.pdf",这是一份详尽的文档,包含了ArcObjects的所有对象模型图。ArcObjects是Esri公司开发的一套用于构建GIS应用程序的组件集合,它提供了与ArcGIS软件交互的接口。该PDF文件为...

    Exploring ArcObjects

    7. **地理处理和脚本**:详细阐述如何通过ArcObjects执行预定义的地理处理工具,以及编写自定义的地理处理脚本和模型。 8. **服务端开发**:如果书中涉及,将介绍ArcGIS Server的相关内容,包括发布地图服务、操作...

    ArcObjects开发源代码

    8. **事件处理**:理解并利用ArcObjects中的事件模型,可以实现实时响应用户的交互行为,如点击地图事件、图层加载事件等。 9. **多线程编程**:在大型GIS应用中,多线程处理能提升性能,例如在后台加载数据或执行...

    论文研究-基于ArcObjects组件式扩展的标准化地图制图实现.pdf

    本篇文档讨论了基于ArcObjects组件式扩展来实现标准化地图制图的研究,涉及到的关键知识点包括ArcObjects、组件对象模型扩展(COM扩展)、以及地图制图的标准化要求。在此基础上,我们将进一步深入了解这些技术细节...

    ArcObjects GIS应用开发——基于C#.NET(第一版).pdf

    1.2章节讨论了开发环境和编程模型: - 开发者可以选择Visual Studio作为集成开发环境(IDE),利用C#.NET的面向对象特性进行开发。 - .NET Framework为开发者提供了丰富的类库和强大的运行时环境,支持快速开发和跨...

    利用ArcObjects组件技术实现图层的分类符号化.pdf

    ArcObjects的对象模型图详细展示了各类组件之间的关系及其使用方式。通过对象模型图,开发者可以清晰地了解到各个组件的功能定位以及它们之间的交互模式。ArcGIS提供了多个对象模型图,每个图都代表了一个逻辑上的...

    基于VBA的ARCOBJECTS编程源码

    6. 编程模型:ARCOBJECTS采用事件驱动的编程模型,使得在用户交互时能够响应事件,如地图点击、图层加载等。VBA中的事件处理程序可以捕捉并处理这些事件,实现动态响应。 7. 安全性和权限管理:在VBA中利用...

    地理信息系统开发——ArcObjects方法

    开发者需要理解COM(组件对象模型)和.NET框架,因为ArcObjects基于这些技术。此外,学习如何实例化和使用Esri的对象模型是至关重要的。 5. **实例教程** 资料可能包含多个示例项目,覆盖了从简单地图显示到复杂...

Global site tag (gtag.js) - Google Analytics