什么是面向过程与面向对象

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/snyanglq/article/details/50313499
什么是面向过程与面向对象
许多人在学习语言的时候都会被告知,C语言是面向过程的编程语言,JAVA语言是面向对象的编程语言等等。
这时当你是刚学习一门语言的时候,根本就不用管这个概念是什么意思,因为你是白丁,没有另外一门语言的编程思想来干扰你的学习,但是若你已经学习了一门语言那就会提出什么是面向过程?什么是面向对象?这样的疑问。这两个概念其实是很难说的清楚的,特别是对一些学过面向过程而完全没有接触过面向对象的人来说,要是学过面向对象再学面向过程反而会比较容易理解这个概念。不过直接学习面向对象语言,难度也会相对地增加,但是面向对象的程序编程又比面向过程的程序编程简单点,这个真真的非常矛盾。

那么什么是面向过程?什么是面向对象呢?下面说说我的理解(主要以C和JAVA为主)

面向过程
自顶向下、逐步求精、模块化封装函数主张按功能把软件系统逐步细分,对每个涉及到的功能都进行一次数据处理然后输出。由主函数负责把函数中的所有接口串接起来,程序的实现非常强调达到某功能的算法。每个函数都有唯一的入口和出口。


面向对象
面向对象的方法也是利用面向过程的结构化程序流来设计的,
面向对象是一种更优秀的程序设计方法,它的基本思想是使用类、对象、继承、封装、消息等基本概念来进行程序设计的。它强调直接以现实世界中的事物(即对象)来思考、认识问题,并根据对象的本质特点把它们抽象为系统中的,使之成为构成系统的基本单元,于是就使得软件系统组件有了直接映像到客观世界的可能,并可以保持客观世界中事物及其相互关系的本来面貌。

看了这个文字的解析,大家可能还是很模糊而且不理解,那么我来举个例子

现在有一个人物名字叫小明,现在小明需要跑步则

面向过程是这样处理,先分析小明的路线,然后设计他如何跑,出现意外怎么处理等等
面向对象是这样处理的,直接发一个跑的命令,至于怎么跑,不管他,因为类里面已经包含了跑的方法。

所以,基于两种程序设计的思想,可以说,面向过程程序设计的最小程序单元是函数而面向对象程序设计的最小程序单元是类

那么为什么又有人说设计面向对象的程序比设计面向过程的程序要简单易用一点呢?
为了形象理解,再举个例子
小明要煲汤,

面向对象设计:小明妈妈已经为小明准备好材料,小明不用管本身是否是煲汤的能手,只要把妈妈准备好的材料

                           放下就能煲出味道不错的汤。

面向过程设计:小明需要自己选材料,这就对小明的要求要高点,最起码小明要懂得选材,懂得搭配,懂的放水

                           放多少,调料多少等等才可以,即小明本身必须是煲汤能手才能煲出不错的汤。



也有的书说面向过程以函数为中心面向对象以对象为中心。那么什么是以函数为中心?什么是以对象为中心?

例:小明吃苹果

以函数为中心即以吃为中心,以对象为中心即以小明为中心,因为小明才是对象

如何区分一门语言是面向过程还是面向对象呢?
我个人愚见认为如果一门语言具有继承与多态特性,则是面向对象,如果没有则是面向过程。
所以说Java是面向对象C是面向过程是因为为在Java中具有继承和多态而C没有。

通过上面的说明,我想有的人已经明白了其实面向过程也可以说是面向对象的实现方法,之所以还不明白是因为还没有完全接触过面向对象语言,如果学过两门语言的人应该知道C语言封装大量的函数,而Java封装大量的类。如果还没有接触过JAVA面向对象编程语言的话,你可以把JAVA语言的类近似地看成是C语言的结构体这样也是理解类的一种方法。

最后放两张关于两种编程思想的结构图帮助理解吧

面向过程


面向对象


猜你喜欢

转载自blog.csdn.net/snyanglq/article/details/50313499