简说面向过程与面向对象

昨天白天,因为在室外活动,无事可做,所以我思考了一天,在想怎么才能比较清晰的向人解释这两个概念.所以我对这两个概念的字面意思做了一下详细的解释.没想到,这可能真的会帮助我们非常简单的理解这两个概念.

面向:从字面上理解面向,就是我们的脸对着的地方,引申为我们能看到.

过程: 过程是事物从开始,到发展,到结束的整个经历 

那么面向过程就是:我们能看到, 一个事物从 开始->发展->结束.

这对于我们写程序的人来说,可能会有感触,因为一开始我们写程序时.都是按照事件的发展.去安排计算机,一步一步的做,一直到有了最终结果.

所以面对过程的程序:让我们  "看到" 的就是一个事件从开始.到发展,到结束的整个经过.

面向过程”是一种是事件为中心的编程思想。就是分析出解决问题所需的步骤,然后用函数把这写步骤实现,并按顺序调用。

对象:指行动或思考时作为"目标"的"事物"(对象)。

面向对象:我们看到, 一个对象. 

从字面上,我们可能会感到迷茫.但是,我们把具体对象代入这句话,我们会立刻清晰起来.

例如, 我们看到,一个LED.

哈,我们竟然看到的是一个具体的事物. 一个具体的LED.

这个LED有我们"关注"的属性: 如它连接在哪个io上.它此时是亮还是灭..等等一切,我们想"关注"的属性与我们所希望的行为:如,它可以灭,它可以亮,它可以闪烁等等..

我们对待这个事物的态度,是"使用"它.

我们对待很多这样的"对象"时的态度,就是"使用" 它们构造出我们需要的.

视野的转换.让我们编程的思维也发生了变化.比如,面对过程编程方法,我们看到的是一步步的操作.一直达到目标

而面对对象思考过程,我们看到的是对象(或零件),我们用这些对象或零件去组合,去构造目标.

对象,指行动或思考时作为"目标"的"事物",那么,我们对目标观察,就会看到"目标事物"(对象)的一些特性.我们会使用我们所"关注"特性来描述这个对象,我们会把所有具有相同数据与行为的对象,称为同类(对象),类的概念便由此而生.

"类"是用来描述,某些对象,具有的相同特性.

比如我们看到这样 一个事物:

数据部分:

身高约140-200厘米左右,一个脑袋,两只眼睛,有四肢,

行为部分

会两腿行走,会使用火.会思考

当听到这些东西时候,我们头脑里一下跳出一个概念那就是 "人"

"人",就是这些事物的抽象
 
而当我们谈论"人"这个概念时,我们也可以清晰的知道这是一种 一个脑袋,两条腿,会说话会思考的动物.

 在人类中,有一个对象叫"五号智能".那么,"五号智能"就是人类的一个实例(对象),

现在来拿我们熟悉的东西来比喻

有一种数据,32位处理器时.它只占四字节空间,它只保存整数.它可以表示负数与正数还有0.

这种类,我们称它为int 类.

int a; 便定义了一个名字是a的实例(对象)

OK,现在我们已经会使用数据与行为去描述一个对象了,那么现在我们谈谈面向对象的好处.

我们还是拿LED来举例,现在我要写出一个LED闪烁的程序.用面对对象的思想方式.

首先我们要做的就是描述这个LED的特性.

我们这样描述:

LED灯.它会把自己点亮,也会把自己关闭.

OK,LED灯的描述就这么多.我们用C语言把LED闪烁写出来

void ledopen();

void ledclose();

就这么简单的两句.LED我们已经描述完成.现在开始写闪烁.

int i=500;

while(1){

    ledopen();

    while(i--);

    ledclose();

}

完成了,这就写完了闪烁.

好处呢..好处是,就算51的led我不知道怎么写,但是,只要有一个会写51单片机的人,把ledopen这个函数实现出来.这个程序一点也不用修改,就可以直接使用了.就算移植到arm上也是一样的

面向对象编程,第一个好处,让我们不必去了解具体实现,只"针对抽象"(面向对象)编程.这样使的我们代码的可移植性大大提高.

这里唯一要注意的是,我们用我们所"关注的特性"去描述对象,所以LED的数据部分,没有在我的关注之下,我只关注了它的行为.

虽然对象的描述包括数据与行为.但我们不需要它的所有特性.

我们只需要我们所"关注"的.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值