GIS学习之面向对象基础

GIS学习之面向对象基础

一、             面向对象的概念:

对象:对象既可以是具体的物理实体的对象,也可以是人为的概念,或者是任何有明确边界和意义的东西。比如:一名员工、一家公司、贷款与借款等,都可以作为对象。

类:在面向对象的软件技术中,“类”就是对具有相同数据和相同操作的一组相似对象的定义。也就是说,类是对具有相同属性和行为的一个或多个对象的描述,通常在这种描述中也包括对怎样创建该类的新对象的说明。通俗的讲:类是对具有相同属性和行为的一组相似的对象的抽象。

实例:实例就是由某个特定的类所描述的一个具体的对象。比如汽车就是交通工具的一个实例。实际上类是建立对象时使用的“模板”,按照这个模板所建立的一个个具体的对象,就是类的实际例子,简称实例。

注意:当使用“对象”这个术语时,即可以指一个具体的对象,也可以泛指一般的对象,但是,当使用“实例”这个术语时,必然是指一个具体的对象。

方法:方法就是对象所能执行的操作,也就是类中所定义的服务。方法描述了对象执行操作的算法,响应消息的方法。

属性:属性是类中所定义的数据,它是对客观世界实休所具有的性质的抽象。类的每个实例都有自己特有的属性值。比如姓名、性别就可以作为员工的属性而出现。

封装:所谓封装就是把某个事物包装起来,使外界不知道该事物的具体内容。其通过向外界提供接口的形式而存在。比如打开电视机,它提供的是一个打开/关闭按钮,其实际内容,究竟怎样让电视播放我们是不知道的。我们也不必关心那么多,我们只要知道通过这个动作能实现我们想要的功能就行了。通过封装,我们很好地实现了细节对外界的隐藏,从而达到数据说明与操作实现分离的目的,使用者只需要知道它的说明即可使用它。

继承:广义地说,继承是指能够直接获得已有的性质与特征,而不必重复定义它们。在OO软件技术中,继承是子类自动地共享基类中定义的数据和方法的机制。继承性使得相似的对象可以共享程序代码和数据结构,从而大大减少了程序中的冗余信息。当允许一个类只能继承一个类时,类的继承就是单继承,比如C#语言中,一个类继承另一个类时只能是单继承,而C++语言中就允许一个类继承多个类。

多态性:多态性是指子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象。也就是说,在父类与其子类之间共享一个行为的名字,但是却可以按各自的实际需要来加以实现。多态性机制不仅增加了面向对象软件系统的灵活性,进一步减少了信息的冗余。

重载:函数重载是指在同一作用域内的若干参数特征不同的函数可以使用的函数名字;运算符重载是指同一个运算符可以施加于不同类型的操作数上面。重载对于提高系统的灵活性和可读性起到了很好的作用。

二、             Ao中的类与对象:

Ao对象模型中的三种类:

Abstract Class抽象类,其不能用以创建对象实例,只能作为创建其子类的一个模板而存在。比如“线”是“直线”与“曲线”的抽象类。

Class:属性类。有的书上将其叫做可实例化类,我认为这种叫法是不准确的。通过其自带帮助文档我们可以知道,其只能作为其它类的属性被创建或是通过其他类的方法来创建。

CoClass:组件类。其能够通过开发环境中的对象定义的语法来创建对象的类。能够直接被创建和实例化。

注:有一个很好的方法来区分属性类与组件类,就是看其是否能够被直接创建。

三、             类与类之间的关系:

依赖(Dependency):两个事物间的语义关系,其中一个事物发生了变化会影响到另一个事物。

关联(Association):是一种结构关系,它描述了一组链,链是对象之间的连接。比如一个人为一家公司工作(WorksFor),这里WorksFor就是一个关联。

链接(link):是对象之间物理上或概念上的连接。例如:张三为微软公司工作(WorksFor),这里WorksFor就是一个链接。

聚合(Aggregation):其是一种特殊形式的关联。表示整体与部分的关系。比如项目组与其各成员之间的关系就是一种聚合关系。

组合关系(Composition):其也是一种特殊形式的关联。表示整体拥有各个部分,部分与整体共存。比如一个窗口是由文本框、列表框、菜单等组成的。关闭窗口,各个组成部分也相继消失,窗口与其各组成部分之间的关系便是组合关系。Ao对象中FeatureClassFeature之间就是一种组合关系。

泛化(Generalization):其是一种特殊/一般关系,特殊元素(子元素)/的对象可替代一般元素(父元素)的对象。也称为“Is a关系”。

实现(Realization):是类元之间的语义关系,其中一个类元指定了由另一个类元保证执行的契约。

原文地址:https://www.cnblogs.com/3echo/p/494063.html