1
6
我见过它被描述为人是一个阶级,而史蒂夫是一个对象(人的例子)。史蒂夫有一头金发,身高6英尺,体重180磅,等等。 你可以继承,所以人继承人,人继承动物,然后继续。 |
2
4
我认为你不应该用类比的方式思考,而应该用一个解释性的例子。人们已经以面向对象的方式思考了,只要告诉他们一个对象就是一件事,一个类就是一件事。
向他们展示
|
3
2
当我通常考虑类和对象之间的区别时,我通常倾向于将类看作一个蓝图。也许你可以把一个类比作蓝图,把一个物体比作房子?
|
4
1
我不是机械师,但我经常用汽车作为多态性和层次结构的高级示例。 我们有车辆,可以让我们四处走动的东西,还有方法和属性,比如move()或park()或passengercount。例如轿车、货车、卡车和自行车。轿车可能有turnonlights()、gallonsofgas等方法和属性,但轿车下面可能是警车。警车可以有新的方法和参数,并重新定义一些轿车的方法和属性,例如,警车的turnonlights()方法比轿车能做的要多得多。 就实例而言,你可以向他们解释你的车是轿车的一个实例。它是蓝色的,有7加仑汽油,可以打开它的灯。只要走过一个停车场,指出例子:“那是一辆货车,那是一辆轿车,这是一辆自行车。”不要把他们当作傻子对待,而是告诉他们这是一个定义,并把它与他们已经知道的定义联系起来。在旁注中,讨论停车场是如何成为一系列车辆对象的。停车场不在乎它是什么样的车。 有很多不同的方法可以将私有方法和公共方法联系起来。比如,如果你的车不知道另一辆车有多少汽油,或者类似的东西。 如果他们很流行,你可以通过说每辆轿车(让我们现在自动简化事情)都有相同的界面来描述他们的界面。它们都提供了相同的转向、加速、制动、显示汽油和里程等方法。这些功能的实际工作方式各不相同,但所有轿车都采用相同的方法。由于这个接口,驱动器不需要知道引擎是如何显式工作的。 |
5
0
我发现汽车类比对于入门级的模型很有效。
第一章“C++中的思维”有一个很好的对象模型介绍: http://www.smart2help.com/e-books/ticpp-2nd-ed-vol-one/Frames.html |
6
0
当向初学者解释OOP时,我发现引导我们生活的世界是由物体和相互作用的物体组成的这一想法很有用。我喜欢关注一些关键的类比,这些类比显示了对象是什么,它们可以以不同的方式组合和关联,以及这些对象最终如何相互作用: 类比1:我将描述一个汽车引擎和组成它的不同部分,这让我了解到如何使用对象来组成不同的对象。 类比2:我将描述一些类似于足球队的东西,并说明在这种情况下,我们可能有一些不是由其他物体组成的物体,而是与其他物体(如其他球员、足球、场地等)交互的物体。我发现这有助于理解物体是如何相互作用和影响另一物体的。如果你喜欢的话,你也可以在这里加入一些继承概念(例如,所有球员如何扩展足球运动员或运动员或类似的东西),但是记住,你希望保持简单。 |
7
0
我更喜欢将对象比作人,通过相互交流来实现某个目标。 在这个类比中,一个类可能更像一个角色或一个工作描述:bob(object)是一个会计(class)。 对于初学者来说,这并不是典型的“以事物为中心”的设计,但我相信它在帮助教授控制反转和责任分配等概念方面有很大的帮助。 |
8
0
如果你想深入思考, 工业主义 说了很多面向对象编程。在面向对象编程中, 一类 被视为一名员工/个人。 一种方法 被视为员工/个人拥有的一个流程/技能/信息。 一揽子 被认为是一家公司。 重要: 总是把它想成是你自己的工业公司。你是经理。执行官!你让人/员工/班级工作!那么,如果你真的擅长这个:
不要对你的人民太粗鲁,否则他们会反抗的。( 当然,这不会发生。 ) |
John V · 是否存在单元测试无法发现的逻辑/流错误类型? 6 年前 |
Beefster · 为什么ANSI颜色转义以“m”而不是“]”结尾? 6 年前 |
Guillermo Gutiérrez · STR转换是如何工作的? 6 年前 |
RudziankoÅ · 合并排序数组算法 7 年前 |
user8852560 · 构造函数中的验证和构造函数冲突 7 年前 |
jav974 · 订购产品时寻找最佳价格组合的算法 7 年前 |
hippietrail · 确定浮点数中前导零的数量 7 年前 |