深度理解面向对象的基础-抽象
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.我们要注重哪个对象来干事,而不是怎么干事。
打水这个过程,要做的事情有很多,把这件事拆分成很多个不同的对象(打水人、受水人)去做这个事情,关注是这件事情有谁!!!
结束语:
要想理解面向对象的思想,最重要的就是理解抽象,抽象是面向对象中最基础、最重要、最关键的。
以上是关于深度理解面向对象的基础-抽象的主要内容,如果未能解决你的问题,请参考以下文章