面向对象技术的理论研究综述

2020-04-17 19:03

面向对象技术的理论研究综述

西北师范大学 商学院 10级信管班 蔡泽山

内容摘要:21世纪是一个以信息产业为主导的时代,信息技术和计算机技术的发展日益影响着世界经济的发展。与此同时,各个国家对计算机技术的发展、计算机产品的开发也日益重视。本文章从面向对象技术的基本概念、特征、设计语言、开发方法以及以后的发展趋势等方面较深入、较系统地进行论述,使该技术的日益成熟对未来经济的发展做出其应有的贡献。

关键词:面向对象技术 面向对象的发展过程 面向对象设计语言 面向对象开发方法 面向对象技术的应用领域

随着计算机科学的发展和应用领域的不断扩大,对计算机技术的要求越来越高。特别是当计算机硬件有了飞速发展之后,各种应用领域对软件提出了更高的要求。结构化程序设计语言和结构化分析与设计已无法满足用户需求的变化。发展软件质量,缩短软件开发周期,发展软件可靠性、可扩充性和可重用性,迫使软件界人士不断研究新方法、新技术,探索新途径。

面向对象的方法是一种分析方法、设计方法和思维方法。面向对象方法学的出发点和所追求的基本目标是使人们分析、设计与实现一个系统的方法尽可能接近人们认识一个系统的方法。也就是使描述问题的问题空间和解决问题的方法空间在结构上尽可能一致。其基本思想是:对问题空间进行自然分割,以更接近人类思维的方式建立问题域模型,以便对客观实体进行结构模拟和行为模拟,从而使设计出的软件尽可能直接地描述现实世界,构造出模块化的、可重用的、维护性好的软件,同时限制软件的复杂性和降低开发维护费用。

面向对象程序设计方法起源于60 年代末期的语言SIMULA’67 ,到了70 年代末期,软件行业正受到软件危机的困扰,结构化的开发方法不能够很好地解决软件危机。面向对象语言Smalltalk 的出现,进一步发展和完善了面向对象的程序设计语言,从此面向对象和开发方法开始结合,出现了面向对象的开发方法。

一、面向对象技术的概述 1、 面向对象技术的基本概念

(1)、对象 对象是现实世界中的一个实体, 在计算机世界中, 它以数据为中心而不是以功能

第 1页 /共 12页

为中心来描述系统, 可以把对象看成是存储器中一个可标识的区域,它能保存固定或可变数目的数值( 或数值的集合) 。为了发现对象, 开发人员要在系统需求和系统分析的文档中查找名词和名词短语, 包括客观世界可感知的事物( 桌子、椅子、机器) ; 角色( 学生、教师、工人、农民、公务员) ;事件( 禽流感、恐怖活动、空中救援) ; 互相作用( 批评、上课、宣传); 人员; 场所; 组织; 设备; 和地点。

当重要的对象被发现后, 通过一组互相关联的模型详细表示对象之间的关系和对象的行为, 这些模型从四个不同的侧面表示了软件的体系结构: 静态逻辑、动态逻辑、静态物理和动态物理。

静态逻辑模型描述实例化( 类成员关系) 、关联、聚集( 整体/部分) 、和一般化( 继承) 等关系。这被称为对象模型。一般化关系表示属性和方法的继承关系。定义对象模型的图形符号体系通常是从用于数据建模的实体关系图导出的。对设计十分重要的约束, 如基数( 一对一、一对多、多对多) , 也在对象模型中表示。

动态逻辑模型描述对象之间的互相作用。互相作用通过一组协同的对象, 对象之间消息的有序的序列, 参与对象的可见性定义, 来定义系统运行时的行为。

静态物理模型通过模块描述代码的布局。动态物理模型描述软件的进程和线程体系结构。 (2)、类 面向对象程序由类的定义和类的使用两部分组成,类是对一组客观对象的抽象, 它将该组对象所具有的共同特征( 包括结构特征和行为特征) 集中起来, 以说明该组对象的能力和性质。面向对象技术将数据和对数据的操作封装在一起, 作为一个整体来处理, 采用数据抽象和信息隐蔽技术, 将这个整体抽象成一种新的数据类型, 也就是类。

在面向对象程序设计中, 类的确定与划分非常重要,是软件开发中关键的一步, 划分的结果直接影响到软件系统的质量。如果划分得当, 既有利于程序进行扩充, 又可以提高代码的可重用性。因此, 在解决实际问题时, 需要正确地进行分“类”。理解一个类究竟表示哪一组对象,如何把实际问题中的事物汇聚成一个个的“类”, 而不是一组数据。这是面向对象程序设计中的一个难点。

类的确定和划分并没有统一的标准和固定的方法,基本上依赖设计人员的经验、技巧以及对实际问题的把握。但有一个基本原则: 寻求一个大系统中事物的共性,将具有共性的系统成分确定为一个类。确定某事物是一个类的步骤包括: 第一步, 要判断该事物是否有一个以上的实例, 如果有, 则它是一个类; 第二步, 要判断类的实例中有没有绝对的不同点, 如果没有, 则它是一个类。另外, 还要知道什么事物不能被划分为类。不能把一组函数组合在一起构成类, 也就是说, 不能把一个面向过程的模块直接变成类。类不是函数的集合!

(3)、消息 消息是对象之间相互请求或相互协作的途径, 是要求某个对象执行其中某个功能操作的规格说明。同一对象可接收不同形式的多个消息, 产生不同的响应; 相同形式的消息可以送给

第 2页 /共 12页

不同的对象, 所作出的响应可以是截然不同的; 消息的发送可以不考虑具体的接收者, 对象可以响应消息, 也可以对消息不予理会,对消息的响应并不是必须的。

(4)、面向对象技术 面向对象技术强调在软件开发过程中面向客观世界或问题域中的事物,采用人类在认识客观世界的过程中普遍运用的思维方法,直观、自然地描述客观世界中的有关事物。面向对象技术的基本特征主要有抽象性、封装性、继承性和多态性。

2、面向对象技术的基本特征

(1)、抽象性 把众多的事物进行归纳、分类是人们在认识客观世界时经常采用的思维方法,“物以类聚,人以群分”就是分类的意思,分类所依据的原则是抽象。抽象(Abstract)就是忽略事物中与当前目标无关的非本质特征,更充分地注意与当前目标有关的本质特征。从而找出事物的共性,并把具有共性的事物划为一类,得到一个抽象的概念。例如,在设计一个学生成绩管理系统的过程中,考察学生张华这个对象时,就只关心他的班级、学号、成绩等,而忽略他的身高、体重等信息。因此,抽象性是对事物的抽象概括描述,实现了客观世界向计算机世界的转化。将客观事物抽象成对象及类是比较难的过程,也是面向对象方法的第一步。

(2)、封装性 封装是指将一个数据和与这个数据有关的操作集合在一起, 形成一个有机的实体?——对象。用户不必知道对象行为的实现细节, 只需根据对象提供的外部特性接口访问对象即可。封装有两个含义: 一是把对象的全部属性和行为结合在一起, 形成一个不可分割的独立单位。对象的属性值( 除了公有的属性值) 只能由这个对象的行为来读取和修改; 二是尽可能隐蔽对象的内部细节, 对外形成一道屏障, 与外部的联系只能通过外部接口实现。封装机制将对象的使用者与设计者分开, 使用者不必知道对象行为实现的细节, 只需要用设计者提供的外部接口让对象去做。封装的结果实际上隐蔽了复杂性, 并提供了代码重用性, 从而降低了软件开发的难度。

(3)、多态性 面向对象设计借鉴了客观世界的多态性,体现在不同的对象收到相同的消息时产生多种不同的行为方式。例如,在一般类“几何图形”中定义了一个行为“绘图”,但并不确定执行时到底画一个什么图形。特殊类“椭圆”和“多边形”都继承了几何图形类的绘图行为,但其功能却不同,一个是要画出一个椭圆,另一个是要画出一个多边形。这样一个绘图的消息发出后,椭圆、多边形等类的对象接收到这个消息后各自执行不同的绘图函数。具体来说,多态性(Polymorphism)是指类中同一函数名对应多个具有相似功能的不同函数,可以使用相同的调用方式来调用这些具有不同功能的同名函数。

(4)、继承性 继承所表达的是两类或更多类对象之间的相交关系, 它使得某类对象可以继承另外一类对象的特征和能力。继承意味着“自动地拥有”, 即特殊类中不必重新定义已在一般类中定

第 3页 /共 12页

义过的属性和行为, 而它却自动地、隐含地拥有其一般类的属性与行为。继承允许和鼓励类的重用, 提供了一种明确表述共性的方法。一个特殊类既有自己新定义的属性和行为, 又有继承下来的属性和行为。尽管继承下来的属性和行为是隐式的, 但无论在概念上还是在实际效果上, 都是这个类的属性和行为。当这个特殊类又被它更下层的特殊类继承时, 它继承来的和自己定义的属性和行为又被下一层的特殊类继承下去。因此, 继承是传递的, 体现了大自然中特殊与一般的关系。

3、面向对象与面向过程的区别

在面向对象程序设计(Object Oriented Programming,OOP)方法出现之前,程序员用面向过程的方法开发程序。面向过程的方法把密切相关、相互依赖的数据和对数据的操作相互分离,这种实质上的依赖与形式上的分离使得大型程序不但难于编写,而且难于调试和修改。在多人合作中,程序员之间很难读懂对方的代码,更谈不上代码的重用。由于现代应用程序规模越来越大,对代码的可重用性与易维护性的要求也相应提高。面向对象技术便应运而生了。

面向对象技术是一种以对象为基础,以事件或消息来驱动对象执行处理的程序设计技术。它以数据为中心而不是以功能为中心来描述系统,数据相对于功能而言具有更强的稳定性。它将数据和对数据的操作封装在一起,作为一个整体来处理,采用数据抽象和信息隐蔽技术,将这个整体抽象成一种新的数据类型──类,并且考虑不同类之间的联系和类的重用性。类的集成度越高,就越适合大型应用程序的开发。另一方面,面向对象程序的控制流程由运行时各种事件的实际发生来触发,而不再由预定顺序来决定,更符合实际。事件驱动程序执行围绕消息的产生与处理,靠消息循环机制来实现。更重要的是,可以利用不断扩充的框架产品MFC(Microsoft Foundation Classes),在实际编程时可以采用搭积木的方式来组织程序,站在“巨人”肩上实现自己的愿望。面向对象的程序设计方法使得程序结构清晰、简单,提高了代码的重用性,有效地减少了程序的维护量,提高了软件的开发效率。

例如,用面向对象技术来解决学生管理方面的问题。重点应该放在学生上,要了解在管理工作中,学生的主要属性,要对学生做些什么操作等等,并且把它们作为一个整体来对待,形成一个类,称为学生类。作为其实例,可以建立许多具体的学生,而每一个具体的学生就是学生类的一个对象。学生类中的数据和操作可以提供给相应的应用程序共享,还可以在学生类的基础上派生出大学生类、中学生类或小学生类等,实现代码的高度重用。

在结构上,面向对象程序与面向过程程序有很大不同,面向对象程序由类的定义和类的使用两部分组成,在主程序中定义各对象并规定它们之间传递消息的规律,程序中的一切操作都是通过向对象发送消息来实现的,对象接到消息后,启动消息处理函数完成相应的操作。

第 4页 /共 12页

二、面向对象发展过程及现状 1、面向对象技术的需求

随着计算机技术的日益发展,新的应用领域需要面向对象技术的支持,为面向技术的应用开辟新的天地,并在应用中提出了一些传统的面向对象技术所不能支持的新的需求。

(1)、能表示客观中各种复杂对象

(2)、能依据用户所需的数据类型扩大其类型集 (3)、结构与行为要相互关联 (4)、要求具有灵活的知识表达能力

2、面向对象技术的发展趋势

(1)、面向对象分析与设计的方法将被越来越多的人接受

迄今为止,“面向对象”本身还没有一个统一的让所有人都能接受的概念。然而,面向对象中的一些最基本的概念已经和正在被人们所接受,比如类、对象、继承、封装等;一些最有效的表示方法也正在被人们所共同采用,比如图形表示、基本输入要求和输出结果等。并且这种趋势在越是较晚出现的方法和工具中越是明显,面向对象的方法学研究在计算机领域正在朝着普及化的方向发展。 (2)、 新的分析与设计的方法和工具将不断涌现

随着SDL92和ObjectTime的问世,新的分析方法和工具将朝着动态化、标准化、可执行性、可测试性的方向发展。同时,新的面向对象的设计方法也以越来越成熟的面孔出现。新方法和工具的相继出现,将会大大缩短软件开发周期,节省软件开发成本。

(3)、 集成面向对象分析和设计将成为趋势

由于设计过程本身也涵盖有部分的分析,分析过程中也有设计的成分。基于这种关系,集成了分析和设计两方面的方法和工具的研究也将成为面向对象分析与设计领域的一个趋势。它的主要特点就是有机地集成比较著名的分析方法和设计方法来共同完成从分析到设计甚至到实现的全部任务。集成分析与设计方法最重要的环节是要能够把分析方法的输出结果变换成为一个设计方法的工具的输人,即需要一个“翻译程序”。然而,它与普通的翻译程序是不同的,比普通的“翻译程序”更智能化。集成分析和设计方法虽然还处于尝试阶段,但这个方向对于软件开发界是很有吸引力的。

三、面向对象技术的设计语言

一般认为,较典型的面向对象语言有一下几种:

1、混合型面向对象程序设计语言C++ C++是AT&T Bell实验室的Bjarne Stroustrup博士于

20世纪80年代早期提出的,是迄今为止商业上最受欢迎的混合型面向对象程序设计语言。C++兼容

第 5页 /共 12页


面向对象技术的理论研究综述.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:村“两委”换届选举工作存在的问题与思考

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: