面向对象程序设计的历史发展
学院班级姓名学号
面向对象程序设计技术被认为是程序设计方法学的一场实质性的革命,是程序设计方法学得
一个里程碑,以上说法是毋庸置疑的。为了能够更好的理解和应用面向对象的方法进行程序的开发和设计,我们有必要首先来了解一下面向对象程序设计的历史和发展。
在20世纪60年代,软件曾出现过严重危机,由软件错误而引起的信息对视、系统报废事件屡有发生。为此,1968年,荷兰学者E.W.Dijkstra提出了程序设计中常用的GOTO语句的三大危害:破坏了程序的京东一致性,程序不易测试,限制了代码优化,此举引起了软件界长达数年的论战,并由此产生了结构化程序设计方法,同时诞生了基于这一设计方法的程序设计语言Pascal。
由瑞士计算机学家开发的Pascal,一经推出,它的简介明了以及丰富的数据结构和控制结构,为程序员提供了极大地方便性与灵活性,同时它特别适合微计算机系统,因此大受欢迎。它采用结构化程序设计思想。因此,结构化方法迅速走红,并在整个20世纪70年代的软件开发中占绝对统治地位。
但是,到了70年代末期,随着计算机科学的发展和应用领域不断扩大,对计算机技术的要求越来越高。结构化程序设计语言和结构化分析与设计已经无法满足用户需求的变化,于是人们开始寻更先进的软件开发方法和技术,OPP由此应运而生。
OPP即面向对象的程序设计,OPP技术被认为是程序设计方法学的一场实质性的革命,是程序设计方法学的一个里程碑。OPP大大了软件的开发效率,减少了软件开发的复杂性,提高了软件系统的可维护性、可扩展性。
实际上,“对象”和“对象的属性”这样的概念可以追溯到20世纪pascal语言面向对象吗50年代初,它们首先出现于关于人工智能的早期著作中。但是出现了面向对象语言之后,面向对象思想才得到了迅速的发展。过去的几十年中,程序设计语言对抽象机制的支持程度不断提高:从机器语言到汇编语言,到高级语言,直到面向对象语言。汇编语言出现后,程序员就避免了直接使用0-1,而是利用符号来表示机器指令,从而更方便地编写程序;当程序规模继续增长的时候,出现了Fortran、C、Pascal等高级语言,这些高级语言使得编写复杂的程序变得容易,程序员们可以更好地对付日益增加的复杂性。但是,如果软件系统达到一定规模,即使应用结构化程序设计方法,局势仍将变得不可控制。作为一种降低复杂性的工具,面向对象语言产生了,面向对象程序设计也随之产生。
面向对象出现以前,结构化程序设计是程序设计的主流,结构化程序设计又称为面向过程的程序设计。在面向过程程序设计中,问题被看作一系列需要完成的任务,函数(在此泛
指例程、函数、过程)用于完成这些任务,解决问题的焦点集中于函数。其中函数是面向过程的,即它关注如何根据规定的条件完成指定的任务。在多函数程序中,许多重要的数据被放置在全局数据区,这样它们可以被所有的函数访问。每个函数都可以具有它们自己的局部数据。
但这种结构很容易造成全局数据在无意中被其他函数改动,因而程序的正确性不易保证。面向对象程序设计的出发点之一就是弥补面向过程程序设计中的一些缺点:对象是程序的基本元素,它将数据和操作紧密地连结在一起,并保护数据不会被外界的函数意外地改变。
面向对象设计方法以对象为基础,利用特定的软件工具直接完成从对象客体的描述到软件结构之间的转换。这是面向对象设计方法最主要的特点和成就。面向对象设计方法的应用解决了传统结构化开发方法中客观世界描述工具与软件结构的不一致性问题,缩短了开发周期,解决了从分析和设计到软件模块结构之间多次转换映射的繁杂过程,是一种很有发展前途的系统开发方法。
面向对象设计方法以对象为基础,利用特定的软件工具直接完成从对象客体的描述到软件
结构之间的转换。这是面向对象设计方法最主要的特点和成就。面向对象设计方法的应用解决了传统结构化开发方法中客观世界描述工具与软件结构的不一致性问题,缩短了开发周期,解决了从分析和设计到软件模块结构之间多次转换映射的繁杂过程,是一种很有发展前途的系统开发方法。
1967年,挪威计算中心的KistenNygaard和OleJohanDahl开发了Simula67语言被认为是最早的面向对象程序设计语言。它引入了所有后来面向对象程序设计语言所遵循的基础概念:对象、类和继承。正是因为他们对类、对象、继承和动态绑定等重要概念的首先引入,为面向对象这一当前最流行、最重要的程序设计技术奠定了基础。
20世界60年代下半期市程序设计语言发展史上的重要时期,在这个时间区间内,有3中重要的程序设计语言相继推出,除了Simula67外,还有Algol68和PL/
I。这三个语言各有特,均有创新,都对后来的程序设计语言产生了重大影响。但客观地说,Simula67的面向对象概念的影响是巨大而深远的。它本身虽然未能广泛流行,但在它的影响下产生的面向对象技术却迅速传播开来。
70年代,Smalltalk的问世又给面向对象的语言注入了新的血液。
而在实践中。人们开始渐渐发现,由于C语言是如此深入人心,以至于当前最好的解决软件设计危机的方法并不是另外发明一种新语言去代替C,而是在它的原有基础上加以发展,使之可以扩展到面向对象的领域。
在这种形势下,C++于20世纪80年代初面世。C++保留了C语言原有的有点,同时增加了面向对象的机制。由于C++对C语言的改进主要体增加了类,因此它最初被设计者称为“带类的C”,后来为了强调它是C的增强版,就采用C语言中的自加运算符号“++”,改称它为“C++”。从C++的名字中可以看出,C++是C的超集,因此C++既可以用于面向过程的结构化程序设计,又可以用于面向对象的程序设计,是一种功能强大的混合型的程序设计语言。
在C++之后,影响巨大的就是Java和C#语言了。这两个语言都引入了虚拟机的概念,从另一个角度分析,它们也是更纯粹的面向对象语言。因为C++在可以用于面向过程的结构化程序设计,而Java和C#则没有这个功能。不过,Java和C#也有自己的特点,它们都支持丰富的MetaClasses,这使得一切皆对象的概念支持的越发深刻。不过Java中的基础类型在这方面的并没有得到完善,这也可以说是一个遗憾吧。虽然如此,Java仍然是一个一直
在学习的语言,相信Java可以凭此越走越远。在面向对象发展到现今,又出现了一些重大的变革。这就是动态语言的出现。他们也都是支持面向对象技术的。最典型的动态语言有JavaScript,Python,Ruby等等。它们一个重大的变化就是将类的信息改变为动态的,并提出了DuckingType的概念。这在很大程度上提升了编程的生产力。
其实,不仅仅在程序设计方面,面向对象也在不断向其他阶段渗透。1980年GradyBooch提出了面向对象设计的概念,面向对象分析由此开始。1985年,第一个商用面向对象数据库问世。1990年以来,面向对象分析、测试、度量和管理等研究都得到长足发展。
从此,全世界掀起了一股面向对象的热潮,至今盛行不衰,面向对象也逐渐成为了程序设计的主流。
但是同原型方法一样,面向对象设计方法需要一定的软件基础支持才可以应用,另外在大型的MIS开发中如果不经自顶向下的整体划分,而是一开始就自底向上的采用面向对象设计方法开发系统,同样也会造成系统结构不合理、各部分关系失调等问题。所以面向对象设计方法和结构化方法目前仍是两种在系统开发领域相互依存的、不可替代的方法。
综上,面向对象对程序设计的影响是巨大的,面向对象的出现是必然的,就算这段历史重来十次,一百次,乃至一千次,面向对象仍然会应运而生,并一定可以在新的未来继续发展,成熟,开枝散叶。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论