了解面向对象的起源,才能理解面向对象

1,398 阅读3分钟

对象

什么叫对象?
  曾经学习JAVA的时候,老师说将某一种事物的共同属性抽离出来成一个集合,我们称这个集合叫类,对象就是这个类的某个具体的实例 ,所以可以说对象就是个具体能让人理解的事物(能让人理解的事物必定属于某个类)

面向对象

  如果一句话来描述面向对象思想的话,精炼一下维基百科的描述:把一组数据结构和处理它们的方法组成对象(object),把相同行为的对象归纳为类(class),通过类的封装隐藏了某一方法的具体运行步骤,通过继承实现类的特化和泛化,通过多态实现基于对象类型的动态配置与消息传递机制。
  通过这句话,我们可以知道面向对象的三大基本特征就是封装、继承、多态。为什么封装、继承、多态是其的基础呢,维基百科中的这句话可以帮我们解释:面向对象程序设计的雏形,早在1960年的Simula语言中即可发现,当时的程序设计领域正面临着一种危机:在软硬件环境逐渐复杂的情况下,软件如何得到良好的维护?面向对象程序设计在某种程度上通过强调可重复性解决了这一问题,因为强调了可重复性,而同时查阅资料我们发现Smalltalk语言在这个面向对象编程思想的发展过程中扮演了重要角色。
  Smalltalk是一种面向对象的、动态类型的编程语言。Smalltalk由艾伦·凯,Dan Ingalls,Ted Kaehler,Adele Goldberg等于70年代初在Xerox PARC开发。
查看了相关资料在The Early History Of Smalltalk中我找到这样一段话更好的解释了什么叫对象与面向对象

翻译过来就是

  • 一切都是对象
  • 对象通过发送和接收消息进行通信(就对象而言)
  • 对象具有自己的内存 (就对象而言)
  • 每个对象都是一个类的实例 (必须是一个对象)
  • 该类保留 其实例的共享行为(以程序列表中的对象形式)
  • 要评估程序列表,将控制权传递给第一个对象,其余的视为其消息

这告诉了我们面向的是什么对象,怎样面向对象,让对象交流,所以Smalltalk本身实际上就是根据这几点原则不断补充完善形成的。
Design Principles Behind Smalltalk中的交流对象也有表现到 在Smalltalk中,采用与计算机和用户之间的最高级别的交互相同的方式来构建最原始对象之间的交互。Smalltalk中的每个对象,甚至是一个小小的整数,都有一组消息,一个协议,定义了该对象可以响应的显式通信。在内部,对象可以具有本地存储能力并可以访问其他共享信息,这些信息包括所有通信的隐式上下文
那么封装、继承、多态是不是也就是更好的让对象交流



以上内容来自一个萌新查阅的资料与自己的一点想法,欢迎大佬批评

资料: 维基百科 -- 面向对象
Smalltalk的早期历史 -- The Early History Of Smalltalk
Smalltalk背后的设计原则 -- Design Principles Behind Smalltalk