关于面向对象技术的哲学思考 权威资料科技哲学前沿.doc
《关于面向对象技术的哲学思考 权威资料科技哲学前沿.doc》由会员分享,可在线阅读,更多相关《关于面向对象技术的哲学思考 权威资料科技哲学前沿.doc(7页珍藏版)》请在三一办公上搜索。
1、关于面向对象技术的哲学思考 关于面向对象思考 【作 者】巨乃岐/夏斌 【作者简介】巨乃歧,1958年生,哲学硕士。 夏斌,1974年生,信息工程学院95级硕士研究生。邮编:郑州市450002 60年代软件危机的出现,导致软件工程学的兴起和面向对象技术的应运而生。面向对象技术很好地解决了软件危机中所面临的如何实现软件IC和如何实现问题空间与方法空间在上一致性的两大难题。本文将从哲学的角度对此作一分析。 1软件危机与面向对象 随着集成电路(IC)工艺的不断进步,计算机硬件取得了飞速发展。相对而言,计算机软件却发展缓慢。计算机软件所面临的难以开发、难以维护和难以重用等种种困难,被称为软件危机。产生软
2、件危机的原因是多方面的,概括地讲,大致有四方面的原因:一是软件设计技巧和程序的个性化太强。在计算机发展的早期,硬件价格昂贵,机器运算慢,内存很小,程序员常常使用各种小技巧来减少对内存的需求,加快程序的执行。结果造成很多程序,让人难以读懂、难以理解,给软件维修造成困难。二是软件缺乏严格、统一的规范。软件设计在很长时间内大多是由个人独立完成的。由于每个程序员都有自己的一套符号和规则,彼此间很少了解,当软件量增大到必须由多个人共同完成时,各个人所编写的软件模块单独能够很好地运行,但合成一个整体时却由于缺乏严格统一的规范而常常出现多种问题。三是软件的重用性和软件IC问题。随着计算机的发展,软件越来越庞
3、大,越来越复杂。程序员们发现他们常常在重复写一些以前写过的、至少是类似的代码,正由于这样造成了软件生产率极低。这促使人们想到:软件作为一种智力产品,也应该象硬件那样用化的方式开发和生产。最好能够实现象硬件集成电路那样的软插件(即软件IC),使得软件工程师也可以象硬件工程师搭硬件电路那样构造软件函数外,大部分库函数还是不可重用。四是鸿沟和语义断层问题。现代计算机都属于冯 诺依曼体系,诺依曼机所能理解的程序语言与人们的自然语言差距太大,这就造成它所求解的问题域结构与它所用的求解问题的解域结构的不一致。在系统分析阶段,系统开发者常常从计算机的角度了解用户需求,结果导致系统开发者和用户之间的通信存在大
4、量障碍,分析容易出现偏差,使得软件开发的后续设计与实现建立在不正确的系统分析之上;另一方面,由于语义断层的存在,使得在的结构化系统分析、设计和实现各阶段之间必须进行复杂概念及表示符的语义转换,容易导致信息遗漏并增加了系统开发的难度。 软件危机导致了软件工程学的诞生。软件工程学较好地解决了前两个问题,但对后两个问题却无能为力。70年代以来,针对后两个问题,产生和发展了面向对象技术。面向对象的、方法和技术尽可能地模拟人的思维,追求解域与问题域结构间的近似和直接模拟,最大程度地消除了语义断层,已经显示出了其强大的生命力,被视为是传统软件工程方法摆脱困境的极有希望的突破口。 2面向对象技术的方法、语言
5、和程序设计 (1)面向对象的方法学 面向对象的方法学认为:客观变化的规律,每个对象都属于某个对象类,都是该对象类的一个实例化元素。不同对象的组合及其相互作用就构成了我们要研究、分析和构造的客观系统。通过分析和比较,可以发现对象间的相似性,即揭示出不同对象的共同属性。这就是构成对象类的根据。在按类、子类、父类等概念构成对象类的层次时,如不加特殊说明,则低层对象可以自然地继承较高一层对象的属性。对于已分成类的各个对象,可以通过定义一组方法来说明该对象的功能,也就是允许作用于该对象上的各种操作。对象间的相互联系及其作用是通过传递消息来完成的,消息就是通知对象去完成一个允许作用于该对象上的操作。至于该
6、对象将如何完成这个操作的细节,则是封装在相应的对象类的定义中的,对外是隐蔽的。 (2)面向对象程序设计语言(OOP) 面向对象的程序设计语言主要有:Smalltalk 80、Eiffel、C+、objective-C等,它们除了具有计算机语言的一般特征外,还具有其它语言所没有的特征。这些特征主要是数据封装(对象)、继承和多态性。数据封装将一个数据和与这个数据有关的操作集合封装在一起,形成一个能动的实体,称为对象。用户不必知道对象行为的实现细节,只需根据对象提供的外部特性接口访问对象。正由于此,数据封装带有类似硬件集成电路(IC)的特征。硬件工程师在搭硬件电路时,不必知道集成电路芯片的功能是如何
7、实现的,只需了解管脚功能与电特性。软件工程师也可以类似地在软件中加入封装好的对象,提高软件生产率和增强软件的重用性。继承是面向对象语言的另一重要概念。在客观世界中,普遍存在着一般和特殊的关系,继承将其模型化。在面向对象的语言中,类功能支持了一般与特殊的层次机制。除了根节点外,每个类都有自己的父类。除了叶节点外,每个类都有自己的子类。一个子类可以从它的父类那里继承所有的特性和行为(对应于语言中的数据和操作),这就扩充了它的特性和行为。父类抽象出共同特征,子类表达其差别。类的实例化就得到对象。有了类的层次结构和继承性,每个类的共同性质只需定义一次,用户就可以充分利用已有的类,符合软件重用的目标。所
8、谓多态性,就是一个符号多种语义,或相同界面多种实现。让我们考虑多态性问题的一个类比实例。当汽车司机为避免撞车时刹车,他关心的是快速刹车(效果),而不关心刹车是鼓式刹车还是盘式刹车(实现方法的细节)。这里,刹车的使用与刹车的结构是分离的概念,可能有多种结构的刹车,它们的使用方法是相同的。相同的使用方法(相同界面)对应于不同种类的刹车结构(多种实现),这形象地反映了多态性的思想。面向对象语言中利用函数重载和虚函数机制模拟实现了客观世界中这种普遍存在的多态性。 (3)面向对象的程序设计 面向对象的程序设计主要有以下三个步骤:首先是进行面向对象的分析(OOA-object oriented analy
9、sis),它的主要任务是了解问题域内该问题所涉及的对象,对象间的关系和作用(即操作),然后构造该问题的对象模型,力争这个模型能真实地反映出所要解决的实质问题。其次是进行面向对象的设计(OOD-object oriented design),即设计软件的对象模型。在分析的基础上,根据所应用的面向对象软件开发的功能强弱不等,对所构造的问题的对象模型作必要的改造(以最少改变原问题域内的对象模型为原则),以便在软件系统内设计各个对象、对象间的关系(如层次关系、继承关系等)、对象间的通信方式(如消息)等,总之是设计各个对象应做些什么。最后是面向对象的实现(OOI-object oriented impl
10、ementation)。所谓实现即软件功能的实现,包括:每个对象的内功能的实现;确立对象哪一些处理能力应在哪些类中进行描述;确定并实现系统的界面、输出的形式及其它控制机理等。 3面向对象技术在克服软件危机中的作用 面向对象技术由于自身特殊的思想和方法,它比较好地解决了软件危机中存在的后两个问题,为软件危机的彻底解决开辟了一条新道路。 首先是基本解决了软插件问题,即初步实现了软件IC。以前,人们为了解决软件重用问题,编写了大量的函数库,但是库函数所加工的数据是外部输入的而非内部固有的。这样,每当输入一定的数据时,其结构仍然需要程序员重新设计,因此软件的重用性还很差,远远达不到软插件的要求,软件的
11、生产效率因此依然很低,而且常常还会造成其它一些问题。而在面向对象设计方法中,数据和对数据进行的函数操作是按不同的层次和类型、依照不同的联系和作用方式编好程序、自成模块并被封装在不同的对象中的。这样,每一个对象就相当于一个硬件IC单元,它有着明确的界面和隐蔽的实现,是外部功能与内在结构的统一体。作为对象,它其实就是一个软件IC单元。可见,面向对象的设计从理论和实践两方面都基本实现了软件IC,解决了软插件的难题,尽管这种IC其集成度还不高。软件IC的设计由于实现了外部功能与内部结构的稳态联系和内外分离,结构就避免了以往程序设计中的错误操作,提高了软件的稳定性和可靠性,使软件的使用、维修大为方便,从
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 关于面向对象技术的哲学思考 权威资料科技哲学前沿 关于 面向 对象 技术 哲学 思考 权威 资料 科技 前沿
链接地址:https://www.31ppt.com/p-2385867.html