委托与事件 信用卡还款
总体:
分别定义一个储蓄卡类,信用卡类,委托事件类,测试类
储蓄卡类
class Depositcard
{
private string name;//储蓄用户名
private int depositmoney;//储蓄金额
public Depositcard(string name, int money)
{
this.name = name;
this.depositmoney = money;
}
//获取储蓄金额
public int getDepositMoney()
{
return this.depositmoney;
}
public void setDepositMoney(int h)
{
this.depositmoney = h;
}
}
信用卡类:
class Creditcard
{
public string name; //信用卡持有者名称
public int creditmoney; //信用卡余额
public int dueday;//扣款日期
public Depositcard obj;//绑定储蓄卡对象
//初始化
public Creditcard(string name, int cm, int dd, Depositcard obj)
{
this.name = name;
this.creditmoney = cm;
this.dueday = dd;
this.obj = obj;
}
//还款
public void repaymoeny()
{
Console.WriteLine("{0}先生(女士),您好!您的银行卡当前金额{1}", this.name, this.obj.getDepositMoney());
obj.setDepositMoney(this.obj.getDepositMoney() + creditmoney);
Console.WriteLine("您已还款");
Console.WriteLine("还款金额:{0}", Math.Abs(this.creditmoney));
Console.WriteLine("账户余额{0}", obj.getDepositMoney());
Console.WriteLine();
}
//无需还款
public void norepaymoeny()
{
Console.WriteLine("{0}先生(女士),您好!您的银行卡当前金额{1}", this.name,this.obj.getDepositMoney());
Console.WriteLine("未到还款日期,您无需还款", this.name);
Console.WriteLine();
}
}
委托事件类:
class repayDelegate
{
public delegate void repayMoney();//扣款委托
public event repayMoney Repay;//扣款事件
public void NotifyRepay()//事件执行
{
if (Repay != null)
{
Console.WriteLine("触发事件!");
Repay();
}
}
}
测试类:
class text
{
static void Main(string[] args)
{
Depositcard D1 = new Depositcard(“熊大”, 5000);
Depositcard D2 = new Depositcard(“熊二”, 10000);
Depositcard D3 = new Depositcard(“光头强”, 6000);
Creditcard C1 = new Creditcard("熊大", -1000, 1, D1);
Creditcard C2 = new Creditcard("熊二", -2500, 15, D2);
Creditcard C3 = new Creditcard("光头强", -4500, 1, D3);
Creditcard[] CreditCards = new Creditcard[3];
CreditCards[0] = C1;
CreditCards[1] = C2;
CreditCards[2] = C3;
repayDelegate rD = new repayDelegate();
foreach (Creditcard C in CreditCards)
{
//判断是否到了该还款的日期(假定还款日期为每月的1号)
if (C.dueday == 1)
{
//事件添加
rD.Repay += new repayDelegate.repayMoney(C.repaymoeny);
}
else
{
rD.Repay += new repayDelegate.repayMoney(C.norepaymoeny);
}
}
//事件执行
rD.NotifyRepay();
Console.ReadKey();
}
}
运行结果:
源码地址:https://gitee.com/xiaohutongxue80/codes/q7n6rz3dk9iuxy2aht0ps47