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

前言:

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

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

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

封装、继承、多态

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

抽象

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2)将对象进行抽象

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

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

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

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

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

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

结束语:

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ariel_欢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值