面向对象是什么

 

面向对象和面向过程其实并没有本质的区别。试想,对于面向过程的程序看作一个大的对象,那么全局变量就是属性,全局函数就是方法。只不过这个系统只有一个类。

面向对象是什么?这个话题说起来比较长,要追溯到计算机最初的产生。

最开始图灵用“心内求法”的方式,在思想中构建出了计算机的理论模型——图灵机。简单地说,图灵机是这样一个“输入-输出系统”:输入数据,根据预先编制的程序,改变机器内部的状态,并产生输出。这里面,使得图灵机具有计算能力的关键就是程序,根据需要编制不同的程序,似乎就赋予了图灵机“无限”的计算能力。

后来,冯.诺伊曼用电路实现了图灵机,就是电子计算机。用寄存器处理输入输出,用CPU执行指令进行计算。冯.诺伊曼认识到对于复杂数据的输入输出需要研究数据结构,对于复杂的数据处理需要研究算法。所以提出程序=数据结构+算法。他老人家的这个观点是非常正确的,毕竟计算机是他发明的,原理他最清楚。这也是由计算机的物质基础决定的。

刚开始的时候,人们没期望计算机能干那么多事情,所以按照计算机的“思维”,使用机器语言编写程序告诉计算机该做什么。后来觉得计算机其实很能干,只是跟他说话有点费尽,于是发明了一层层的“翻译程序”,使用越来越接近自然语言的方式编写程序。经过了机器语言-汇编语言-高级语言这么一个过程。

最开始的高级语言是面向过程的,后来才发展到面向对象。其实在我看来,面向对象与面向过程并没有本质的区别。试想,如果我们把面向过程的程序看作一个大的对象,那么全局变量就是属性,全局函数就是方法。只不过这个程序只有一个类,但是整个程序也可以算做是面向对象的。

说了这么多,到底想说什么呢?就是,面向对象其实也没有多“高深”,面向对象的很多原理和面向过程是非常接近的。而且,面向对象编程最基本的原理仍没有超出数据结构和算法。但是,面向对象是其后面向组件,面向服务,面向方面等一系列方法的基础,而且面向对象有其特有的思考问题的方式,即以对象为基础分析和解决问题。这就引出了下一个问题:什么是面向对象的思考问题的方式?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值