以下内容来自www.uml.org.cn
 
2008-01-07 作者:Michael Zeiler 来源:gissky
 

ArcInfo 的使用方式由两种:其一便是直接使用ArcGIS 桌面应用程序,ArcMap 和ArcCatalog,进行GIS 操作;其二,可以使用其中提供的框架构建开发自己的GIS 应用程序。

数据建模人员需要站在以上比这两种方式更高的位置来完成自己的工作。用户大多数情况下都会直接使用预先提供的ArcGIS 桌面应用程序创建Geodatabase。当然有时候也会需要你进行一些代码定制,特别是在专业化程度很高的复杂数据模型的模拟上,代码的工作更是不可或缺。

本书的目标之一便是介绍数据建模的概念,这样的数据建模不仅在ArcInfo 的应用程序中适用,还在ArcInfo 的软件组件中使用,这个软件组建便是我们熟悉的所谓的ArcObjects。

本书中,从使用ArcInfo 软件时遇到的概念说起,然后再使用对象模型图来表现ArcInfo中的这些概念,以利于读者理解。
比如,首先从一个ArcCatalog 用户的角度来讨论geodatabase、要素数据集和要素类的结构。接着从程序员的角度用模型图的相关部分介绍geodatabase 数据的访问对象。

这两种视图模式有相似之处,但是也有很大差别。应用程序的用户界面有时隐藏了对于程序员来说非常重要的一些软件组件细节。本书的目标是让你能够站到比用户和开发者这两个角度更高的位置处理数据建模的工作。

1.8.1 解读类模型图

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

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

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

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

以下详细说明。

1.8.2 类和对象

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

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

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

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

在Visual Basic 对象浏览器中,你能够查看ArcInfo 所有的可创建类和可实例化类,但看不到抽象类。

1.8.3 关联

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

联系(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 的生存时间。

1.8.4 用图形符号描述模型

起初你也许不大习惯使用这种图形符号,可以先试着读解上面的例子,并结合自己的实际情况考虑。尝试使用这样的工作方法,而后你将会发现这样的图的读解释很容易的,而且你也觉得其实花点力气去理解这些符号真的帮助很大——它用简单而富有表现力的方法将对象模型很好的展示给我们,这样理解ArcInfo 组件的概念便轻松简单多了。

如果你需要定制要素,扩展geodatabase 数据访问对象,那么这些UML 符号也是很重要并可以使用的。

转载于:https://www.cnblogs.com/samlin/archive/2008/01/16/1041730.html

UML 对象模型图阅读指南 (转)相关推荐

  1. java类图设计题_试题七阅读下列说明、图以及Java程序。[说明]某订单管理系统的部分UML类图如 - 信管网...

    试题七 阅读下列说明.图以及Java程序. [说明] 某订单管理系统的部分UML类图如下图所示. 上图中,Product表示产品,ProductList表示所销售产品的列表,Order表示产品订单,O ...

  2. 类图多重度_阅读下列说明以及UML类图,回答问题1、 - 希赛网

    阅读下列说明以及UML类图,回答问题1.问题2和问题3,将解答填入答题纸的对应栏内. [说明] 某客户信息管理系统中保存着两类客户的信息: (l)个人客户.对于这类客户,系统保存了其客户标识(由系统生 ...

  3. 用 C++ 示例解释 UML 类图

    如您所知,类图是显示系统中不同类的属性.操作以及不同对象之间关系的图. 即使我已经使用它很长时间了: 每次使用的时候总是很混乱. 这篇文章就是为像我这样的人准备的: 对初学者也有帮助,这里我将用C++ ...

  4. UML类图-软件需求分析与设计(很详细,很详细,很详细)

    UML之类图 类图的定义:是显示一组类.接口.协作以及它们之间关系的图. 类图主要包含7种元素:.类.接口.协作.依赖关系.泛化关系.实现关系.关联关系. 类图:包.子系统,用来把模型元素聚集成更大的 ...

  5. uml类图设计系统详解实例

    UML 类图 2009-11-21 14:03        by         闫妍,         1098         阅读,         ...         评论,       ...

  6. 从零开始单排学设计模式「UML类图」定级赛

    阅读本文大概需要 3.5 分钟. 本篇是设计模式系列的开篇,虽然之前也写过相应的文章,但是因为种种原因后来断掉了,而且发现之前写的内容也很渣,不够系统. 所以现在打算重写,加上距离现在也有一段时间了, ...

  7. UML类图关系大全 and 报表的基本用法

    UML类图关系大全 1.关联 双向关联: C1-C2:指双方都知道对方的存在,都可以调用对方的公共属性和方法. 在 GOF的设计模式书上是这样描述的:虽然在分析阶段这种关系是适用的,但我们觉得它对于描 ...

  8. 深入浅出UML类图(一)

    在UML 2.0的13种图形中,类图是使用频率最高的UML图之一.Martin Fowler在其著作<UML Distilled: A Brief Guide to the Standard O ...

  9. 从零开始单排学设计模式「UML类图」定级赛 1

    阅读本文大概需要 3.5 分钟. 本篇是设计模式系列的开篇,虽然之前也写过相应的文章,但是因为种种原因后来断掉了,而且发现之前写的内容也很渣,不够系统. 所以现在打算重写,加上距离现在也有一段时间了, ...

最新文章

  1. python对于办公有什么帮助-日常工作中python能够有哪些帮助?
  2. wpf 修改label值_WPF 获取动态添加控件的值
  3. 原来不只是fastjson,这个你每天都在用的类库也被爆过反序列化漏洞!
  4. Double Free浅析(泄露堆地址的一种方法)
  5. AIX-vi操作-提示Unknown terminal type的问题解决方法
  6. ZK tree使用mold
  7. 思科警告:IOS 路由器中含有多个严重缺陷,可导致“系统完全受陷”
  8. python的read_聊一聊python 的readinto
  9. 亿阳防火墙-命令行指令参考手册
  10. 19款国产手机无一幸免:15分钟破解人脸识别,打印眼镜让刷脸形同虚设
  11. Windows 徽标键相关的快捷键
  12. JAVA多线程读写文件如何做到线程安全?(文件锁,FileChannel)
  13. XMU2018摸底测试 星际战争I(Easy)
  14. 云服务器上手是多么的简单?你看了就知道了
  15. 小米10s开启录屏方法详细介绍
  16. C++/C语言sizeof关键字详解
  17. 2020款Macbook Pro忘了激活锁账户密码如何向苹果申请解锁
  18. libevent的使用
  19. 基于STM32的无线体感仿生机械手的设计与实现
  20. Sqoop-1.4.5用户手册

热门文章

  1. 资源文件的读取和使用
  2. 微软:Visual Studio2010能驱动世界
  3. TPU3.0今日上岗!谷歌AI芯片甩竞争对手好几条街!
  4. Tensorflow实践 基本原理学习和框架使用
  5. 零基础如何入门深度学习?
  6. file的open()和read()
  7. java自动雨刷系统,安装雨量传感器实现自动大灯/自动雨刷(详细方法)多图!!
  8. 为什么需要消息队列?
  9. @PreAuthorize 权限控制的原理
  10. 024_输入输出字符集