本課簡介
此課主要在延續上一課的介紹
講解不同種類的 method
以及看一下如何使用物件來互動
教學影片
注意:影片有高畫質 720P 的選項,可以看得更清楚喔!
重點提示
1. 如果沒有輸出值的話,就要用 void 代替輸出值
void 代表「沒有任何值」
2. 如果要取得輸入值的話,必須用類似宣告變數的方式宣告輸入值
例如:talk 這個 method 有兩個輸入值,字串 sname 與數字 sgrade
那就要打成 p.... talk(string sname, int sgrade) { 定義 method }
3. 將資料包裝成物件可以幫助重複使用資料
4. 將物件傳入其他物件的 method 中使用就是一種「物件互動」的方式
練習
請建立一個車子的 Class,並且新增兩個 method,分別叫做 speedUp 與 crash
把車子剛建立時的速度設為 0,並建立兩輛車子 A, B
假設 A, B 這兩輛車子相向而行
如果呼叫 speedUp() 就會加速(Ex: +10 km/hr)
然後 crash 接受一個輸入值,代表被撞的車
呼叫 crash 就會輸出字串「XX 車撞上 YY 車」
請模擬 A 車以 100 km/hr 的速度撞上 B 車
Hint: 你可能需要一個 property 紀錄速度,然後用 for 迴圈加速個幾次
有時我喜歡看天線寶寶,因為很單純~
回覆刪除小山您好~ 加速那個不會寫,可以請老師講解嗎?
回覆刪除直接在button寫 for迴圈
刪除class裡 宣告一個"speed"紀錄現在速度
如果不到100就繼續加10 直到100
for(car.speed = 0;car.speed<=100;car.speed = car.speed+10)
謝謝你的教學影片,獲益良多
刪除想請問加速的部分
如果for loop直接寫在button裡面
看起來應該就不會用到speedUp這個method了?
speedUp 這個 method 的目的是要讓外界有個手段控制車子的速度
刪除這個練習題希望大家在寫的時候不要直接修用 Car 的 property
而是透過呼叫 10 次 speedUp 來達成這個目的
這是我寫的,每按一下Button可以顯示A車目前時速,到100KM會顯示A車撞上B車
刪除小山老師不知道這樣算不算有正確解答呢?
Car.cs:
class Car
{
public string aCar;
public string bCar;
public int speed;
public string speedUp(Car c)
{
return aCar + "目前速度為" + c.speed + " km/hr";
}
public string crash(Car c2)
{
return aCar + "撞上" + c2.bCar;
}
}
Form1.cs
Car c = new Car();
c.aCar = "Benz";
for (c.speed = 0; c.speed <= 100; c.speed += 10)
{
MessageBox.Show(c.speedUp(c));
if (c.speed == 100)
{
Car c2 = new Car();
c2.bCar = "BMW";
MessageBox.Show(c.crash(c2));
}
}
作者已經移除這則留言。
刪除return aCar + "目前速度為" + c.speed + " km/hr";
刪除寫
return aCar + "目前速度為" + speed + " km/hr";
就可以了吧
使用C的方法已經把所有c的數值都帶入了
不用再刻意寫一次
public string speedUp(Car c)
刪除Messagebox.show(c.speedUp(c))
Messagebox.show(c.crash(c2))
請問Car c 跟括號裡的c與c2是什麼意思?
我設定之後 我一直讀不到 seepup的值
回覆刪除這樣我可能不太容易判斷到底哪裡出了問題
刪除你可以先用滑鼠移到錯誤的地方上面
看看錯誤訊息顯示甚麼
作者已經移除這則留言。
回覆刪除小山老師好,請您指導以下是否正確?謝謝您
回覆刪除Car.cs→
class Car
{
//property
public int Speed;
public string CarName;
//method
public string SpeedUp()
{
return "目前"+ CarName + "車速:" + Speed;
}
public string Crash(Car a)
{
return CarName + "撞上" + a.CarName;
}
}
form1.cs的button→
private void button1_Click(object sender, EventArgs e)
{
Car bmw = new Car();
bmw.CarName = "BMW";
bmw.Speed = 0;
MessageBox.Show (bmw.SpeedUp());
Car vovo = new Car();
vovo.CarName = "VOVO";
for (bmw.Speed = 10; bmw.Speed <=100; bmw.Speed += 10)
{
MessageBox.Show(bmw.CarName + "目前車速:" + bmw.Speed + ",加速中~~");
}
MessageBox.Show(bmw.Crash(vovo));
}
不知道這個答案是不是小山老師要我們練習的
回覆刪除也感謝樓上幾位同學的分享~
form1.cs
car c = new car();//事件1>車子行駛
c.name = "BMW";
for(c.speed = 0; c.speed <= 100; c.speed += 10)//每呼叫一次speedUP+10 km/hr
{
MessageBox.Show(c.speedUP());//紀錄速度
}
car c2 = new car();//事件2>車禍
c2.name = "toyota";//被撞的車
c.speed = 100;//模擬 A 車以 100 km/hr 的速度撞上 B 車
MessageBox.Show(c.crash(c2));
car.cs
class car
{
public int speed;//紀錄速度
public string name;//雙方車輛
public string speedUP()//行駛
{
return name + "正在以" + speed + "km/hr的速度行駛";
}
public string crash(car c)//發生車禍
{
return name +"以"+speed+"km/hr的速度撞上"+c.name;
}
謝謝小山 老師
回覆刪除還請指教是否正確
class Car
{
public string color;
public int spee;
public int speedUp() {
return spee = spee + 10;
}
public string crash(Car c) {
return color + "車撞上" + c.color +"車" ;
}
}
------------Form1.cs-----------------------------------------
Car BB = new Car();
BB.color = "黃色";
BB.spee = 0;
Car CC = new Car();
CC.color = "紅色";
CC.spee = 0;
int totalSpeed;
while (BB.spee<100) {
totalSpeed = BB.speedUp();
MessageBox.Show("速度"+BB.spee);
if (totalSpeed == 100) {
MessageBox.Show(BB.crash(CC));
}
}
謝謝小山老師的教導
回覆刪除看到老師出的練習題 我只能寫出比較簡單的出來...
Class1.cs
public string SpeedUP()
{
return "A車目前以時速" + Grabe + "前進";
}
public string crash()
{
return "A車在時速" + Grabe + "速度下撞上了B車";
}
Form1.cs
Class1 s = new Class1();
s.Grabe = 10;
for (s.Grabe = 10; s.Grabe <= 100; s.Grabe += 10)
{
MessageBox.Show(s.SpeedUP());
if (s.Grabe == 100)
{
MessageBox.Show(s.crash());
}
}
用之前學的 numericUpDown 再配合 class 來計算 A / B 車誰先到達目的地 :3
回覆刪除/* Class Code */
class Car
{
public double speed;
public double distance;
public string SaySpeed(Car car1, Car car2)
{
return "A車正在以每小時 " + car1.speed + " 公里行駛\n" +
"B車正在以每小時 " + car2.speed + " 公里行駛";
}
public string CalculationTime(Car car1, Car car2)
{
double car1Time = distance / car1.speed;
double car2Time = distance / car2.speed;
if (car1Time < car2Time)
return "A車會先到達";
else if (car1Time == car2Time)
return "A車和B車同時到達";
else
return "B車會先到達";
}
}
/* Button Code */
private void button1_Click(object sender, EventArgs e)
{
Car car1 = new Car();
car1.speed = (double)NUDspeedCar1.Value;
car1.distance = (double)NUDdistance.Value;
Car car2 = new Car();
car2.speed = (double)NUDspeedCar2.Value;
car2.distance = (double)NUDdistance.Value;
MessageBox.Show(car1.SaySpeed(car1, car2));
MessageBox.Show(car1.CalculationTime(car1, car2));
}
}
我來交作業了~
回覆刪除class Car
{
public string color;
public string name;
public int Speed;
public string Run()
{
return color + "的"+name+"車正在以" + Speed + "km/hr速度前進";
}
public void SpeedUp()
{
Speed = Speed + 10;
}
public string crash(Car c)
{
return name + "車以" + Speed + "km/hr速度撞上了" + c.name + "車";
}
}
}
private void Button1_Click(object sender, EventArgs e)
{
Car c = new Car();
c.name = "A車";
c.color = "紅色";
c.Speed = 0;
Car c2 = new Car();
c2.name = "B車";
c2.color = "藍色";
c2.Speed = 50;
for(int i = 0; i <10; i++)
{
c.SpeedUp();
MessageBox.Show(c.Run());
MessageBox.Show(c2.Run());
if (c.Speed == 100)
{
MessageBox.Show(c.crash(c2));
}
}
}
不確定是不是老師要我做的 但我還是來交作業了
回覆刪除class Caraccident
{
public int nowspeed;
public string A;
public string B;
public string crash()
{
return A + "車撞上" + B + "車";
}
public void speedUp()
{
nowspeed = nowspeed + 10;
}
public string speednow()
{
return "現在時速" + nowspeed;
}
}
private void Caraccident_Click(object sender, EventArgs e)
{
Caraccident ca = new Caraccident();
ca.A = "a";
ca.B = "b";
ca.nowspeed = 0;
for (ca.nowspeed = 0; ca.nowspeed < 100; ca.speedUp())
{
MessageBox.Show(ca.speednow());
}
MessageBox.Show(ca.crash());
小山老師你好 請問一下
回覆刪除public string Talk(string sName,int sGrade)
{
return sGrade + "年級的" + sName + "對" + sGrade + "年級的" + sName + "說你好";
}
這樣子的寫法要怎麼修改才正確呢?
謝謝老師
private void button2_Click(object sender, EventArgs e)
回覆刪除{
Car c1 = new Car();
c1.CarName = "Toyota";
c1.Speed = 0;
Car c2 = new Car();
c2.CarName = "Honda";
c2.Speed = 0;
for (c1.Speed = 0;c1.Speed<=100;c1.SpeedUp())
{
if(c1.Speed==100)
{
MessageBox.Show(c1.Crash(c2));
}
}
}
class Car
{
public string CarName;
public int addspeed;
public int Speed;
public void SpeedUp()
{
addspeed = addspeed + 10;
}
public string Crash(Car c)
{
return CarName + "撞上了" + c.CarName;
}
}
不知道這樣寫哪裡出錯了,執行就會當掉不動...
我也來分享我的寫法
回覆刪除雖然不一定是最好的@@"
class Car :
public string CarName; //汽車名稱
public int CarSpeed; //汽車速度
public void SpeedUp()
{
for (int i = 0; i < 10; i++)
{
CarSpeed += 10; //加速
}
}
public string Carsh(Car WhobeCrash)
{
return this.CarName + "以 " + CarSpeed + "km/hr 的速度撞上 " + WhobeCrash.CarName;
}
--------------------------------------
Form1 :
private void button1_Click(object sender, EventArgs e)
{
Car carA = new Car();
Car carB = new Car();
carA.CarName = "A車";
carA.SpeedUp();
carB.CarName = "B車";
carB.CarSpeed = 0;
MessageBox.Show(carA.Carsh(carB));
}