一、面向对象的特征和基础
特征
封装、继承、多态
基础
抽象
二、为什么说面向对象的基础是抽象?
想要真正理解这句话,先看一下下面的这个问题:
如何理解下面这句话?这与面向对象的抽象有什么关系?
1)我们要注重多少人来干事,而不是干多少事。
2)我们要注重谁来干事,而不是怎么干事。
分析:
我们先从这两句话的字面意思来分析,我们在分析的过程中需要转变对于这句话的重心,从以事为主转换为以人为主(以主语为主)。比如干多少事是陈述这件事有多少,还是以事为主,关注的是事件相关的内容,从软件设计的角度分析来讲还是以面向过程为主,而“注重多少人来干事”是从人的角度来思考这件事,我们切换了对这件事的一个关注点,从事转换到了人,从软件设计的角度来讲就是,从面向过程的角度分析问题转换为了从面向对象的角度来分析问题。第二句话也是同上。
举例:
但是单从分析这两句话可能还是不够通俗易懂,我举一个例子:“我去给你打杯水。”我们分别从面向过程的角度和面向对象的角度来分析这句话。
面向过程:“我”和“你”这两个主体都参与到了“去打水”这件事中。我们是围绕着“打杯水”去分析的
面向对象:我们先将这句话尽可能的分解出多个对象,这句话中“我”、“你”、“水”、“装水的容器”、“打水的地点”。这些都是我们通过这句话分解出来的对象,我们可以将这些对象进行分类、封装,比如这句话中的“我”和“你”其实再抽象可以抽象为“参与者”,我们在这么分析了之后,对这句话的理解就转换为以对象为主体的面向对象思维了,这个时候我们再去通过实例化对应的具体类就可以代码开发了。
三、怎么从面向对象的角度分析
这里我整理了几个具体的步骤,来帮助大家去从面向对象的角度分析问题和业务:
1.第一步,将抽象出的对象罗列出来
例如:拆分业务中的对象主体,将“我去给你打水”拆分出“我”、“你”、“水”、“装水的容器”、“打水的地点”这些对象。
2.第二步,再对抽象出来的对象进行合并和分类和进一步的抽象(可以视情况,更进一步的抽象)
3.例如:参与者、使用的工具、地点(ui、页面)、材料(参数)
第三步,实现代码自动化,使用工厂方法。
四、总结
要想理解面向对象的思想,最重要的就是理解抽象,抽象是面向对象中最基础、最重要、最关键的。我们在从业务中抽象出需要分析的对象的时候不要仅仅停留于表面的对象,还要注意这其中包含一些透明的对象,我们只有能够将这些透明的、虚拟的对象抽象出来才是最重要的。