面向过程
就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
面向对象
是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
C++对C的扩展
Cute:封装,多态,继承,类,模版,STL泛型编程。
面向过程一种以事件为中心的编程思想,以功能(行为)为导向,按模块化的设计,就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
面向对象一种以事物为中心的编程思想,以数据(属性)为导向,将具有相同一个或者多个属性的物体抽象为“类”,将他们包装起来;而有了这些数据(属性)之后,我们再考虑他们的行为(对这些属性进行什么样的操作),是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
举例:一个公司年会晚会流程:帅哥美女主持人开场-----演员1号唱歌------演员2号小品----演员n号跳舞----主持人总结-------领导致辞
用面向过程思想分析年会:首先主持人开场词,演员1号唱歌,然后演员2号小品,再而演员n号跳舞,主持总结,最后大领导致辞:同志们辛苦了。。。。
用面向对象思想分析年会:三大部分组成:主持人、演员、领导;主持人工作:开场以及总结;演员工作:各种表演的活;领导工作:致辞;
面向过程(OP)和面向对象(OO)是不是就是指编码的两种方式呢?不是!你拿到了一个用户需求,比如有人要找你编个软件,你是不是需要经过需求分析,然后进行总体/详细设计,最后编码,才能最终写出软件,交付给用户。这个过程是符合人类基本行为方式的:先想做什么,再想如何去做,最后才是做事情。有的同学说:“我没按照你说的步骤做啊,我是直接编码的”。其实,你一定会经历了这三个阶段,只不过你潜意识里没有分得那么清楚。对于拿到需求就编码的人,可能编着编着,又得倒回去重新琢磨,还是免不了这些过程,以OO为例,对应于软件开发的过程,OO衍生出3个概念:OOA、OOD和OOP。采用面向对象进行分析的方式称为OOA,采用面向对象进行设计的方式称为OOD,采用面向对象进行编码的方式称为OOP。面向过程(OP)和面向对象(OO)本质的区别在于分析方式的不同,最终导致了编码方式的不同。
面向过程和面向对象的区别
面向过程适合处理简单的事情,直接关注流程,简单有效。
面向对象适合处理复杂的事情,先使用面向对象的方式对整体关系作出分类,然后,根据不同的类深入细节的处理。
面向过程和面向对象的联系
面向对象无法取代面向过程,他们是相辅相成的。面向对象关注于从宏观上把握事物之间的关系,在具体到如何实现某个细节时,仍然采用面向过程的思维方式。
面向对象如何离开了面向过程,就无法实现真正的落地,成为无源之水。
面向对象技术的优点
面向对象技术具有程序结构清晰,自动生成程序框架,实现简单,维护简单,代码重用率高,软件开发效率高等优点。
再举例:我们要从A地去B地,面向过程就是要自己规划路线,从A去B,面向对象就是确定好A、B两点,然后打车,路线不用在意;
/*通过上面的比较,相信大家更加坚定了对面向对象的信仰,更加将其奉若神明。不过,这个面向对象中的抽象的过程可不是一般人能做到的,要达到改动只是局部的需要设计的人有足够的经验,使用面向对象的语言不能保证你的程序就是面向对象的,初学者或者很蹩脚的程序员很可能以面向对象之虚而行面向过程之实,这样设计出来的所谓的面向对象的程序很难有良好的可移植性和可扩展性。
还有一点我想要说的就是,面向过程绝不是一无是处的。它其实是最实际的思维方式,也是大多数人的思维方式。就算是面向对象的方法,同样也包含着面向过程的思想,面向过程是一种基础的方法。而且相对于面向对象来说,面向过程的方法容易上手,甚至不需要基础,就按照你的想法一步一步去做就行了。但是,并不是说就此止步了,之所以还有面向对象的出现,就是因为面向过程已经不能满足实际的需要了。随着软件规模的不断扩大,业务和逻辑变得越来越复杂,面向过程已经应付不了了,所以才有了面向对象的诞生。从面向过程过渡到面向对象是我们必经的一个过程,这不仅仅是设计方法的提升,更是思想的提高。*/