admin 管理员组文章数量: 1086019
2024年12月30日发(作者:编写css的软件)
面向对象语言选取优势研究
摘要:在使用面向对象(oo ,object oriented)语言的软件
开发过程中,面向对象语言明显优于非面向对象语言,目前面向对
象的程序设计语言种类繁多,究竟应该选择何种语言更利于系统开
发和维护呢?本文就面向对象语言特点和因素进行了探讨讨研究。
关键词:面向对象语言;选取优势
一、面向对象语言的优势
编码相对软件生命期的各个阶段来说是最容易的,所以为数较
多的初级程序员均可参加这一阶段的工作。但是在软件生命期中,
程序是经常需要被阅读的,例如设计测试用例、排错、修改、功能
扩充等都需要程序员或其他人员阅读程序。可以这样说,在软件开
发过程中,读程序的时间比写程序的时间还要多,因此,如何能够
更完整、更准确地表达问题域语义,使所开发出的程序易于阅读,
使所开发的系统具有很强的可重用性和可维护性,选择一种什么样
的语言作为开发工具就显得尤为重要。
面向对象设计的结果要转换为计算机系统可以识别的代码,既
可以用面向对象语言,也可以用非面向对象语言实现。设计阶段设
计的对象和关联最终都必须用具体的编程语言或数据库实现。使用
oo语言来实现oo设计相对来说比较容易,因为语言的结构与设计
的构造是相似的,oo语言支持对象、多态性和继承性。使用非oo
语言需要特别注意和规定保留程序的oo结构,oo概念可以映射到
非oo语言结构中,这只是一个表达方式的问题,不是语言能力的
问题,因为编程语言最终要转换为机器语言,但oo语言良好的风
格尤为突出。由于语言本身充分支持面向对象概念的实现,因此,
编译程序可以自动把面向对象概念映射到目标程序中。使用非面向
对象语言编写面向对象程序,则必须由程序员自己把面向对象概念
映射到目标程序中。例如人语言并不直接支持类或对象的概念,程
序员只能在结构中定义变量和相应的函数(事实上,不能直接在结
构中定义函数而是要利用指针间接定义)。所有非面向对象语言都
不支持一般到特殊结构的实现,使用这类语言编程时要么完全回避
继承的概念,要么在声明特殊化类时,把对一般化类的引用嵌套在
它里面。
二、面向对象语言选取的关键因素
我们说选用面向对象语言还是非面向对象语言,这只是一个表
达方式的问题,不是语言能力的问题。从原理上说,使用任何一种
通用语言都可以实现面向对象概念。在传统的面向功能的方法学
中,强调的是确定和分解系统功能,这种做法虽然是目标的最直接
的实现方式,但由于功能是软件系统中最不稳定、最容易变化的方
面,因而获得的程序往往难于维护和扩充。oo方法开发软件,其结
构源于客观世界稳定的对象结构,与传统软件相比,软件本身的内
部结构发生了质的变化,易重用性和易扩充性都得到提高。围绕对
象来组织软件系统,可以自然地将现实世界模型映射到软件结构
中。因此,使用面向对象语言,实现面向对象概念,远比使用非面
向对象语言方便。当然,方便性也并不是决定选择何种语言的关键
因素。
选择程序设计语言的关键因素,是语言的一致的表达能力、可
重用性及可维护性。面向对象语言刻画客观系统较为自然,它具有:
① 识认性,系统中的基本构件可识认为一组可识别的离散对象;
② 类别性,系统具有相同数据结构与行为的所有对象可组成一类;
③ 多态性,对象具有惟一的静态类型和多个可能的动态类型;④
继承性,在基于层次关系的不同类中共享数据和操作等特点。因此,
能够更完整、更准确地表达问题域语义的面向对象语言的语法是非
常重要的,这将会对系统带来下述几个重要优点
1. 一致的表示方法:从前面章节的讲述中可以知道,面向对象
开发基于不随时间变化的、一致的表示方法。这种表示方法应该从
问题域到ooa,从ooa到ood,最后从ood到面向对象编程(oop),
始终稳定不变。一致的表示方法既有利于在软件开发过程中始终使
用统一的概念,也有利于编程人员理解软件的各种配置成分。我们
以“自动饮料售货机”为例,说明面向对象开发基于不随时间变化
的、一致的表示方法。对于“自动饮料售货机”这一实例,在问题
域、ooa、ood或是oop的各个阶段所用到的概念都是一致的、不变
的。如:退币杆、找零、熄灯、投币口、投币、饮料、饮料倒出等,
这对于用户、分析人员、编程人员、测试人员、维护人员来说,无
疑是有很大的帮助的。
2. 可重用性:软件的可重用性的好坏对于提高软件产品的质量
和软件开发效率意义重大。为了能带来可观的商业利益,必须在更
广泛的范围中运用重用机制,而不是仅仅在程序设计这个层次上进
行重用。因此,在ooa、ood直到oop中都显式地表示问题域语义,
其意义是十分深远的。随着时间的推移,软件开发组织既可能重用
它在某个问题域内的ooa结果,也可能重用相应的ood和oop结果。
我们仍以“自动饮料售货机”为例,说明可重用性对于提高软件产
品的质量和软件开发效率意义重大。假设该“自动饮料售货机”可
提供汽水、洛神、红茶、可乐、奶昔等五种饮料,有关这五种饮料
所实施的操作是相同的,因此,可以构造一个饮料类,然后由该类
构造汽水、洛神、红茶、可乐、奶昔等五种不同的对象。这对于提
高软件开发质量和软件开发效率具有重要的意义。
3. 可维护性:软件维护是一件极为复杂的事情,在软件的开发
成本中约占到70%左右。为了降低维护成本,尽管人们反复强调保
持文档与源程序一致的必要性,但是,在实际工作中很难做到交付
两类不同的文档,并使它们保持彼此完全一致。特别是考虑到进度、
预算、能力和人员等限制因素时,做到两类文档完全一致几乎是不
可能的。因此,维护人员最终面对的往往只有源程序本身。以atm(自
动取款机)系统为例,说明在程序内部表达问题域语义对维护工作
的意义。假设在维护该系统时没有合适的文档资料可供参阅,于是
维护人员人工浏览程序或使用软件工具扫描程序,记下或打印出程
序显式陈述的问题域语义,维护人员看到“atm”、“账户”和“现
金兑换卡”等,这对维护人员理解所要维护的软件将有很大帮助。
因此,在选择编程语言时,应该考虑的首要因素,是在供选择
的语言中哪个语言能最好地表达问题域语义。
三、面向对象语言的综合类别分析
面向对象语言借鉴了20世纪50年代诞生的人工智能语言lisp,
引入了动态绑定的概念和交互式开发环境的思想;始于20世纪60
年代的离散事件模拟语言simula 67,引入了类的概念和继承机制;
形成于20世纪70年代的smalltalk语言。面向对象语言发展有两
大方向,一是纯面向对象的语言,如 smalltalk、eiffel、java等
语言;另一类是混合型面向对象语言,也就是在过程语言或其他语
言中增加了类、继承等面向对象机制,如c++、objective_c等语
言。就两种形式的面向对象语言比较而言,纯面向对象语言更加适
合面向对象方法研究和快速原型的实现;而混合型面向对象语言则
更加注重于提高系统的运行速度,使传统使用结构化编程方式的程
序员容易接受面向对象思想。面向对象程序设计语言以对象为中
心,对象是程序运行时的基本成分。面向对象程序设计语言中提供
了类、继承等机制。面向对象的程序设计即为设计类及由类构造程
序的方法和过程,用计算机对象模拟现实世界。成熟的面向对象的
程序设计语言通常都提供丰富的类库和强有力的开发环境。
四、结论:在面向对象的软件开发过程中,oo语言明显优于非
oo语言,因此,除了在很特殊应用领域,如:对程序的执行时间和
使用空间都有很严格限制的情况;需要产生任意的甚至非法的指令
序列等。开发人员一般选择面向对象程序设计语言,但是面向对象
的程序设计语种类繁多,应该选择何种语言更利于系统开发和维护
呢?在充分考虑到程序设计语言特点(如应用领域、算法与计算的
复杂性、效率等)的同时,还应该着重考虑一些实际因素。选择具
体的语言作为开发工具,除要考虑上述的特点和关键因素外,还应
考虑的其他因素有:对用户学习面向对象分析、设计和编码技术所
能提供的培训服务;使用这个面向对象语言期间能提供的技术支
持;提供给开发人员使用的开发工具、开发平台;对机器性能和内
存需求;集成已有软件的容易程度;软件的规模;软件的可移植性;
软件的应用领域等。
版权声明:本文标题:面向对象语言选取优势研究 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1735658516a1682542.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论