Java学习心得(3)——关于面向对象和面向过程的差异

来源:互联网 发布:大数据时代 双月刊 编辑:程序博客网 时间:2024/05/20 11:51

    最近自己在系统的学习Java,之前有C++的学习经历和一丁点的开发经历(顺便吐槽一下,已经彻底放弃C++了,特性太多了,坑太多了,投入和回报不成比啊,很多地方看见说是最新C11已经。。。不知是真是假),对于面向对象、面向过程有不少感悟,但是一直没有好好总结下。

  • 传递差异:面向对象设计思想认为一个程序是由一个对象传递给另一个对象(里面可能包含嵌套、继承等各种),程序是由对象的传递实现的;而面向过程设计而是把程序看成一个过程(函数)(这里也包含着嵌套)、一个过程堆积而成得,简单来说就是认为程序是过程(函数)堆积而成得;总得来说:完全面向过程设计认为一个程序是大的过程,这个大过程由若干个小过程组成,而各个小过程可能是由更小得过程组成等等;完全面向对象设计则是把一个程序看做是对象相互之间传递完成的,首先是从这个程序中抽象出几个对象,然后通过这几个对象之间的传递来实现了这个程序(这个传递过程就是程序执行过程),这里要强调一点面向过程有明显的层次关系(大过程有小过程组成),而面向对象则没有(从某个程序里抽象出来的A、B两对象是什么关系谁也不知道)。
  • 抽象差异:面向对象设计是函数和变量的整体抽象,而面向过程设计仅仅只是函数的堆砌(语文没学好,不知道如何表述更恰当);因为过程实际的表现形式就是函数,面向对象是更高一级的抽象。
  • 思维差异:面向对象的思考角度更贴近现实世界,更贴近人的思考角度(按人的思考方式去设计);面向过程更贴近机器,与其执行流程吻合(机器就是这么干活的,按机器的工作方式去设计)。

    就就先写这三点吧,因为水平有限,里面很多用语描述不是很恰当,为了能形象地表达出大体意思,还望见谅。

0 0