我的姐夫是一名大学工程专业的新生。他之前没有编程经验。他正在课堂上学习编程,但他似乎在基本概念上遇到了困难。更糟糕的是,他似乎是所有班级中唯一没有编程背景的人。
他在 Matlab 上做得很好(我不知道),然后当他学习 Python 基础知识时我帮助他。很快他的课程将开始 C 和 C++。我担心当面向对象编程出现时他会被抛在后面。
我试着用汽车的比喻向他解释。
伪代码:
Class Car
{
public string make;
public string model;
private string milesPerGallon;
private float gasolineGallonsInTank = 0;
private float tankCapacity;
private float odometer = 0;
public Car(maxGas, mpg)
{
tankCapacity = maxGas;
milesPerGallon = mpg;
}
public void fillTank()
{
gasolineGallonsInTank = tankCapacity;
}
public void drive(float miles)
{
if (miles == 0)
{
print("You don't want to drive?");
return;
}
if(miles < 0)
{
print("Ok, we're driving in reverse!");
miles = Math.AbsoluteValue(miles);
}
float maxDistance = gasolineGallonsInTank / milesPerGallon;
if (maxDistance >= miles)
{
odometer += maxDistance;
gasolineGallonsInTank = 0;
print("You've run out of gas!");
return;
}
odometer += miles;
gasolineGallonsInTank -= miles / milesPerGallon;
}
public float readOdometer()
{
return odometer;
}
}
我说过 Car 类就像一个汽车工厂,并且var mySedan = new Car(12, 20)
就像生产一辆配备 12 加仑油箱、每加仑 20 英里的新车。然后我向他展示了如何运行这些方法,就像汽车上发生了一些事情一样。
然后我又做了第二辆车:var myMiniVan = new Car(21.5, 14)
并展示了一辆汽车的运行方法如何不会影响另一辆汽车。
但他没有明白。所有这一切都超出了他的理解范围。我可以使用更好或更简单的视觉类比吗?我解释错了吗?
我们老师用的是:
- 汽车及其组件 - 解释类、字段、方法,并展示什么是聚合和组合
- 动物(人、老虎和猫,正是:)) - 解释继承
- 形状 - 解释更多的继承和多态性
另外,据我记得,有一些很好的例子.
在第一次 OOP 研讨会上,我们做了一个相当不寻常的有趣练习:我们用 C(而不是 C++)实现“类”。我们必须使用结构体和函数指针——这让我们感觉到,什么是状态,什么是行为,什么是类和对象。然后我们继续C++。
UPDATE
我刚刚想起了基本 OOP 概念的另一个很好的描述性示例:GUI 组件(按钮、文本框、标题、对话框)。这些例子并不像动物和汽车那样“抽象”,而且相当具有描述性——结果可以立即看到。
GUI 框架有很多,你可以建议你的兄弟使用其中之一。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)