面向对象编程OOP发展简史
1、什么是面向对象编程
面向对象编程,是一种通过对象的方式,把现实世界映射到计算机模型的一种编程方法。OOP围绕对象而不是功能和逻辑来设计软件架构。可以将对象定义为具有唯一属性和方法的一种数据类型。
2、面向对象发展历史
在现代意义上的面向对象程序设计中,使用术语“对象”和“面向对象”的术语在1950年代末和1960年代初首次出现在麻省理工学院。
在1960-61年间,伊万·萨瑟兰(Ivan Sutherland)创建了 Sketchpad,伊万在1963年基于其关于Sketchpad的论文的技术报告的词汇表中,定义了“对象”和“实例”的概念。
1962年,克里斯汀·尼加德(Kristen Nygaard)在挪威计算机中心发起了一个模拟语言项目,Simula编程语言被设计出来使用。Simula引入了重要的概念,这些概念如今已成为面向对象编程的重要组成部分,例如类和对象,继承以及动态绑定。
1965年,Simula被指定为第一种被广泛认为是“面向对象”的编程语言。与Sketchpad一样,Simula具有对象功能,并最终引入了类,类继承,子类和虚拟方法。
受到LISP的简单性以及Simula 67的类和对象的启发,并从Simula中汲取了类,对象和对象引用的思想。艾伦·凯(Alan Kay)大约在1966或1967年创建Smalltalk,Smalltalk对对象的概念进行了改进,并探索了像小型计算机这样的对象的概念,或者像Kay所说的那样:“对计算机本身的概念的递归。” 对象将数据(属性)与对该数据进行的操作(方法)组合在一起,就像计算机将内存存储在其中的数据与算术和逻辑单元对数据进行操作的方式相同。
在2003年的一次电子邮件交流中,艾伦·凯(Alan Kay)阐明了他将Smalltalk称为“面向对象”的含义:
“对我来说,面向对象操作仅意味着消息传递,本地保留和保护以及状态过程的隐藏以及万物的极端后期绑定。”
艾伦·凯(Alan Kay)
换句话说,根据Alan Kay的说法,OOP的基本要素是:
- 讯息传递
- 封装形式
- 动态绑定
值得注意的是,继承和子类多态性被Alan Kay视为OOP的必要组成部分,他创造了这个术语并将OOP推向大众。
此后,Smalltalk影响了许多OOP语言,包括Objective-C(1984),Object Pascal(1986),Erlang(1986),CLOS(1987年左右),Ruby(1995),Java(1995),Python,PHP,Perl,Groovy (2003),Scala(2004),Dart(2011)等。
虽然OOP的大多数优点都可以在早期的Simula语言中获得,但是直到1980年代中期,Bjarne Stroustrup 将C语言移入面向对象,创建了面向对象的C++语言。然后 C++在1990年代根深蒂固后,OOP才开始蓬勃发展。
想看更多精彩内容,关注公众号「前端队长」,获取更多前端技术与个人成长相关内容。