黑马程序员技术交流社区
标题:
阿狗老师教学之从面向对象编程思想的三种境界
[打印本页]
作者:
企业部-阿狗老师
时间:
2016-5-13 15:13
标题:
阿狗老师教学之从面向对象编程思想的三种境界
最近,一些同学很苦恼,他们知道我们老师在计算机学习方面有一定的深入,就跑来问我很多问题,其中一个普遍的问题就是:“面向对象到底是什么?”
其实,在我最早学习代码的时候,遇到的第一个难题就是这个,当时,我花了很多时间,通过了各种渠道,才算弄懂了这个问题。但我花了不少功夫给同学们讲,他们表示并不是太懂。于是回想当时学习面向对象的经历,尝试把学到的内容提炼出来,讲给他们听,果然有所成效。
第一重境界:拟物,让概念具象
①什么是面向对象?
收音机怎么使用?相信大家都会。但收音机由什么组成呢?相信大家都不知道了。这便是面向对象,即
使用对象时,只关注对象提供的功能,不关注内部细节。
②什么是对象?什么是属性和方法?
收音机由一大堆零件构成,被组合和包装后提供相应的功能。故
对象是一个整体,对外提供一些操作。
它的外壳是塑料,按钮是金属。这就是对象的
属性
。按下其中一个按钮就可以播放接收到的声音,这就是对象的
方法。
③面向对象有哪些特点?(封装、继承、多态,但对于他们,先只讲封装和继承)
我们把收音机包装起来,不在乎它的内部结构。这就好比是
封装
,即
不考虑内部实现,只考虑功能使用。比如说:
class Clock
{
public: //共有成员,外部接口
void SetTime(int NewH,int NewM,int NewS);
void ShowTime();
private: //私有成员,外部无法访问
int Hour,Minute,Second;
}
我们想改装收音机,使得它便携,我们就给手机加上一个手柄,这样得到的东西,拥有收音机全部的特性和功能,但又多了自己的特性和功能。这就是
继承
,即
从已有基类上,派生出新的基类。比如说:
classDerive:privateBase1,publicBase2{};
这样,他们就对面向对象有了基本的概念,而且纷纷表示我讲的他们都明白了,这让我很有成就感。但是,很快问题就出现了,他们很快就跑来问各种问题——类和对象有什么区别?继承里面的pubilic、private等到底是什么?……问题一个接一个,我发觉并不能一次性有效地解决完,于是我开始反省,我的确用拟物让概念具象,但面向对象是一个不小的知识体系,想一下子讲清楚很难,但
概念与概念间没有产生联系
,所以他们不能够自行解决问题,于是我调整了讲法,使得整体的思路更加清晰。
第二重境界:系统图加讲故事,让概念成体系。
面向对象系统图
我就先讲故事:从前有一群工人,负责生产收音机,造出来的收音机各式各样,但用的材料和提供的功能是相同的,于是有一天有个人就造了一台机器,这台机器可以生产无数台收音机。
这台机器就是类,这个收音机就是对象
,而收音机怎么使用呢?(见上第一重境界)……
在这个故事里,我用了连贯的手法叙述所有的概念,使得他们一目了然,再结合系统图,使得他们对面向对象的有了整体的把握,这样
问问题的同学越来越少,因为他们终于有了自学的能力。
第三重境界:教学相长,品物外之趣
经过这次的“教学经历”,我也体验了一盘小老师的乐趣,可以说学习十几年,作为学生,我们最熟悉的职业是教师,所以我一直也在思考
究竟什么样的方式才是真正好的教学方式
。我身边有很多好老师,甘于奉献,循循善诱,他们一直想让教育回归本质。我想这次的经历或许能带来某些启示,即
用正确的方式让学生了解整个课程体系,用巧妙的方式激发他们的兴趣和潜能,再让他们根据自己的兴趣和能力选择一方面深入学习,这样的教育可能才更加接近本质
。
值得一提的是,后来一个同学跑来问我,既然现在都有了造收音机的机器了,那我们为什么还要拼命去学习怎么造收音机呢?
这个问题很好,我当时没有立刻回答。我经过了一夜的思考,告诉他:“虽然我们有了这么多机器,但都是别人制造的,我们
要想真正的创新,就首先要追本溯源去学习原理
,这就好比英文虽然有无数个单词,但都是由26个字母按照一定的规则排列的
,学习这些基本的原理,不仅更容易让我们记住这些单词,还给我们提供了制造新词语的能力
。同理,计算机语言学习亦是如此。”
这不就是
教学相长
么?
赚到就要给
(奉献)
,学到就要教
(传承)
。况且,在帮助他人的同时,我们的能力、思想和境界就能更上一层楼.
作者:
橘子哥
时间:
2016-5-13 15:38
阿狗老师出品,次次都是精品啊,顶顶顶!!!
作者:
zhangguojian
时间:
2016-5-13 22:06
给打一百分不怕你骄傲
作者:
結断的时光
时间:
2016-5-14 21:04
顶顶顶!!!
作者:
ddong1031
时间:
2016-5-14 21:21
顶顶顶 !!!
作者:
xiwang0413
时间:
2016-5-14 21:35
都是心得 啊 厉害
作者:
wkong
时间:
2016-5-16 22:05
学习。。。。
作者:
New灬狼
时间:
2016-5-16 22:20
讲的很好啊,顶起来
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2