AE中的三种类

基本概念

对象(Object):系统中用来描述客观事物的一个实体。
对象是由类实例化产生的。

类(Class)描述了一组具有相同特性(属性)和相同行为(方法)的对象。
类和对象的关系如同模具和铸件的关系,对象是类的实例化结果,而类是对对象的抽象。
如人是一个类,张三,李四就是对象。

接口(Interface)是定义了一组方法(Method)和属性(Property)的数据结构,通过这组数据结构,可以调用组件对象的功能。
在面向对象编程中,人们通过类的接口来使用类,接口由具体的类来实现,接口定义一个对象能做什么(what),而类定义它怎么做(how).

三种类

AE中的三种类

AE中共分为3种类:

假设A为抽象类,B为普通类,C为组件对象类, a,b,c为对应的对象。

1、抽象类(Abstract Class)

符号为普通的二维矩形

不能够被创建或者实例化,抽象类用来定义子类的公共接口,子类继承其定义的接口。OMD(Object Model Diagrams,对象模型图)中每个抽象类至少有一个子类。

如Geometry是一个抽象类,它不能直接创建,但是他的子类如Point, Polyline, Polygon可以直接创建, Geometry给出了所有几何元素的共有属性和方法。

2、普通类(Class)

符号为带阴影的二维矩形

不能够直接创建新对象,但可以作为其他类的对象的一个属性
如 B object = c.certainProperty;
或者从某个类的对象的方法来创建。
B object =c.certainMethod();

如FeatureCursor是一个普通类,FeatureCursor不能用new创建,但可以通过IFeatureLayer.Search()方法创建

IFeatureCursor pFeatureCursor = pFeatureLayer.Search(spatialFilter, false);

这里如果pFeatureLayer对象被销毁,那么依附于其上的pFeatureCursor也会消失,可以认为两者之间是组成关系。

3、组件对象类(Component Class,Coclass)

符号为三维立方体

可以用New 关键字来创建
IMap pMap = New MapClass();
或者从别的对象获得运行实例。
IMap pMap = axMapControl1.Map

  • 案例一

ArcEngine中workSpace 是一个普通类,不能通过New来创建,但可以通过WorkSpaceFarctory.Openfromfile()方法来创建。

如:

IWorkspaceFactory pWorkspaceFactory =new AccessWorkspaceFactoryClass();

AccessWorkspaceFactoryClass是一个组件对象类,可以直接new来新建一个对象,IWorkspaceFactory是访问该对象的接口。

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

OpenFromFile是IWorkspaceFactory接口中的一个方法,这个方法的结果返回一个WorkSpace对象,该过程称为实例化,我们通过Iworkspace接口去访问WorkSpace对象。

但当我们尝试用New去创建一个Workspace类时,如下:
IWorkspace pWorkspace = new WorkspaceClass();
就会出现以下错误:
“类型”ESRI.ArcGIS.Geodatabase.WorkspaceClass未定义构造函数;

这里可以理解为CoClass是带构造函数的Class,因此它可以用New直接创建对象 。

  • 案例二

IMap pMap = New MapClass();

这一步不单单是实例化出一个Map对象,同时把IMap作为访问该对象的默认接口,可以使用IMap里面的属性(Property)和方法(Method)对地图对象进行操作。

PMap.name= “test”;

通过IMap中的name属性来修改地图对象。

PMap.clearLayers();

通过IMap中的clearLayers()方法来清除地图中的所有图层。

PMap.Clear();

执行这一步,出现错误。 因为Clear()属于在Map类的另外一个接口IActiveView所有,不可能从IMap接口中得到这个方法。

可以通过QI(Query Interface,查询接口)来切换到IActiveView上。

IActiveView pView = pMap as IActiveView;

或者IActiveViewpView = (IActiveView)pMap;

PView.Clear();

五种关系

  • Type inheritance(类型继承)
    符号:带空心三角的线

鹰属于鸟类,是一种继承关系。

  • Instantiation (实例化)
    符号:虚线箭头前带一个箭头

实例化指某个类的对象具有创建另一个类的方法。鹰(Hawk)通过Birth()这个方法可以创造一个Egg对象。

  • Association(关联)
    符号:一条普通的直线

鹰和巢之间是松散的关联关系,一只鹰可以拥有几个巢,一个巢可以让几只鹰居住。
关联关系具有方向性:单向关联和双向关联。

  • Aggregation(聚合)
    符号:带空心菱形的线
聚合

如鹰爸爸,鹰妈妈,鹰宝宝聚合成一个家庭,但是当鹰宝宝长大离家之后,鹰宝宝依然存在,不会因为离开家庭而消亡。

  • Composition(组成)
    符号:带实心菱形的线
    组合

鹰的翅膀和鹰的关系,翅膀离开鹰就没有意义,没有价值了,翅膀的生命周期与鹰的生命周期一致。


从联系的紧密程度来看,Association< Aggregation< Composition.
可以这样理解:聚合(Aggregation)是一种特殊的关联(Association),组成(Composition)是一种特殊的聚合(Aggregation)。

  • Association
    A 和 B 相互调用和访问对方的元素。
    A and B call and access each other’s elements.

如学生和课程的关系,一个学生可以学习多门课程,一个课程也会容纳多名学生。

  • Aggregation
    A 中拥有一个 B,但 B 脱离于 A 仍然可以独立存活。
    A has a B, and B can outlive A.
    A "uses" B = Aggregation : B exists independently(conceptually) from A.

如学生和班级的关系,27个学生组成了10041451班,但任何一个同学在转出这个班级后仍然存在。

  • Composition
    A 中拥有一个 B,B 脱离 A 后在系统中没有任何存活的意义。
    A has a B, and B depends on A.
    A "owns" B=Composition : B has no meaning or purpose in the system without A.

如鸡和翅膀的关系,翅膀脱离了鸡无法存在,没有意义,只能沦为烤鸡翅T_T


  • 案例三
  • 案例四
ArcMap

其他

常用数据类型介绍:

1、Shapefile:一种基于文件方式存储GIS数据的文件格式,至少有.shp,.dbf,.shx三个文件组成,分别存储空间数据,属性数据,空间和属性数据之间的关系,是GIS比较通用的一种数据格式。

2、Coverage:一种拓扑数据结构,一般的GIS原理书中都有它的原理论述,数据结构复杂,属性缺省存储在Info表中。目前ArcGIS中仍然有一些分析操作只能基于这种数据格式进行操作。

3、Geodatabase:ArcInfo 发展到ArcGIS时推出的一种数据格式,基于RDBMS(关系型数据库管理系统)存储的数据格式。

  • Personal Geodatabase, 用来存储小数据量数据,个人地理数据库中的所有内容都保存在单个Microsoft Access 文件(.mdb) 中。
  • File Geodatabase, GIS中较为通用,可以保存较多内容,文件地理数据库每个数据集都是磁盘上的一个单独文件,文件地理数据库是用来保存其数据集文件的文件夹。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,497评论 18 399
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 10,800评论 6 13
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,497评论 18 139
  • 《裕语言》速成开发手册3.0 官方用户交流:iApp开发交流(1) 239547050iApp开发交流(2) 10...
    叶染柒丶阅读 25,287评论 5 18
  • 孩子幼小的心灵敏感而且脆弱,有时候,老师和家长的言谈举止会影响到孩子性格的形成。以下是孩子最爱听的100句话,大人...
    童妈后花园阅读 481评论 0 1