本課簡介
本課延續上一課的教學
利用物件導向的方式來完成「借還錢程式」的程式碼部分
教學影片
注意:影片有高畫質 720P 的選項,可以看得更清楚喔!
重點提示
1. 在紀錄資料的時候,可以盡量使用 class 包起來。除了方便管理之外,以後需要大量增加也比較容易
2. class 內的「變數」可以想成「屬性」,method 則可以想成「行為」
3. class 可以藉由 constructor 來強迫使用者在建立物件的時候輸入某些參數來初始化
4. class 內可以互相呼叫自己的 method
練習
1. 我的朋友真可憐呢!每次都是我跟他借錢,這次他也想借錢了!你是否可以修改這支程式,新增兩個按鈕,然後加入朋友借還錢的功能?
2. 承上題,這個程式還有個問題,還錢的時候是看自己有多少錢,然後就可以還多少。但是這樣不太對,應該是借多少還多少吧?是否可以在程式中多顯示一道資訊,記錄我現在一共借了多少,而還錢的時候不可以超過這筆錢這樣?
3. 借錢怎麼可以只借固定數目哩?那我要借 100000,不就得借 100 次?請新增 NumericUpDown 的元件,來控制借還錢的數目。
不好意思 我又來找碴了@@
回覆刪除小弟對C#的陣列不是很了解
不知道該怎麼寫陣列
我這邊有個AS3.0的陣列使用方式
可否請老師指導一下怎麼改成C#的格式
package {
import flash.display.MovieClip;
public class test extends MovieClip {
public var a:Array = new Array();
public function test() {
// constructor code
get_all_infor(1,"小山","看起來是個好老師"); //存入訊息
trace(""+a[0].id+","+a[0].strName+","+a[0].readme);
}
public function get_all_infor(_id:int,_strName:String,_readme:String)
{
var o_a:Object = new Object();
o_a = {id:_id,strName:_strName,readme:_readme}
a.push(o_a);
}
}
}
其實我下一課就要教陣列了,最慢明天晚上會出來
刪除至於閣下提供的程式碼
老實說我沒有學過 AS3.0
不過就我的經驗來看,這是屬於「弱型別 Week Type」的程式語言
也就是說,你宣告變數的時候不需要指定他的型別
就這點來看 AS3.0 與 C# 就很不一樣了
而且你也不需要定義 class 的內容就可以插入變數
這些都是 C# 沒有支援的功能
總之等我下一課出來之後,你可能就會發現這兩者在陣列的使用上會有些差別
(例如 C# 的陣列大小是固定的)
其實我的意思是說,要轉成 C# 程式碼沒問題
刪除只是要注意有些細節可能會很不一樣
想請問一下 假設把array當作一個class
回覆刪除如上面的 內有id strName readme這些屬性
如老師說的放個一兩個可以控制還好
大量是透過本身的 class方法做預設
那如何同時控制大量的這些數據呢
像S.id是 小山的id
如果有100個學生
有類似用編號的方式
XXX[0].id =小山的id
XXX[1].id =某某的id...之類的方法嗎?
今天在看別人撰寫的程式碼
http://www.360doc.com/content/10/0510/17/1090703_26933072.shtml
public frmLogin(ref UserInfo ui)
{
InitializeComponent();
uiLogin = ui;
}
ref <-- 不太懂它的用途
debug會說可訪問性不一致參數類型 "ref login.UserInfo"
比方法 "login.frmLogin.frmLogin(ref login.UserInfo)"的訪問性低
frmLogin有藍色水波底線
謝謝
後來暫時先把傳入的ref UserInfo ui部分先拿掉
刪除就暫時可以執行了
但是還是不太懂這裡面是甚麼
關於第一個問題,會在下一個教學影片獲得解答
刪除至於別人撰寫的程式碼,我剛剛看了一下
ref 這個修飾字,這是很進階的東西
短期內不會教到,不過我認為它在這個程式碼中的作用不大
所以其實只單獨刪除 ref 理論上沒有影響(有兩個地方,都要刪掉)
好的期待老師的影片 謝謝
刪除作者已經移除這則留言。
回覆刪除作者已經移除這則留言。
回覆刪除作者已經移除這則留言。
回覆刪除請問,為什麼以下寫法run出來會有問題:
回覆刪除public void Repay(Person lender, int money)
{
if (lender.Money <= money) //小山使用方法: if(this.Money >= money)
{
lender.Money += money;
this.Money -= money;
}
}
作者已經移除這則留言。
刪除請問一下老師
回覆刪除我做一個了TextBox,想要輸入一個數值,但它是一個字串!
請問怎樣把string 轉 int?
如果有一天我又想把 int 轉 string 又怎麼辦?
用 Int32.Parse(str)
刪除str 換成你要解析的字串
相關文件可以參考這裡:https://msdn.microsoft.com/zh-tw/library/b3h1hf19%28v=vs.110%29.aspx
作者已經移除這則留言。
回覆刪除請問一下老師
回覆刪除我做好了一個程式
可不可以建立一個檔案
然後打開檔案就可以看到我程式的視窗
就不用每次都打開visual studio看程式碼了
如果可以的話要怎麼使用呢?
你可以找一下你的程式碼放在哪裡
刪除在同一個目錄下可以找到一個叫做 Debug 的資料夾
裡面會包含一個跟你專案名稱相同的 exe 檔案
點那個就可以直接跑
請問查詢成績的程式要怎麼做
回覆刪除這個問題好像無法用一兩段話回答
刪除你可以描述地精確一點嗎?
請問有練習的解答嗎?
回覆刪除不好意思,沒有提供解答哦~
刪除小山老師您好:
回覆刪除首先先謝謝你這麼認真教學,
我想請問我在做練習題最後一題時,我的NumericUpDown 都只能到100是甚麼原因呢?
100以內都可以 超過100他都會自動回到100.
謝謝您
關鍵在於 NumericUpDown 有一個屬性叫做 Maximum,如果你去查一下這個單字的意思就會知道是「最大值」。你可以藉由調整那個數值來控制你的元件最高可以調到多少。
刪除小山老師你好 請問我可以把最大值調到無限嗎 謝謝
刪除老師您好:
回覆刪除學習到這裡我有個困擾想請問
我每次在設計界面時, 假設這次的作業第三小題目我設計了一個 NumericUpDown 工具項目
如果我在這個設計項目上面點兩下, 則會產生下列的程式碼在我的 Form1 裡面:
private void perBorrowandRepayMoneyInput_ValueChanged(object sender, EventArgs e)
{
}
像這次的作業我發現只要取得這個 NumericUpDown 的 Value 值就可以完成第小項目三的功課
那麼我該如何把我的 Form1 裡面那個誤點兩下產生的物件碼給完整移除呢
我發現只是把它刪除掉執行程式就會發生錯誤, 看這段 ID 自己產生的程式碼 又挺礙眼的...
還是產生了就無法去除呢
麻煩老師指導了
謝謝~
小山老師我算是剛學C#對於你的練習題我有點不懂你有練習的程式影片讓我學習瞭解嗎?
回覆刪除小山你好~
回覆刪除關於此課的練習二:「記錄我現在一共借了多少,而還錢的時候不可以超過這筆錢這樣?」
想請問關於這道題目有沒有更快/簡潔一點的方式?
目前是使用
【 在還錢的按鈕下設定條件
(目前金額-初始金額)=>得出所借金額,
若所借金額<要還金額 ,就會跳出警示,不得還錢。 】
這道題目是否有用class做的可能性呢? 非常謝謝
=========================程式碼節錄==================================
private void repaybutton_Click(object sender, EventArgs e)
{
int mealreadyborrowamount = ((int)me.money - (int)mymoneyinput.Value);
if (mealreadyborrowamount < (int)moneyamount.Value)
{
MessageBox.Show(" 我沒有借那麼多錢啊");
}
else
{
me.Repay(friend, (int)moneyamount.Value);
updatemoney();
}
}
=========================程式碼節錄==================================
Email:gn337711@gmail.com
不敢相信練習題自己沒看答案就解出來了!
回覆刪除