AE中的三种类

作者: 崔子橙 | 来源:发表于2016-11-20 16:33 被阅读0次

    基本概念

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

    相关文章

      网友评论

        本文标题:AE中的三种类

        本文链接:https://www.haomeiwen.com/subject/kvkypttx.html