面向过程VS面向对象


    在学习UML的过程中,视频中的老师一直在强调面向对象的重要性,并且花费了两节课的时间在讲解面向对象的知识,我们在之前总是在听说面向对象这个模糊的概念,只知道一提到面向对象就立马浮现出 “封装” “继承” “多态” 这几个概念,之前我们学习的VB是面向过程的语言,所以我们队面向对象的思想不能很好的理解,在这篇博客中我就根据我自己的理解来用几个通俗的例子来对比介绍面向对象和面向过程的异同!

     面向过程的编程思想,就是“流程”式思想,就好比我们一个游戏,我们先输入卡号——输入密码——选择角色——进入游戏——结束!换句话说就是:首先分析解决问题所需的步骤(就是有多少个功能块),然后编写一个个函数来实现,当我们用的时候,就一个个的调用即可!专业一点的说法是:先确定算法再确定数据结构。

    面向对象是面向问题中各种独立的实体的,程序设计思想是将程序分解成不同对象之间的交互过程,这就像对于上面的那个游戏程序一样,我们首先不考虑这个游戏室怎么玩的,工作是怎么做的,而是先去找游戏中有哪些人或物(一般选择用户 角色 玩家等等)参与其中,然后再去看他们都有什么作用,都做了什么,然后在针对不同的人设计方法!最后在通过分门别类的把他们联系在一起!专业一点的说法是:先确定数据结构在确定算法。

    下面再以一个形象的汽车的例子来说明两者区别:

      面向过程的思想去考虑它应该是这样的:如何启动汽车、如何起步、加速、刹车、熄火等一个个操作。面向过程是把所有的功能全部在一个大的类里定义出来,当系统庞大时,功能多了,各种操作之间的调用关系也很复杂,当需要修改一个功能时就可能引发一连串的改动,使修改和维护成本增加,而不利于修改。

    而面向对象则以汽车为对象,一切由汽车开始,以上的可用操作,即功能是汽车这个对象本身所具有的,做任何操作只要告诉汽车就可以了。面向对象程序设计需求用继承/封装/多态/抽象 等去设计程序 代码量比面向过程化程序设计是多出了很多 但以后的扩展性和维护性是相当的高效。

     可以拿生活中的实例来理解面向过程与面向对象,例如五子棋,面向过程的设计思路就是首先分析问题的步骤:1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、返回步骤2,9、输出最后结果。把上面每个步骤用不同的方法来实现。
     如果是面向对象的设计思想来解决问题。面向对象的设计则是从另外的思路来解决问题。整个五子棋可以分为1、黑白双方,这两方的行为是一模一样的,2、棋盘系统,负责绘制画面,3、规则系统,负责判定诸如犯规、输赢等。第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。

      小结:对于面向过程的程序设计思想是我们首先确定一个系统有哪些功能模块组成,模块之间有怎么样的联系,然后就用函数一步一步的实现,而对于面向对象的设计思想是先确定一个程序有哪些实体组成,然后在抽象出其中的类,再设计代码! 面向对象的优点是有利于代码的复用,对于程序的扩展带来极大的便利!

      这些就是我现在对他们的理解,希望能给读者带来益处,如果有不对的地方请敬爱的读者们指出,我们互相进步!

      


评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

g-Jack

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值