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中较为通用,可以保存较多内容,文件地理数据库每个数据集都是磁盘上的一个单独文件,文件地理数据库是用来保存其数据集文件的文件夹。



作者:崔子橙
链接:https://www.jianshu.com/p/6d964118a6cc
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值