再度思考面向过程和面向对象

Posted Ariel_欢

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了再度思考面向过程和面向对象相关的知识,希望对你有一定的参考价值。

一、面向过程和面向对象的区别:

(1)从设计思路来看:

面向过程:程序设计的重点是分析解决问题的步骤,以及完成步骤的流程,是一种结构化自上而下的程序设计方法。即面向过程注重的是解决问题的具体步骤。

面向对象:程序设计的重点是把构成问题的事物分解成对象,从局部着手,通过迭代的方式逐步构建出整个程序,是一种以数据为核心,以类设计为主的自下而上的程序设计方法。

即面向对象注重的对象,注重的是“谁”来干事,而不是怎么干事。注重的是多少人来干事,而不是干多少事。

(2)从适用范围来看:

面向过程:由于不涉及实例化对象等操作,程序性能更高,开销更少,因此像切入式等对资源要求较高的系统大多都采用面向过程开发。

面向对象:由于其抽象、封装、继承、多态的特性,使得系统具有更好的扩展性、维护性、复用性,对于功能复杂且维护成本较高的系统采用面向对象的开发。

这一点也是由于两者各自不同的优缺点,导致适用范围不同。二者没有好坏之分,在不同情况或者要求下,选择适合的设计思想。

比如:liunx是面向过程的C语言开发的,为什么?

——liunx必须得用面向过程,因为他要占资源少,响应快,性能好。

面向对象因为类调用时需要实例化,开销比较大,比较消耗资源,反应速度慢,代码执行效率低,用的时间长,占的资源多。而Liunx操作系统是管理资源的,以至于对操作系统而言,性能是最重要的因素,对资源占用要少,响应速度要快。所以牺牲了可复用可维护,维护成本高,对开发人员要求也高。

当然,WINDOWS系统是用面向对象的语言——C++编写的。之所以微软选择了C++而不像LINUX一样选择C语言,其根本原因就是WINDOWS操作系统本身是微内核系统,所以扩展性及以后的维护要求非常重要,并且Windows非开源的,要考虑商业化,所以维护成本也很重要,因此选择面向对象的C++语言就可以很好的降低维护成本,也可以更好的可拓展。

所以,面向过程语言和面向对象语言二者没有好坏之分,只是合适不合适,在开发过程中,我们要多方面考虑我们的系统需求,合理的选择。

(3)从代码复用来看:

二者都可以实现代码复用,但是面向过程主要是函数,将具体的实现逻辑封装为方法进行复用;而面向对象主要是类,面向对象的基础是抽象,抽象出对象,进行封装、继承、多态,从而很好的实现代码的复用。

二、总结面向对象和面向过程的思维导图

第一版:

分析这版导图,首先从思维导图的规范上来说,不太符合画导图的规范:

①思维导图应该尽可能是对称的,不应该画在一侧。

②分支不能超过5个

③字数不能超过8个,同一级的是一类

④标题不够抽象,主标题与子标题重复

其次,从内容上分析:

①对面向对象和面向过程的目的,理解不清晰,描述不准确。比如面向对象:抽象是 从看着不同的事物中抽象出来对象,而不是对对象抽象,要把可能的用例列出来,抽象成对象,然后再由多变少的过程,这叫抽象。对象是最后抽象出来的。

②面向对象的缺点也是有的,没有写出来;并且面向过程的缺点中,面向过程的代码也是可以复用的,不过是注重的函数。

③对于例子,描述的不清晰,应该用同一个例子进行对比学习分析。

第二版图:

 分析这版图:

①面向对象的缺点“需要知识基础”描述不明确,需要什么知识基础?——需要抽象能力,面向对象程序设计的理论基础等等;

②面向过程的目的和优点写的不好,面向过程和面向对象两种设计思想没有好坏之分,只是目标(目的)不同。

③例子描述的不好,对于面向对象来说,不够丰富,无法理解对应到代码上是怎样。对于面向过程来说,面向过程注重的是实现逻辑,而不是对象,不应该写“我”,面向过程不注重对象,注重过程/步骤。

第三版图:

分析这版导图:

①从图像结构上看,对称,美观,层数分支字数 基本符合358

②从内容上看,对于面向对象和面向过程的目的、优缺点描述清晰明确,且实例对比分析更能体现面向过程和面向对象的特点。

另外:附上画思维导图的规范:

以上是关于再度思考面向过程和面向对象的主要内容,如果未能解决你的问题,请参考以下文章

重新思考面向过程与面向对象

JavaSE基础知识—面向对象(5.1类和对象概念创建及内存分配)

面向过程和面向对象的一点思考

面向对象编程(上)

面向对象的思考过程

面向对象