小谈面向对象

2020-03-27 14:26发布

从接触编程语言开始,就经常会遇到友人如耍宝一般问到:“嗨,你是如何理解面向对象的,要不要我给你举个例子说明一下啊~”。听着友人略带调侃的语调,其实我最想的是拍他一巴掌~~

面向对象,这是学习编程语言时,经常会被提到的一种编程思想,也是编程语言里面比较重要的思想,我记得,第一次面试的时候,面试官问我的,也是这样一个问题:“你是如何理解面向对象的”。当时,稚嫩的我,还是一个每天捧着“面试宝典”的孩纸,信奉着只要“一典在手,面试全有”的思想。听到问的是这样一个问题,便一板一眼的回答:“面向对象,是把事物抽象化成对象和类的一种编程思想。它的特征有三个,分别是封装,继承,多态。”面试官又问:“那你能不能具体的举个例子,来说下面向对象思想?”

彼时,还只是刚刚接触编程语言不久,对面向对象的理解还仅仅是局限于背概念的阶段,说到举例,脑海中浮现的例子,也就是最经典的“把大象放入冰箱”这个案例。

结果可想而知,那到底什么是面向对象呢,这是初入编程语言的人比较迷惑的问题,也许,你心里是明白的 ,可是,真正让你通过语言表述出来的时候,又会觉得它就在嘴边,却晦涩难述。

常用的编程思想有两种,一种叫面向过程,一种叫面向对象,其中,面向过程指的是解决问题的方法与步骤,该思想重点在于分步骤解决问题。重点放在按步骤解决问题上面。而面向对象,Object Oriented,众所周知,重点在object这个词上。所谓的面向对象,实质就是“找对象”。那我们“找对象”要干什么呢,就像我们找人帮忙一样,我们找别人,无非是因为这事情,我们自己不想干或者干不了,需要求助他人,面向对象,其实也是这样的一种编程思想,我们编写程序的目的,不过就是让计算机帮我们做事情,那面向对象,也是这样的原理,我们“找对象”的目的,也是为了让“对象”帮我们做事情,这就是我理解的面向对象。

也许上面的解释仍然比较抽象,我举个例子来说明这两种编程思想的区别,比如,就拿洗衣服来说,如果是使用面向过程的编程思想,那么,我们就需要分析如何才能解决洗衣服这件事,如图所示:

而如果采用的是面向对象的思想,我们只需要找洗衣机这个“对象”就行。所有需要实现的步骤都是由洗衣机为我们完成。如图所示:



    也许有的人会说,我自己完全可以洗衣服,为什么还要花费金钱去买洗衣机呢,这也是我想说的面向过程和面向对象的区别所在,对于简单的问题,面向过程就能很好解决,确实没有必要采用面向对象的思想,但是,对于重复需要解决的问题呢,比如,我们有
100件衣服,自己去洗和用洗衣机去洗相对而言,哪个更省事呢?结果不言而喻,同样的,对于解决复杂的问题,比如,当我们衣服洗到一半的时候,又有新的脏衣服被拿过来,那么,这时候,如果使用的是面向过程的编程思想,是不是这里需要重新添加判断,然后生成新的代码,这样,会造成代码量越来越大,越来越冗余,但是,对于面向对象来说,我只要再找一台“洗衣机”对象就好,很好的解决了代码冗余的问题。

综上说述,面向对象适用于解决复杂的问题,但是它也是建立在面向对象基础之上的,只是将解决问题的步骤组装成为一个对象。需要解决这种问题时,我们找到这个对象,利用这个对象,来为我们解决问题,甚至可以重复的解决这个问题。

这就是面向对象的思想,最后,再来举个栗子~,自己做饭,就是面向过程,我们点外卖,其实就是面向对象。