面向对象技术的理论研究综述
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
面向对象技术的理论研究综述
西北师范大学商学院 10级信管班蔡泽山
内容摘要:21世纪是一个以信息产业为主导的时代,信息技术和计算机技术的发展日益影响着世界经济的发展。与此同时,各个国家对计算机技术的发展、计算机产品的开发也日益重视。本文章从面向对象技术的基本概念、特征、设计语言、开发方法以及以后的发展趋势等方面较深入、较系统地进行论述,使该技术的日益成熟对未来经济的发展做出其应有的贡献。
关键词:面向对象技术面向对象的发展过程面向对象设计语言面向对象开发方法面向对象技术的应用领域
随着计算机科学的发展和应用领域的不断扩大,对计算机技术的要求越来越高。特别是当计算机硬件有了飞速发展之后,各种应用领域对软件提出了更高的要求。结构化程序设计语言和结构化分析与设计已无法满足用户需求的变化。发展软件质量,缩短软件开发周期,发展软件可靠性、可扩充性和可重用性,迫使软件界人士不断研究新方法、新技术,探索新途径。
面向对象的方法是一种分析方法、设计方法和思维方法。面向对象方法学的出发点和所追求的基本目标是使人们分析、设计与实现一个系统的方法尽可能接近人们认识一个系统的方法。也就是使描述问题的问题空间和解决问题的方法空间在结构上尽可能一致。其基本思想是:对问题空间进行自然分割,以更接近人类思维的方式建立问题域模型,以便对客观实体进行结构模拟和行为模拟,从而使设计出的软件尽可能直接地描述现实世界,构造出模块化的、可重用的、维护性好的软件,同时限制软件的复杂性和降低开发维护费用。
面向对象程序设计方法起源于60 年代末期的语言SIMULA’67 ,到了70 年代末期,软件行业正受到软件危机的困扰,结构化的开发方法不能够很好地解决软件危机。面向对象语言Smalltalk 的出现,进一步发展和完善了面向对象的程序设计语言,从此面向对象和开发方法开始结合,出现了面向对象的开发方法。
一、面向对象技术的概述
1、面向对象技术的基本概念
(1)、对象对象是现实世界中的一个实体, 在计算机世界中, 它以数据为中心而不是以功能
为中心来描述系统, 可以把对象看成是存储器中一个可标识的区域,它能保存固定或可变数目的数值( 或数值的集合) 。为了发现对象, 开发人员要在系统需求和系统分析的文档中查找名词和名词短语, 包括客观世界可感知的事物( 桌子、椅子、机器) ;角色( 学生、教师、工人、农民、公务员) ;事件( 禽流感、恐怖活动、空中救援) ;互相作用( 批评、上课、宣传);人员;场所;组织;设备;和地点。
当重要的对象被发现后, 通过一组互相关联的模型详细表示对象之间的关系和对象的行为, 这些模型从四个不同的侧面表示了软件的体系结构: 静态逻辑、动态逻辑、静态物理和动态物理。
静态逻辑模型描述实例化( 类成员关系) 、关联、聚集( 整体/部分) 、和一般化( 继承) 等关系。这被称为对象模型。一般化关系表示属性和方法的继承关系。定义对象模型的图形符号体系通常是从用于数据建模的实体关系图导出的。对设计十分重要的约束, 如基数( 一对一、一对多、多对多) , 也在对象模型中表示。
动态逻辑模型描述对象之间的互相作用。互相作用通过一组协同的对象, 对象之间消息的有序的序列, 参与对象的可见性定义, 来定义系统运行时的行为。
静态物理模型通过模块描述代码的布局。动态物理模型描述软件的进程和线程体系结构。
(2)、类面向对象程序由类的定义和类的使用两部分组成,类是对一组客观对象的抽象, 它将该组对象所具有的共同特征( 包括结构特征和行为特征) 集中起来, 以说明该组对象的能力和性质。面向对象技术将数据和对数据的操作封装在一起, 作为一个整体来处理, 采用数据抽象和信息隐蔽技术, 将这个整体抽象成一种新的数据类型, 也就是类。
在面向对象程序设计中, 类的确定与划分非常重要,是软件开发中关键的一步, 划分的结果直接影响到软件系统的质量。如果划分得当, 既有利于程序进行扩充, 又可以提高代码的可重用性。因此, 在解决实际问题时, 需要正确地进行分“类”。理解一个类究竟表示哪一组对象,如何把实际问题中的事物汇聚成一个个的“类”, 而不是一组数据。这是面向对象程序设计中的一个难点。
类的确定和划分并没有统一的标准和固定的方法,基本上依赖设计人员的经验、技巧以及对实际问题的把握。但有一个基本原则: 寻求一个大系统中事物的共性,将具有共性的系统成分确定为一个类。确定某事物是一个类的步骤包括: 第一步, 要判断该事物是否有一个以上的实例, 如果有, 则它是一个类; 第二步, 要判断类的实例中有没有绝对的不同点, 如果没有, 则它是一个类。另外, 还要知道什么事物不能被划分为类。不能把一组函数组合在一起构成类, 也就是说, 不能把一个面向过程的模块直接变成类。类不是函数的集合!
(3)、消息消息是对象之间相互请求或相互协作的途径, 是要求某个对象执行其中某个功能操作的规格说明。同一对象可接收不同形式的多个消息, 产生不同的响应;相同形式的消息可以送给
不同的对象, 所作出的响应可以是截然不同的;消息的发送可以不考虑具体的接收者, 对象可以响应消息, 也可以对消息不予理会,对消息的响应并不是必须的。
(4)、面向对象技术面向对象技术强调在软件开发过程中面向客观世界或问题域中的事物,采用人类在认识客观世界的过程中普遍运用的思维方法,直观、自然地描述客观世界中的有关事物。面向对象技术的基本特征主要有抽象性、封装性、继承性和多态性。
2、面向对象技术的基本特征
(1)、抽象性把众多的事物进行归纳、分类是人们在认识客观世界时经常采用的思维方法,“物以类聚,人以群分”就是分类的意思,分类所依据的原则是抽象。抽象(Abstract)就是忽略事物中与当前目标无关的非本质特征,更充分地注意与当前目标有关的本质特征。从而找出事物的共性,并把具有共性的事物划为一类,得到一个抽象的概念。例如,在设计一个学生成绩管理系统的过程中,考察学生张华这个对象时,就只关心他的班级、学号、成绩等,而忽略他的身高、体重等信息。因此,抽象性是对事物的抽象概括描述,实现了客观世界向计算机世界的转化。将客观事物抽象成对象及类是比较难的过程,也是面向对象方法的第一步。
(2)、封装性封装是指将一个数据和与这个数据有关的操作集合在一起, 形成一个有机的实体¬——对象。用户不必知道对象行为的实现细节, 只需根据对象提供的外部特性接口访问对象即可。封装有两个含义: 一是把对象的全部属性和行为结合在一起, 形成一个不可分割的独立单位。对象的属性值( 除了公有的属性值) 只能由这个对象的行为来读取和修改; 二是尽可能隐蔽对象的内部细节, 对外形成一道屏障, 与外部的联系只能通过外部接口实现。封装机制将对象的使用者与设计者分开, 使用者不必知道对象行为实现的细节, 只需要用设计者提供的外部接口让对象去做。封装的结果实际上隐蔽了复杂性, 并提供了代码重用性, 从而降低了软件开发的难度。
(3)、多态性面向对象设计借鉴了客观世界的多态性,体现在不同的对象收到相同的消息时产生多种不同的行为方式。例如,在一般类“几何图形”中定义了一个行为“绘图”,但并不确定执行时到底画一个什么图形。特殊类“椭圆”和“多边形”都继承了几何图形类的绘图行为,但其功能却不同,一个是要画出一个椭圆,另一个是要画出一个多边形。这样一个绘图的消息发出后,椭圆、多边形等类的对象接收到这个消息后各自执行不同的绘图函数。具体来说,多态性(Polymorphism)是指类中同一函数名对应多个具有相似功能的不同函数,可以使用相同的调用方式来调用这些具有不同功能的同名函数。
(4)、继承性继承所表达的是两类或更多类对象之间的相交关系, 它使得某类对象可以继承另外一类对象的特征和能力。继承意味着“自动地拥有”, 即特殊类中不必重新定义已在一般类中定