我的姐夫是大學新生工程專業。他沒有任何編程經驗。他在課堂上學習編程,但他似乎在與基本概念鬥爭。這並不意味着他似乎是所有課程中唯一沒有編程背景的人。如何向初學者描述面向對象的編程?有一個很好的現實世界的比喻?
他在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;
}
}
我說,汽車類就像一個汽車廠,並var mySedan = new Car(12, 20)
是像一個12加侖的油箱和20英里生產新車。然後,我向他展示瞭如何運行這些方法,就像汽車發生了事情。
然後,我做了第二輛車:var myMiniVan = new Car(21.5, 14)
並顯示了一輛車上的運行方式如何不影響另一輛車。
但他沒有得到它。所有這一切都在他的頭上。有沒有更好或更簡單的視覺比喻我可以使用?我解釋錯了嗎?
總是有 動物,人,貓,老虎學習OOP :) – 2011-01-26 13:14:01