什么是面对对象呢?
万物皆对象。首先要知道什么是对象。一只猫,一条狗,一个人,都是对象,这是对象的概念。
提到面对对象,必不可少的就要提到面对过程,那么这两者有什么区别呢?
面对对象和面对过程,其实比不是非此即彼的对立面,而是开发过程中,思考解决问题的两种思考方式。
面对过程是通过思考问题解决的过程,一步一步进行开发。
例如五子棋五子棋,a
面向过程的设计思路就是首先分析问题的步骤:1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、返回步骤2,9、输出最后结果。
面对过程的缺点:如果我们要增加一个悔棋的功能,如果面对过程设计,从输入到判断到显示这一连串的步骤都需改动,甚至步骤之间的循序都要进行大规模调整,若面对对象,只用改动期盼对象就行了。
缺点:(1)需深入思考(2)代码重用率低(3)扩展能力差,维护能力差
相对的,面对过程的缺点就是面对对象的优点:(1)结构清晰(2)封装性,代码重用(3)扩展能力强,维护能力强
面对对象是通过先设计出下棋的对象,再设计对象的行为,属性。
例如一个留言板:
面对对象的设计思路就是:设计一个留言板类,留言板的属性:时间,日期,文档等,留言板的行文:增删改查等。
面对对象的优缺点:如果是一个流量很大的留言板,每天的增加几万条,就需要与留言板交互几万次。若面对过程,就只需要解决增加的过程就行了。
缺点:(1)增加工作量(2)性能低
面对对象的缺点就是面对过程的优点:(1)流程化任务明确(2)性能高(3)具体步骤清楚
下面回到原问题什么是面对对象:那就是面对对象的三大特征:继承、多态、封装。在我看来,这三种特征都是与面对对象语言的几个优点:代码复用和功能扩展相关的
封装:使代码模块化,把数据和过程封装起来,便于复用。
继承:活生生的代码复用和功能扩展
多态:主要包括:重载和重写 主要体现在接口和抽象类。 也是功能的扩展
具体的三种特征怎么用的,等我有时间再整理吧
更多内容请关注微信公众号“外里科技”