首页 百科知识 面向对象思想和基本概念

面向对象思想和基本概念

时间:2022-10-17 百科知识 版权反馈
【摘要】:面向对象方法是人们认识和表示客观事物的一种极其重要的方法。下面简单介绍面向对象方法中的基本概念,同时加深对于面向对象方法的理解,为我们以后更好地理解面向对象数据库系统打下基础。一个对象是由属性集合、方法集合和消息集合加上对象标识组成的。同时类也具有封装性、隐蔽性和稳定性,在本质上,类取代对象成为面向对象方法中实际研究与讨论的基本抽象单位。

10.2.1 面向对象思想和基本概念

一、面向对象的基本思想和特征

面向对象方法是人们认识和表示客观事物的一种极其重要的方法。它强调直接以客观世界中的事物为中心来思考问题和认识问题,并根据这些事物的本质特征,把它们抽象地表示为系统中的对象,作为系统的基本单位。面向对象方法更符合人类认识世界时采用的逻辑思维中的思想方法和原则,例如抽象、分类、继承、聚合、封装等,这使得人能够更加有效地认识和解决问题,并且也更加容易地让别人理解。面向对象方法的主要特点可概括如下:

■ 从问题域中客观存在的事物出发来构造系统,用“对象”作为对这些事物的抽象表示,并把对象作为系统的基本构成单位。

■ 一个对象包含两种特性:静态特性——对象的属性;动态特性——对象的方法或操作。

■ 对象是两种特性结合成的一个独立整体(并赋予特定标识),它突破了传统的数据与操作分离的模式,对外部很好地屏蔽掉其内部实现细节。

■ 对对象进行分类,把具有相同属性和方法的对象归为一类,类是对象的抽象,对象是类的实例。

■ 运用抽象的原则,从而得到一般类和特殊类。特殊类继承一般类的属性和服务,这就是类间的继承关系,它表示的是一般和特殊的关系。

■ 类中还存在着另外一种关系,即组成关系,它表示的是整体和部分的关系。

■ 类通过消息进行类之间的通信和协作。

■ 以类为单位通过“一般特殊结构”、“整体部分关系”(以及“消息”连接)可以构成一个基于面向对象的网络结构图,这种图成为类的层次结构。

二、面向对象方法中的基本概念

下面简单介绍面向对象方法中的基本概念,同时加深对于面向对象方法的理解,为我们以后更好地理解面向对象数据库系统打下基础。

(1)对象(Object)

对象是客观世界的一种抽象和泛化,是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位,它由一组数据结构和在这些数据结构上的方法封装起来的基本单位。一个对象是由属性集合、方法集合和消息集合加上对象标识组成的。

(2)属性(Attribute)

对象通常具有若干个特征,每一个特征称为对象的一个属性,它是对象固有的静态表示。一个对象往往可以用若干个属性表示其静态特性,对象所有的属性集合构成了对象的数据结构。对象的某一属性可以是单个值也可以是单个值的一个集合,还可以是另外一个对象,即对象属性可以嵌套。

(3)方法(Method)

方法是对象行为特征的描述,它定义的是对象上的操作。因此,方法反映对象的行为,它是对象的固有动态表示,它可审视并改变对象内部状态,一个对象往往可以用若干个方法表示其动态行为,它的定义与表示包含两部分,一是方法的接口,用于说明方法的名称、参数、返回值类型;二是方法的实现,它可用一段程序代码表示,用来实现对对象的具体操作。

(4)对象标识符(Object Identifier)

每个对象在系统内部都有一个唯一且不变的标识,这个标识就称为对象标识(Object ID,OID),在计算机中对象标识符是一组用字符串表示的代码,该代码一般由系统给出,对象标识符在计算机中替代传统的数据的关键字。

一个对象一般由属性、方法加上它的对象标识组成,同时它还有若干重要的性质。

(5)封装性(Encapsulation)

封装是把属性和方法包围起来,对数据的访问只能通过已定义的接口。外界一般只能见到对象的界面而无法见到内部表示,亦即是对象的内部表示是封装的。封装性作为对象方法中的一个重要特征,通常具有两重含义,一是表明对象的全部属性和方法是结合在一起的、不可分割的整体,它们共同组成了对象内部静态与动态的有机活动整体;二是表明对象通过封装与外界隔绝,外界无法见到对象的内部表示。对象封装反映了客观世界物体的相对独立性,使得整个世界在有序一致的状态下活动。

(6)隐蔽性(Hidden)

因为封装外部世界不可能了解对象的内部实现细节,外部只能通过界面来了解和使用对象。对象隐蔽有利于将复杂处理简单化,使外部世界简化了对对象的认识和了解。

(7)稳定性(Stationary)

在对象中以对象属性为核心并以方法为附属,可以构成一个重用性强的稳定实体,在计算机中即表示以对象数据(结构)为核心以程序为附属可构成一个稳定实体。

(8)消息(Message)

客观世界中对象间是相互关联的,即是相互作用、相互沟通与相互影响的,对象的相互关联方式通过消息实现,由于对象的封装性与隐蔽性,对象的消息仅作用于对象界面,再通过界面进一步影响与改变对象自身。消息一般由三部分组成,它们是:

接收者:它表示消息所施加作用的对象;

操作参数:它给出消息行使操作时所需的外部数据;

操作:它给出消息的操作要求。

在计算机中消息可用一般程序代码实现。

我们可以看到对象就是一个在其内部封装了属性和方法,并且以属性为核心,以方法运行在属性的周围的实体。它对外隐藏了其内部实现细节,仅对外提供一些接口,它与外界的交流和沟通通过这些接口使用消息来进行。我们已经对对象有了一定的认识,下面介绍面向对象方法中另外一个极其重要的概念——类。

(9)类(Class)

类是对对象的抽象和描述,是具有相同属性和操作的多个对象的相似特征的统一描述。类给出了属于该类全部对象属性与行为的抽象定义,而此时类中的对象仅是这种类定义的一个实体,我们称其为该类的实例(Instance)。如书是一个类,《现代数据库技术》这本书作为对象就是书这个类的一个实例。

类的出现简化了人们对客观世界的理解,人们可以对属于类的全体对象进行统一研究而不必对每个对象进行研究。类中实例的属性与方法可以统一说明,同时类也可有一个统一的界面,消息不仅可以作为对象间作用的工具,更重要的可作为类间沟通的工具。同时类也具有封装性、隐蔽性和稳定性,在本质上,类取代对象成为面向对象方法中实际研究与讨论的基本抽象单位。

类之间的基本关系有3种:继承关系、聚合关系(组合关系)和通信关系。其中继承关系和聚合关系反映的是类之间的静态关系。同时,类之间还可以通过消息进行通信,它反映的是类之间的动态关系。

(10)类继承(Class Inheritance)

继承是类之间的一种关系,在继承关系中一个类共享了另外一个类或几个其他类中定义的结构和行为。类的继承通常有:在继承关系中,被其他类继承其结构和行为的类称为超类(或父类),称继承其他类结构和行为的类为子类。类之间的层次结构如图10-1所示。

从学科的分类可以看出:

有的类只有一个直接超类,则该类仅从这个超类继承属性和方法,称为单继承。如图10-1所示的数学仅有一个直接超类——理学。

img181

图10-1

有的类具有多个直接超类,则该类从多个直接超类中继承属性和方法,称为多继承。如图10-1所示的生物化学有生物学和化学两个超类。

(11)类聚合(Class Aggregation)

集合是类间另外一个重要关系,它反映的是整体和部分的关系。世界上任何复杂的事物总是分解成由若干基本事物构成,这是一种由部分组成整体的关系,如图10-2所示。

img182

图10-2

显示器、主机和微机之间就是聚合关系。这种关系在计算机中表现为一个类的属性为另外一个类。

(12)对象与类的持久性(Persistence)

对象和类都有其生存周期,如果对象或类的生存周期普遍较短,则称此种对象或类为挥发性(Transient)的对象或类。如果对象或类的生存周期普遍较长,则称其为持久性(Persistent)的对象或类。

在面向对象程序设计语言中的对象或类随着程序运行的结束而全部消失,因此都是挥发性对象或类。而要将对象或类长期保存需要解决对象与类的存储、恢复、存取和共享等问题,这就只能借助面向对象数据库系统,因此对象或类的持久性的实现是面向对象数据库系统的基本任务。

(13)多态(Polymorphism)、重载(Overloading)、重定义(Over-riding)与迟联编(Late Binding)

类中的方法有相同的接口表示,但允许有不同的多种内部实现方法,此种方法称为方法的多态。在类继承结构中子类继承超类的方法,这种继承往往有多态性,即子类仅继承超类的接口表示,但它有自己的实现手段,这种情况称为方法重载。此外,为提高方法的灵活性,使方法的接口表示也能有一定机动能力,即方法的参数类型可以替换,特别是子类方法的参数类型可以与超类不同;同时为提高属性定义的灵活性,属性的类型定义可以替换,特别是子类属性可以替换成与超类不一致。这种变量类型替换功能特别是子类属性、方法中的变量类型可替换成与超类不一致的能力称为重定义功能。多态与重载在计算机中具体实现时往往会遇到一定困难,最主要是编译时应用哪种方法实现代码联编的问题。这个问题往往需在应用程序执行时才能决定,因此需提供一种推迟联编的手段,只有当应用执行到一定阶段后才与方法联编,这种手段则称为迟联编或称为动态联编(Dynamic Binding)。迟联编为实现多态与重载提供了具体手段。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈