为什么要面向对象编程?

问题的由来,要从一块烤肉说起。6月一天晚上,小李摸了摸肚子,想趁着这温度刚好的夜晚,带着一天学习的充实感,去开心地吃烤肉串喝点啤酒。可是最近购物太多,花的太多,资金也不那么充裕,觉得晚上不应该再去加这餐。可这转念一想,饭得痛快地吃啊,用什么法子吃到呢?那不就得去赚钱,小李学的是计算机,那计算机不得学到技术才可以赚钱吃肉肉嘛。于是乎,小李痛定思痛并左右查资料,想得到学习经验和方法,更快地学好,为将来吃肉肉做准备。
以上是瞎写的小随笔,干杯~哈哈
数据结构和算法是必中必学。读到面向编程这一章的时候,里面出来和很多概念如模块化,抽象化,封装。这些概念我在起初理解的时候能从术语的角度理解,但是感觉不接地气,理解不够那么深刻。因为每一个伟大技术的诞生必然是因为解决了问题,所以在学习的路上我提出为什么要面对对象编程这一问题。查阅了一番资料,颇有心得。


zeroV5在《大话设计模式》中发现作者程杰对面向对象编程做出了一个解释,如下:
话说三国时期,曹操带领百万大军攻打东吴,大军在长江赤壁驻扎,军船连成一片。眼看就要灭了东吴,统一天下,曹操大悦,于是大宴众文武。在酒席间,曹操诗性大发,不觉吟道:“喝酒唱歌,人生真爽…”。众文武齐呼:”丞相好诗!“于是命印刷工匠刻版印刷,以便流传天下。
在这里插入图片描述
版样给曹操一看,曹操感觉不妥,说道”喝与唱,此话过俗,应改为‘对酒当歌’较好!“,于是命工匠重新雕刻。那时候,还没发明活字印刷术,如果样板要改,只能重头雕刻。工匠眼看连夜刻版之工,彻底白费,心中叫苦不迭。只得照办。
在这里插入图片描述
版样再次出来请曹操过目,曹操细细一品,觉得还是不好,说”人生真爽太过直接,应该改问语才够意境,因此应改为‘对酒当歌,人生几何?’“,于是…
在活字印刷术还没出现之前,如果版样有改动,只能重新雕刻。而且在印刷完成后,这个样板就失去了它的价值,如果需要其他样板只能重新雕刻。而活字印刷术的出现就大大改善了印刷技术。如上例”喝酒唱歌,人生真爽“,如果用活字印刷,只需要改四个字就可,其余工作都未白做。岂不快哉!!
在这里插入图片描述
活字印刷也反应了OOP。当要改动时,只需要改要改的地方,此为 可维护;当这些字用完后,并非就完全没有价值了,它完全可以在后来的印刷中重复使用,此乃 可复用;次诗若要加字,只需另刻字加入即可,这就是 可扩展;字的排列可以横排,也可以竖排,此是灵活性好。
这种重复,可再利用反映再面向对象编程(OOP)中其实就是面向对象设计的目标:

  • 可重用性:印刷块来回用,不用每次重新刻
  • 适应性
  • 健壮性:若是刻错了,只需改动一块就可以

当然以上是非常生动的类比,用此更深的理解OOP的目标我认为很合适。

原文链接:https://blog.csdn.net/u011700168/article/details/79161724


另一个例子,Gaosiy在博文为什么要用面向对象编程,它的优点是什么?中使用计算机中的例子也很好地解释了为什么要用面向对象编程。
在没有出现面向对象编程之前,计算机程序被用于解决某个问题是按步骤来的,比如把大象装进冰箱,需要分三个步骤。当然,这个例子不足以形容面向过程编程的形式,下面我用一个下棋游戏设计的例子来分别说一下面向过程编程和面向对象编程是怎么做的。
面向过程编程的设计思路:
步骤化分析问题:
1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、返回步骤2,9、输出最后结果。把上面每个步骤用分别的函数来实现,问题就解决了。

面向对象编程的设计思路

功能化分析问题:
要实现这个游戏你需要有三个功能,1.黑棋和白棋的走动 2.棋盘的画面绘制 3.裁判系统判断输赢。

有什么差别呢?比如我现在要改动规则,或者加一些高级功能,比如悔棋等等,面向过程你就需要把你的改动穿插到程序的实现步骤中,有的时候这是一件非常头疼的事情,不如重新写过。。面向对象的话,你改动期盼的绘制功能就行了,这样改动更方便,对程序影响也更小。这只是其中一个例子,其他的优点还有很多。

面向对象编程的优势

1.数据和方法(方法可以理解为函数)被封装在一起,这样做改动的时候对整个程序的影响不大。
2.通过继承减少代码的冗余。
3.易扩展
这些特点将在后续的博文中详细为大家介绍,有关于面向对象编程中的高大上名词:类,对象,封装,继承,多态,我将在后续的文章中尽量通俗易懂的进行解释。

原文链接:https://blog.csdn.net/huiyuanliyan/article/details/51726114


写在开始之后

设计好的代码不仅需要简单地理解面向对象的方法,更需要有效地利用面向对象的设计技术。所以,这也是给自己一个警醒,用技术实现想法是重中之重。更多实践才能遇到新的问题,多些思考,再多实践,才能解决问题。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值