哈哈,一个辣鸡大学生,今天在家喝了点酒,莫名的想起来一个曾经困扰的不行的问题
希望我这个酒后乱言能给你带来帮助
开始了!!!
我们先说一下面向过程,
C语言就是标准的面向过程的语言,学过C的朋友们都知道,我们要实现一个功能是在我们的主程序中进行,使用子程序和和一些变量和一些头文件来给我们的主程序做一系列的铺垫、引用、或者说是解释,那么这个主程序按照顺序或者我们直接可以说按照“过程”的程序来实现我们需要的功能,就叫做面向过程。
再说一下面向对象,我认为有一句话说得很好,
面向对象能有效提高编程的效率,通过封装技术,消息机制可以像搭积木的一样快速开发出一个全新的系统。
通过这句话我们可以很清晰地看出,面向对象更多的是在功能上,进行划分,“模块化”就是面向对象的主要核心。
百度上的五子棋例子,我感觉很好。
那就浅浅的谈一下我对那个例子的理解。
同样是一个五子棋的代码
面向对象大概是这样实现的:
1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、返回步骤2,9、输出最后结果。
面向对象大概是这样实现的:
1、黑白双方行为功能,2、棋盘功能,负责绘制画面,3、规则功能,负责判定诸如犯规、输赢等。第一类对象负责接受用户输入,然后第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。
两者对比可以看出
面向对象更好去移植,比如我有一个围棋的程序第一步完全可以吧我们的第一步红黑双方行为功能拷贝过去稍稍修改既可省去大量时间,当然面向过程也可以移植但明显没有面向对象牛,
当然面向过程也不是不优秀,在性能要比面向对象好很多。
至于利弊要根据实际情况。
好,就是这些,那如果还是没有看懂,建议去看一看那些大佬们的博客多多百度,本文也是我去看博客和百度总结的,写的不好,还请多多关照,写的不对的欢迎大家提出意见,拜谢!!!
对了对了,我们老师说可以把面向对象看成是一个策划者行为,而面向过程则看成是执行者