快捷搜索:  汽车  科技

面向对象的五个基本步骤(三分钟了解面向对象思想)

面向对象的五个基本步骤(三分钟了解面向对象思想)小菜:"是不是因为三国时期活字印刷还未发明,所以要改字的时候,就必须要整个刻板全部重新刻。""样张再次出来请曹操过目,曹操细细一品,觉得还是不好,说:'人生真爽'太过直接,应改问语才够意境,因此应改为'对酒当歌,人生几何……'当臣子转告工匠之时,工匠晕倒……" 大鸟:"小菜你说,这里面问题出在哪里?"我们之前写的代码形式其实也有也有一个名字:面向过程编程,面向过程和面向对象编程有什么不同。在准备本篇文章素材时,我看到《大话设计模式》一书中借大鸟给小讲的故事很形象的解释了面向对象:"话说三国时期,曹操带领百万大军攻打东吴,大军在长江赤壁驻扎,军船连成一片,眼看就要灭掉东吴,统一天下,曹操大悦,于是大宴众文武,在酒席间,曹操诗性大发,不觉吟道:'喝酒唱歌,人生真爽……'众文武齐呼:'

面向对象思想(理论篇)

面向对象的五个基本步骤(三分钟了解面向对象思想)(1)

提到面向对象,其实是编程中一个小难点。

很多人学前面的数据类型、函数、控制流语句的时候觉得还挺顺,但是一到面向对象这个地方就开始犯迷糊,据我的经验,一些同学学面向对象的过程是这样的:

不知道为啥有面向对象——>不知道什么时候用->不会用->不用

面对不理解的东西我们都本能的想要绕过去,但是面向对象是一种编程思想,它并不局限于Python这一种编程语言,每一个成熟的编程语言都必然会包含面向对象的相关技术。所以想要真正学会编程,我们就一定要理解什么是面向对象思想。

我们之前写的代码形式其实也有也有一个名字:面向过程编程,面向过程和面向对象编程有什么不同。在准备本篇文章素材时,我看到《大话设计模式》一书中借大鸟给小讲的故事很形象的解释了面向对象:

"话说三国时期,曹操带领百万大军攻打东吴,大军在长江赤壁驻扎,军船连成一片,眼看就要灭掉东吴,统一天下,曹操大悦,于是大宴众文武,在酒席间,曹操诗性大发,不觉吟道:'喝酒唱歌,人生真爽……'众文武齐呼:'丞相好诗!'于是一臣子速命印刷工匠刻版印刷,以便流传天下。""

样张出来给曹操一看,曹操感觉不妥,说道:'喝与唱,此话过俗,应改为'对酒当歌'较好!'于是此臣就命工匠重新来过。工匠眼看连夜刻版之工,彻底白费,心中叫苦不迭。只得照办。"

"样张再次出来请曹操过目,曹操细细一品,觉得还是不好,说:'人生真爽'太过直接,应改问语才够意境,因此应改为'对酒当歌,人生几何……'当臣子转告工匠之时,工匠晕倒……" 大鸟:"小菜你说,这里面问题出在哪里?"

小菜:"是不是因为三国时期活字印刷还未发明,所以要改字的时候,就必须要整个刻板全部重新刻。"

大鸟:"说得好!如果是有了活字印刷,则只需更改四个字就可,其余工作都未白做。岂不妙哉。

1、 要改,只需更改要改之字,此为可维护

2、 这些字并非用完这次就无用,完全可以在后来的印刷中重复使用,此乃可复用

3、 此诗若要加字,只需另刻字加入即可,这是可扩展

4、 字的排列其实可能是竖排可能是横排,此时只需将活字移动就可做到满足排列需求,此是灵活性好。""而在活字印刷术出现之前,上面的四种特性都无法满足,要修改,必须重刻,要加字,必须重刻,要重新排列,必须重刻,印完这本书后,此版已无任何可再利用价值。"

故事中的工匠所使用的就是"面向过程"刻匾,一旦客户的需求改变,就需要在原版上进行改动,如果改动地方过大,那么很可能这块板就废了。而活字印刷正像是古代版"面向对象",不管客户的需求怎样改变,都可以非常灵活的做出相应的修改,而且所需要的工作量和面向过程相比极低。

借这个故事,再讲一下面向对象中的"类"和"实例"以及"继承"。

我们假设有一个工匠已经掌握了活字印刷法,但是他觉得自己目前的工作效率不够高,因为有些字具有共同点,比如"你"和"他""使"这些字都有一个单人旁,如果按照单字进行刻模,重复刻单人旁显得有些浪费了,于是他把一些常用的偏旁刻出来,然后与其他独体字结合,这样就不用再另外刻这个组合起来的字了。

这个例子中工匠刻的单人旁和独体字放在一起组成了一个新的字,那么这个新的字就是一个实例,是由工匠刻好的模板制作出来的 而这个模板就是类。

关于继承,其实从字面意思我们也能够看出,就是当前类可以引用其他类中的实例,假如现在首富让你现在继承他的部分财产,那么你就对他名下的财产有使用权,你拿来买什么都可以。这个时候首富就是你的父类,而你继承了他的部分财产,你就是子类。

不过这里面还有一个细节,就是他只让你继承了部分财产,还有一部分你不能使用,这部分是他的私有财产,对你不公开,对他来说就是一个私有方法,而那些你能够使用的东西,对你们两个来说是公有的,叫做公有方法

芝士永不眠,我们下期再见。

猜您喜欢: