您的位置:首页 > 其它

小糖出品:面向过程与面向对象二者的区别

2015-05-08 12:57 344 查看
开始写博客了,想想都有点小紧张



近来一直在看oc语法,所以想写写博客记录下自己对oc各个语法的理解。

好了,废话不多说。咱今天就来谈谈面向过程和面向对象这两者之间的区别吧。(个人理解,不当之处欢迎纠正

)

相信有不少人都接触过c语言吧,回想一下,我们是如何将一个问题利用c语言解决的呢?就小糖本人来讲呢,先把这个问题如何解决的各个步骤列出来,然后

用c语言写出各个步骤实现的函数,最后按照步骤调用函数,差不多就解决问题了。

举个例子:比如说我们要求两个整数的最大值,小糖会怎么做呢?自然是把问题分为如下步骤:

(1)提供两个整数 a 和 b

(2)求出两个数中的最大值

(3)将最大值输出

在第二步求最大值中还可以分为如下步骤:

(1)比较两个整数

(2)如果a大于b,则a是最大值,否则b是最大值

从上面我们可以看出,解决这个问题注重的是步骤,将问题分析,列出解决问题的步骤,再一步一步实现步骤,最后按步骤调用,这个思想就是面向过程的思想。

面向过程的程序设计是一种以过程为中心的编程思想,就好比上面说到的一样,首先对问题进行分析,分析出解决问题的步骤,再利用函数将步骤实现,最后依次调

用就可以了。在考虑如何解决问题的过程中,一般是想出粗略的思路,再逐渐对其中的细节考虑,也就是“自顶向下,逐步细化”的思想。每个函数都被称为一个模块,

一个问题的解决过程都是由每个模块组成的,所以有了“模块化,结构化”的编程思想。面向过程的结构化程序设计,就是将这两个思想应用到问题的分析、设计和实

现中去。

那么,何为面向对象化的程序设计呢?别急,容小糖我喝口水再慢慢道来。

面向对象,从字面上我们就可以感受到,这种程序设计思想不再注重解决一个问题的过程,而把重心放到了对象上。面向对象的程序设计,就是用人类在现实生活

中常用的思维方法来认识、理解和描述客观事物。其思想就是将数据及处理这些数据的方法都封装在一个类中,需要使用类的时候,我们就需要创建一个类。



说人话)


现在站在我们的角度来说,小糖问大家一个问题,大家都是如何区分我们身边的各种事物呢?比如猫啊、狗啊、数啊、书本啊啥的。我们肯定是从他们的组成还有

他们的动作行为来判断的。就好比如说猫,组成:一个头、身体、四条腿等等,动作行为:会跑、会跳、会喵喵叫。我们从组成和动作行为可以分辨世间的万物,这便

是人的思维。

举个例子吧,就拿车子启动和停止来说吧。如果用面向过程化的程序设计思想,我们会怎么考虑呢?小糖的思路是:

(1)汽车启动

(2)汽车停止

(这么简单

?)就面向过程化的程序设计而言,并没有对车进行考虑,只考虑车启动和停止的步骤,所以整个过程就分为如上两个步骤。

那么,要是用面向对象化的程序设计思想,我们又会怎么考虑呢?就面向对象而言,我们还需要对车这个对象进行考虑。那么小糖的思路是:

(1)创建汽车这个类

(2)为汽车写属性,例如车的颜色、品牌、轮胎等等

(3)汽车的方法--启动和停止

(4)在需要该类的地方创建对象用来调用该类

是不是感觉比较复杂了点呢?因为这只是一个简单的汽车启动和停止,所以会感觉比较复杂。小糖再举个例子,看过这个例子之后,你就会有不同的体会了。

我们就以小糖曾经很痴迷的五子棋来做例子吧!

如果我们用面向过程程序设计思路,我们要怎么写呢?还是一样,小糖给出自己的思路:

(1)开始游戏

(2)绘制棋盘

(3)白子先走

(4)更新棋盘

(5)判断输赢

(6)轮到黑子

(7)更新棋盘

(8)判断输赢

(9)继续3步骤

(10)输出最终结果



怎么那么多步骤!!)当然啦,因为注重过程嘛,所以要写出每个步骤,再用函数实现嘛。

(面向对象的话,结果是怎样的呢?

)别急,容小糖再喝口水。

那么,用面向对象的思路写呢?小糖的思路:

(1)编写黑白双方这两个类,行为相同

(2)编写棋盘绘制系统

(3)编写规则系统 负责判定输赢等

玩家对象负责输入,棋盘对象用来更新棋盘,最后用规则对象判定输赢。

是不是感觉很简单?真的吗?小糖感觉,面向对象的话,也是不简单的。其实,从上面那个例子就可以看出,面向对象化的程序设计思想是以功能来划分问题的,

而不是步骤。其实就小糖的感觉,面向对象更适合用来做大型的软件,对于小型的程序来讲,或许面向过程可能会更简单。

面向对象和面向过程最大的区别就在于,如果你要新加一个功能,就面向过程而言,有时候改动是巨大的,你必须改动许多甚至所有的步骤,还得调整各个步骤的进

行顺序,这无疑会让你有种”“杀了我吧!!!”“的感觉;而面向对象呢,只需要改动某个类或对象,其他的类或对象是不动的,而且整个对对象功能的调用顺序都没有变

化,改动仅仅是部分的。这或许就是面向过程和面向对象在使用时最大的区别。

好了,本期博文就是这样了,小糖也该和大家说再见了。欢迎关注小糖的下一篇博文。(




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: