深度理解面向对象的基础-抽象

Posted Ariel_欢

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度理解面向对象的基础-抽象相关的知识,希望对你有一定的参考价值。

前言:

面向对象这个词对于我们程序开发人员来说,应该都不陌生,我们总说开发要面向对象,但实际上在编写代码的过程中,很多人虽然实现了封装、继承、多态但却不是面向对象的程序设计,而是面向过程的实现逻辑,徒有面向对象的形,却没有面向对象的魂。

今天我们首先来深度理解一下面向对象的基础——抽象!!!

1、面向对象的三大特征是什么?

封装、继承、多态

2、面向对象的基础是什么?

抽象

3、为什么说面向对象的基础是抽象?

什么是抽象?抽象就是把事物的信息细节进行提炼、抽象,找到事物的本质和重要属性,以求简化、概括所观察到的现实世界,并为人们所用。抽象包括两个方面,一是过程抽象,二是数据抽象。抽象是一个具体到一般化的过程,是将具有共性的事物共同点抽象出来。

4、那如何找到事物的共同点?如何将公共内容抽象出来?如何将公共内容抽象出来?

先来思考这两个问题:如何理解下面两句话?这与面向对象的抽象有什么关系?

1)我们要注重多少人来干事,而不是干多少事。

2)我们要注重谁来干事,而不是怎么干事。

①如何理解:字面上看,两句话都提到了“注重”,“注重多少人来干事”和“注重谁来干事”注重的都是“谁”——主语,而不是如何干事或者干多少事。换言之我们要注重的是对象,重点是对象。

②那这两句话又与面向对象的抽象有什么关系呢?

在面向对象的开发过程中,对象是最重要的,而不是方法。对象是一等公民!!!在抽象的过程中,我们要注重的是对象,而不是过程。

举例说明:A让B打杯水的故事:

分析这句话(A让B打杯水):这句话中说了A“让”B去打杯水,这就是典型的面向过程。不要说 “让谁”!!!(用得着你管别人吗),而是应该关注“谁”,“让谁”就是面向过程的思想,考虑了实现步骤,

从面向对象的角度思考:抽象的首先不是怎么去实现,而是对象

在抽象的过程中,我们要注重的是对象,而不是过程。那么在打水这个事情中,我们应该关注的是对象,如何从面向对象的角度将对象抽象出来呢?

1)把所有可能的对象罗列

a.场地 b.打水人 c.打水工具 d.收水人 e.水 等等

2)将对象进行抽象

即对象在哪,有谁,用什么工具,给谁做事; 所以抽象出来的类:场所、参与者(打水人、收水人)、工具、参数/材料(水)

3)实现代码自动化,使用工厂方法等

打水这个事情来理解上边的那两句话;

1.我们要注重多少对象来干事,而不是干多少事

2.我们要注重哪个对象来干事,而不是怎么干事。

打水这个过程,要做的事情有很多,把这件事拆分成很多个不同的对象(打水人、受水人)去做这个事情,关注是这件事情有谁!!!

结束语:

要想理解面向对象的思想,最重要的就是理解抽象,抽象是面向对象中最基础、最重要、最关键的。

以上是关于深度理解面向对象的基础-抽象的主要内容,如果未能解决你的问题,请参考以下文章

重新认识面向对象

重新认识面向对象

Java基础04_面向对象

python基础--面向对象

Python面向对象之为何要用类

深入理解Java面向对象三大特性 封装 继承 多态