原理:大话面向对象(一):理解面向对象
作者:强哥   类别:PHP开发    日期:2017-11-21 12:14:59    阅读:1795 次   消耗积分:0 分

要学好程序设计,我们首要的必修课就是程序设计中的面向对象相关的原理和基本概念。


20171121_121409.jpg


何为面向对象呢?要理解面向对象,我们先来看看与面向对象相对应的另外一种程序设计方法:面向过程。

面向过程的编程的基本构成便是“过程”,过程实现的方式就是“函数”,我们通过不同函数来实现不同的功能,并按照程序的执行顺序调用相应的函数,组 成一个完整的可以运行的应用程序。我们可以通过把不同的功能在不同的函数中实现或者给函数传递不同的参数来实现不同的功能,这是面向过程中模块化设计的原理。


但是面向过程有很多问题,当我们总是按照教科书上的小例子来学习程序设计时是永远也体会不到面向过程中存在的这些问题的,反而会觉得面向过程更简 单,更容易理解。而事实是当我们设计一些大型的应用的时候你将会发现使用面向过程编程是多么的痛苦和无奈,代码极难维护,我们不得不为相似功能设计不同的 函数,天长日久,代码量越来越大,函数越来越多,而重复的代码越来越多,噩梦就此产生。

于是乎产生了另外一种设计思想:面向对象,从此程序员发现编程是多么快乐的一件事情。我们可以把现实世界的很多哲学思想或者模型应用于编程,这是计算机的一次伟大的革命。那么究竟何为面向对象?要理解这两个重要的字“对象“,我们首先需要理解一下类和实例:


举一个简单的例子,大家都会下五子棋,我们就以开发一个五子棋的游戏来讲解面向过程和面向对象最本质的区别,在早期以面向过程为主要开发方法时,我们是这样来设计这个游戏的:
1) 开始游戏
2) 黑方出子
3) 绘制画面
4) 判断胜负
5) 白方出子
6) 绘制画面
7) 判断胜负
8) 循环2、3、4、5、6、7步
9) 输出结果
最后将每一个步骤作为一个处理函数开发出来,每次运行都调用一遍函数(或者过程)。面向过程最关键的概念就是“过程”,所以程序运行都是一步接一步,从上往下。


而面向对象的设计则是从另外的思路来解决问题。整个五子棋可以分为:
1) 黑白双方:负责出子和悔棋
2) 棋盘系统:负责绘制画面
3) 规则系统:负责判定诸如犯规、输赢等
4) 输入输出系统:负责接收黑白子放的位置信息和输出游戏过程中的相关信息

这就是面向对象,更强调将程序模块化,我们甚至可以将该程序抽象出来使其适用于五子棋和围棋(它们除了规则不一样以外没有其它区别,那么我们只需要修改规则系统便可轻易支持围棋)。


20171121_121436.jpg


版权所有,转载本站文章请注明出处:蜗牛笔记, http://www.woniunote.com/article/13
上一篇:原理:强哥倾情奉献:软件测试最全专业术语
下一篇:原理:大话面向对象(二):类与实例
${comment['nickname']}   ${comment['createtime']}
  
       
${comment.content}
${reply.nickname} 回复 ${comment.nickname}    ${reply.createtime}
     
  
回复内容:${reply.content}