爱学习的憨憨 发表于 2020-10-28 12:00:31

C语言面向过程

面向过程与面向对象的区别是什么?有类似比较的例子吗?

sunrise085 发表于 2020-10-28 14:16:44

先解释一下什么是面向过程什么是面向对象
说的通俗一点哈。可能不是那么标准的定义
面向过程就是分析解决一个问题的步骤,然后一步一步的编程实现,以解决这个问题。主要是将问题分成若干个步骤,每个步骤可能会写成一个或者多个函数,整个程序合在一起解决问题
面向对象就是将问题抽象成不同的类型,每个类型有其特定的属性或操作,这些类型的对象是为了描叙某个事物在整个解决问题的步骤中的行为,而不是解决问题的步骤,这些类型的对象有一些操作属性,指示对象的一些动作,有点类似于面向过程中的函数操作,但又不一样,需要依赖于对象。
举个例子,下五子棋。
面向过程的方法编程,开始游戏,绘制棋盘,黑子先走,重绘棋盘,判断输赢,轮到白子,重绘棋盘,判断输赢,一直循环,直到决出胜负,输出最终结果。
面向对象的方法编程,黑子白子都是棋子,是一种类型的不同对象,有着相同的操作。棋盘也是一种类型,负责绘制棋盘,添加棋子之后的棋盘重绘。下棋规则也是一种类型,可以判断下棋是否违规,可以判断是否决出胜负等等。这几种类型的对象都只负责自己的属性、操作。把他们放在一起接受用户的输入,就能完成五子棋的功能。

大神本人 发表于 2020-10-28 15:48:05

楼上说的很好了,我在补充几点

面向过程编程(POP),意思是“面向过程的编程”(这不是废话吗),和面向对象,即 “面向对象的编程”(OOP)是不一样滴。
关键的考量keyword是 “过程”。
举个例子你就明白了。

比如小明经营一家餐馆,顾客点菜后要做菜吧。

如果按照POP的观点,这一步就是
做菜(); // 调用做菜函数

如果是面向对象的话(记住,对象封装了函数和值,也叫方法和字段或者对象的属性)
王大厨.做菜(); // 让王大厨来做菜

不同在于,面向对象是对象考量,不关心具体实现,值关心调用对象接口
而面向过程恰好相反,关心具体实现函数,因为没有封装,比如C语言没有class的概念,就是按照顺序一步步的完成每一步,这就是POP思想。

大神本人 发表于 2020-10-28 15:49:42

以后还有更高级的,比如面向模块编程,面向时事件驱动编程,都是封装,提供调用接口,然后用户调用,换汤不换药
页: [1]
查看完整版本: C语言面向过程