面向对象与叫化鸡比喻(与新手分享)
时间:2008-06-30
来源:互联网
不知哪个比喻更能让你明白呢?
理解面向对象编程 (Object Oriented Programming 简称OOP)
所谓"面向对象编程",其实指的是一种编程思想模式。与之对应的是"面向过程编程"。
两者有什么区别?
我们先展开一下想象,话说你想请洪七公吃叫化鸡。
按照现代的做法,是将一只鸡杀死拔毛之后清洗干净鸡腔内脏,并在里面填充上适当的调味料,
接着用锡纸包起这个鸡并在外面涂上泥巴,最后丢进炭火里煨熟,
估算时间差不多后,将鸡取出来拍开泥土,剥开锡纸再送到七公手上...
这种做法就是面向过程模式。
但你是一个头脑很发达的人,你制造出一台新型的全自动化“烤叫化鸡”机器,
只要在这机器指定的入口扔一个鸡进去,这台机器运作后就会在另一个出口输送出一个香喷喷的叫化鸡。
这种做法就是面向对象模式。
很明显,面向过程的制作叫化鸡方法,采用的是按顺序按步骤得到叫化鸡。
我们将这些步骤抽取出关键词对应编程的术语,每个关键词代表一个功能函数:
杀鸡-拔毛-清洗-填料-包锡纸-涂泥巴-煨熟-取出-拍泥土
怎么样,一目了然易于理解是吧。
再来看面向对象方式的制作叫化鸡:
制造一台全自动化机器--往入口扔一只鸡--往出口取一只鸡。
就这么简单。
你不必理会机器内部怎么杀怎么清洗...怎么运作的。
只要知道这台机器的用途是制作叫化鸡,
操作方法是往入口丢一只鸡进去,再从出口拿这只鸡出来就行。
通过这个比喻,我们来进一步来了解面向对象的特点:
1 只做一只叫化鸡时面向过程比较方便和易于理解。但要量产时无疑是选择面向对象。
2 面向对象要构思机器的制造方法,在机器内部来设定上面所述的那些功能函数。
而外部只能操作入口放只鸡进去和在出口取只鸡出来,如果有控制键,还可以只操作其中部分功能,
比如仅仅是杀鸡并拔毛(这就是构建类函数并封装,封装后那些功能函数只能调用。)
3 通过使用这台机器会制造出一个个的叫化鸡。(类的实例化结果就是对象)
4 如果用这机器制造10只叫化鸡,每个生产出来的叫化鸡咸淡味感都是一样的。(类的对象有相同的属性)
5 把这10只鸡其中一只撒上辣椒或撕下一条鸡腿,其余九只不会因此而有辣味或缺条腿。
(增加或减少对象属性的任何 操作都不影响到同类的对象属性)
6 如果将机器的调料设定改变,生产出来(实例化)的鸡口味也会改变(这就是类和对象的关系)
7 生产出来的叫化鸡七公嫌太熟且味道淡了些,只要将机器内部的烤温降低并增加盐的份量就行了。(面向对象易于维护和改进)
8 七公吃了一个觉得不够还想吃,甚至要发放到丐帮人均一只叫化鸡,这问题第1点的量产提到啦
(所以面向对象模式更适合项目规模大的需要)
9 每个丐帮人员口味需求不一样,一个叫化鸡而已,居然有的要甜有的要酸,不过难不倒这机器,另外加料就行,
除了口味不一样其它的还是一样。不用重新设计一台机器(用继承来重用代码)
10 有个叫鲁有脚的长老竟然异想天开想吃叫化鸭。没问题啊,叫化鸡叫化鸭叫化鹅都行的。抓只鸭子丢进机器就可以。
(这就是对象的多态性,参数由鸡改成鸭)
关于面向对象的理论知识就暂时讲解到这里了。。。本人学艺未精,比喻不恰当的请各位指正。
作者: zzguo28 发布时间: 2008-06-30
作者: ShiningRay 发布时间: 2008-06-30



作者: nianjin 发布时间: 2008-06-30
作者: lucas1860 发布时间: 2008-06-30
引用:
原帖由 ShiningRay 于 2008-6-30 13:43 发表我觉得解释地反而复杂了
作者: zzguo28 发布时间: 2008-07-03

作者: 生命如蓝 发布时间: 2008-07-03
作者: d9tx 发布时间: 2008-07-03

作者: cnangel 发布时间: 2008-07-06
作者: 奇将射天狼 发布时间: 2008-07-17
作者: fei 发布时间: 2008-07-27
作者: longkingcx 发布时间: 2008-08-12
不过这个比喻还挺贴切的
作者: elsonwu 发布时间: 2008-08-13
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28