2015. 8. 9. 14:48, C#/Head First C# Practice
[설명]
Bob과 Joe의 돈을 은행을 통해 송금하자.
송금할 때 마다 수수료가 1달러씩 은행에 지불됨.
계속 송금하다 보면 결국 은행만 수수료로 돈을 벌고 Bob과 Joe는 거지가 됨.
Head First에 있는 예제와는 코드가 다소 다름.
어딘가 헛점이 많고 더 단축할 수 있는 코드이나 수정하기엔 할 일이 많다~
[실행화면]
[소스코드]
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace ExMoney { public partial class Form1 : Form { int bank = 0; int interest = 1; Guy bob = new Guy(); Guy joe = new Guy(); public Form1() { bob.cash = 100; joe.cash = 100; InitializeComponent(); UpdateForm(); // InitializeComponent() 보다 먼저 수행하면 레퍼런스 에러! } private void btn_1_Click(object sender, EventArgs e) { int temp = bob.GiveCash(5, interest); if (temp != 0) // GiveCash()에서 0이 리턴될 경우는 송금한 돈이 없는 것이므로, 0이 아닐 때 수행되어야 함! { bank += temp; bank -= joe.ReceiveCash(temp - interest); } UpdateForm(); // Form 내용 갱신 } private void btn_2_Click(object sender, EventArgs e) { int temp = joe.GiveCash(10, interest); if (temp != 0) // GiveCash()에서 0이 리턴될 경우는 송금한 돈이 없는 것이므로, 0이 아닐 때 수행되어야 함! { bank += temp; bank -= bob.ReceiveCash(temp - interest); } UpdateForm(); // Form 내용 갱신 } public void UpdateForm() { bobMoney.Text = "Bob은 " + bob.cash + " 달러를 가지고 있습니다."; joeMoney.Text = "Joe는 " + joe.cash + " 달러를 가지고 있습니다."; bankMoney.Text = "은행은 " + bank + " 달러를 가지고 있습니다."; } } public class Guy { public string Name; public int cash; public int GiveCash(int amount, int interest) { if(cash >= amount+interest) { cash -= amount + interest; return amount + interest; } else { MessageBox.Show("송금할 돈이 부족합니다!"); return 0; } } public int ReceiveCash(int amount) { cash += amount; return amount; } } }
'C# > Head First C# Practice' 카테고리의 다른 글
슬라피 조의 샌드위치 하우스, 메뉴 랜덤하게 만들기(배열 연습) (1) | 2015.08.15 |
---|---|
인스턴스의 속성을 맞바꾸기 (0) | 2015.08.15 |
Mileage Calculator (0) | 2015.08.09 |
메서드를 만들 때 정적(static) 키워드를 사용하는 이유 (0) | 2015.08.09 |
Getting Start! 연습을 시작하며... (0) | 2015.08.09 |
Comments, Trackbacks