我所理解的面向过程与面向对象

我所理解的面向过程与面向对象

在大学的计算机系中,最常被拿出来讨论的一个问题,也是大学生上Java语言基础课所要面对的第一个问题,就是面向过程与面向对象的区别。但这些关于这两种思想的讨论往往最后会演变成C与Java区别的讨论或者C与C++区别的讨论。

在程序里,面向过程是通过一个个函数之间的相互调用完成的,面向对象是利用编程语言提供的类、接口、继承、封装、多态等特性体现的。所以人们总是把面向过程与C语言联系起来,把面向对象与Java等语言联系起来。

诚然,C语言的特性导致了它更适合面向过程编程,而Java或者C++的特性导致了它们更适合面向对象编程。然而这些并不是这两种编程思想的真正区别。用C语言照样可以实现面向对象,用Java或者C++照样可以面向过程编程,语言往往不是这类问题的关键。

面向过程和面向对象,是两种不同的编程思想。既然是思想,那么它就影响了人们解决问题的思考方式。假如我想吃个汉堡。面向过程就是烤面包片->烤肉->涂酱料->切菜->拼装等一系列动作,每次想吃汉堡我都会这么做,因为汉堡的制造过程就是如此。而使用面向对象,我会在想吃汉堡的时候直接去找一家肯德基。

面向过程意味着解决问题的时候先将问题分解为过程,再通过完成一个个过程达到最终的目标,它直观,非常符合人们正常的思考方式。而面向对象则需要先对问题进行抽象,得到问题的抽象结构,再通过对象之间的相互作用解决问题。

很多人往往还有另一种错误的想法:面向对象优于面向过程。这又是编程语言惹的祸!那些被C语言坑惨了的学生,习惯性地把Java程序更好写归功于面向对象而不是GC。我的态度是:编程思想并没有优劣之分。选用什么思想构建程序,往往取决于问题的复杂程度、抽象程度、程序的规模和运行时间。

面向过程更适合那些简单的问题。面向对象则适合抽象程度更高的问题。假如只是临时地想计算一下某个公式,没必要专门抽象出一个公式类。想构建一个web页面,则没必要控制整个程序运行的每一步…

有趣的是,有时候这两种思想是同时存在于同一个程序中的

最后需要说明的一点是:编程思想跟编程语言一样,只是一个工具,只是为了更好地编写优质、易读、易维护、低耦合度的代码。如果被思想缚住了手脚,那就得不偿失了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值