abstract class Card
{
public long CardNo { get; set; } public float Query()
{
float count = 0;
return count;
}
public abstract float Collect(float count);
} class LocalCard : Card
{
public override float Collect(float count)
{
return count;
} public bool Transfer(float count)
{
return true;
}
} class OtherCard : Card
{
public override float Collect(float count)
{
count -= 2;
return count;
}
}//泛型集合
List<Card> list = new List<Card>(){ new LocalCard() { CardNo = 111 },
new OtherCard() { CardNo = 222 }};
using System.Collections.Generic;namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
CardSelf cardSelf = new CardSelf() { CardNo = "本行", TotalMoney = 10000 };
CardOther card1 = new CardOther() { CardNo = "他行1", TotalMoney = 5000 };
CardOther card2 = new CardOther() { CardNo = "他行2", TotalMoney = 3000 }; cardSelf.Transfer(card1, 2500);
card1.Withdraw(3000);
card2.Deposit(1000); List<CardBase> cards = new List<CardBase>() { cardSelf, card1, card2 };
cards.ForEach(card => card.Show());
Console.ReadLine();
} public abstract class CardBase
{
public void Show()
{
Console.WriteLine(this.CardNo + "余额=" + TotalMoney);
}
public string CardNo { get; set; }
public Decimal TotalMoney { get; set; }
public abstract decimal Withdraw(Decimal amount);//取
public abstract void Deposit(Decimal amount); //存
protected abstract Decimal ChargePrice(Decimal amount);
} public class CardOther : CardBase //他行
{
public override decimal Withdraw(decimal amount)
{
if (TotalMoney < amount + ChargePrice(amount)) throw new Exception("余额不足");
TotalMoney -= amount;
TotalMoney -= ChargePrice(amount);
return amount;
}
protected override decimal ChargePrice(decimal amount)
{
return 2;
}
public override void Deposit(decimal amount)
{
TotalMoney += amount;
}
} public class CardSelf : CardOther //本行
{
protected override Decimal ChargePrice(decimal amount)
{
return 0;
}
public void Transfer(CardBase card, decimal amount)
{
card.TotalMoney += Withdraw(amount);
}
}
}
}
关于类设计:public class Account : ICashRecycling
{
// Properties
AccountID, UserName, Password, Balance
// Methods
public virtual void Transfer(Account another);
public virtual void Withdraw(decimal money);
public virtual void Deposite(decimal money);
}
interface ICashRecycling
{
void Transfer(Account another);
void Withdraw(decimal money);
void Deposite(decimal money);
}