1.面向对象是什么?

面向对象(OO)

将问题中的涉及的事物抽象化,描述事物在问题不同阶段的状态和行为。

面向过程(PO)

将问题的解决步骤分析出后,按步骤依次执行直到得出结果。

面向对象则是在你思考完步骤后,找出其中涉及的事物,将步骤中的数据,行为归结到事物中进行分类,封装。将面向过程的步骤进行分类归纳,得到抽象的事物集合,符合人的思维逻辑,这样的话就是面向对象(个人理解)。

对象(Object)和实例(instance)

2.为什么要学习面向对象?

我们要开发一个应用程序,拿到需求后会思考如何去完成需求,第一步该怎么样,第二步该怎么样,若干步后完成,得到结果。这是一个面向过程的思考,如果步骤过于复杂,那将花费大量的时间精力,并且不可复用。啥意思呢?就是说你下次遇到相同的问题还是得再来一次一模一样的步骤,你说不怕,我还可以Ctrl+C,Ctrl+V,那么遇到类似的情况但稍微变动下细节,数据,顺序,是不是感觉还不如重写?面向过程的缺点就是可复用性太差,不易维护,对计算机而言简单,但人类的逻辑思维理解需要花费时间。那面向过程有什么优点呢?性能高,多应用于单片机,嵌入式开发。相对而言面向对象则需要进行实例化(instantiate),开销较大,用的资源较多(什么资源?《计算机组成原理》相关,未掌握)。

面向对象是符合人的逻辑思维,讲一个故事是由什么人做了什么事,围绕着人来展开一系列的活动,封装,继承,多态。师傅会内功,轻功,拳法,徒弟继承,友人、敌人对同一种拳法有不同的复现。面向对象的思想可以帮助人来更好地描述复杂问题建立系统,使得开发出的系统拥有更好的扩展性,便于别人来维护,对于相似的处理流程只需替换不同的数据,扩展独有的功能,使得基础的模块有很强的复用性。

3.学习面向对象的好处?

对于可能会不断变动的需求而言,面向对象就更加易于维护和扩展。