1.首先定义一个接口:声明存取金额的方法
/// <summary>
/// 接口
/// </summary>
public interface IBankAccount
{
/// <summary>
/// 存入金额
/// </summary>
/// <param name="amount"></param>
void PayIn(decimal amount);
/// <summary>
/// 取出金额
/// </summary>
/// <param name="amount"></param>
/// <returns></returns>
bool WithDraw(decimal amount);
/// <summary>
/// 交易金额
/// </summary>
decimal Balance
{
get;
}
}
2.存取款SaverAccount实现接口:
/// <summary>
/// 类实现接口
/// </summary>
public class SaverAccount : IBankAccount
{
private decimal balance;
/// <summary>
/// 存款
/// </summary>
/// <param name="amount"></param>
public void PayIn(decimal amount)
{
balance += amount;
}
/// <summary>
/// 取款
/// </summary>
/// <param name="amount"></param>
/// <returns></returns>
public bool WithDraw(decimal amount)
{
if (balance > amount)
{
balance -= amount;
return true;
}
MessageBox.Show("取款金额大于账户余额");
return false;
}
/// <summary>
/// 账户当前金额
/// </summary>
public decimal Balance
{
get
{
return balance;
}
}
/// <summary>
/// 格式化输出结果
/// </summary>
/// <returns></returns>
public override string ToString()
{
return string.Format("Venus Bank Saver:Balance={0,6:C}", balance);
}
}
3.定义一个转账的接口:
public interface ITransferBankAccount : IBankAccount
{
bool TransferTo(IBankAccount description, decimal amount);
}
4.实现转账接口转账的类:
public class CurrentAccoount : ITransferBankAccount
{
public void PayIn(decimal amount)
{
balance += amount;
}
public bool WithDraw(decimal amount)
{
if (balance > amount)
{
balance -= amount;
return true;
}
MessageBox.Show("取款金额大于账户余额");
return false;
}
private decimal balance;
/// <summary>
/// 当前余额
/// </summary>
public decimal Balance
{
get
{
return balance;
}
}
public override string ToString()
{
return string.Format("YMW Bank Saver:Balance={0,6:C}", balance);
}
/// <summary>
/// 转账 从当前账户转入指定账户
/// </summary>
/// <param name="description">转入指定帐户</param>
/// <param name="amount">转入的金额</param>
/// <returns>bool</returns>
public bool TransferTo(IBankAccount description, decimal amount)
{
bool result = true;
if ((result == WithDraw(amount)) == true)
{
description.PayIn(amount);
}
return false;
}
}
5.测试存取款:如下
IBankAccount iba = new SaverAccount();
iba.PayIn(200); //存入200元
iba.WithDraw(100); //取出100元
MessageBox.Show(iba.ToString()); //账户余额100元
MessageBox.Show("账户余额:" + iba.Balance.ToString());
6.测试转账:如下
IBankAccount IBA = new SaverAccount();
ITransferBankAccount ITB = new CurrentAccoount();
IBA.PayIn(200); //A账户存入200元
ITB.PayIn(500); //B账户存入500元
ITB.TransferTo(IBA, 400); //B账户向A账户转入400元
MessageBox.Show(IBA.ToString()); //A账户余额600元
MessageBox.Show(ITB.ToString()); //B账户余额100元