zoukankan      html  css  js  c++  java
  • CurrentAccounts.cs

    using System;
    using Wrox.ProCSharp;
    using Wrox.ProCSharp.VenusBank;
    using Wrox.ProCSharp.JupiterBank;

    namespace Wrox.ProCSharp
    {
       class MainEntryPoint
       {
          static void Main()
          {
            IBankAccount venusAccount = new SaverAccount();
                    ITransferBankAccount jupiterAccount = new CurrentAccount();
                    venusAccount.PayIn(200);
                    jupiterAccount.PayIn(500);
                    jupiterAccount.TransferTo(venusAccount, 100);
                    Console.WriteLine(venusAccount.ToString());
                    Console.WriteLine(jupiterAccount.ToString());
          }
       }
    }


    namespace Wrox.ProCSharp
    {
       public interface IBankAccount
       {
          void PayIn(decimal amount);
          bool Withdraw(decimal amount);
          decimal Balance
          {
             get;
          }
       }
        
        
         public interface ITransferBankAccount : IBankAccount
       {
          bool TransferTo(IBankAccount destination, decimal amount);
       }
    }

    namespace Wrox.ProCSharp.VenusBank
    {
       public class SaverAccount : IBankAccount
       {
          private decimal balance;
          public void PayIn(decimal amount)
          {
             balance += amount;
          }
          public bool Withdraw(decimal amount)
          {
             if (balance >= amount)
             {
                balance -= amount;
                return true;
             }
             Console.WriteLine("Withdrawal attempt failed.");
             return false;
          }
          public decimal Balance
          {
             get
             {
                return balance;
             }
          }
          public override string ToString()
          {
             return String.Format("Venus Bank Saver: Balance = {0,6:C}", balance);
          }
       }
    }



    namespace Wrox.ProCSharp.JupiterBank
    {
       public class CurrentAccount : ITransferBankAccount
    {
       private decimal balance;
       public void PayIn(decimal amount)
       {
          balance += amount;
       }
       public bool Withdraw(decimal amount)
       {
          if (balance >= amount)
          {
             balance -= amount;
             return true;
          }
          Console.WriteLine("Withdrawal attempt failed.");
          return false;
       }
       public decimal Balance
       {
          get
          {
             return balance;
          }
       }
       public bool TransferTo(IBankAccount destination, decimal amount)
       {
          bool result;
          if ((result = Withdraw(amount)) == true)
             destination.PayIn(amount);
          return result;
       }
       public override string ToString()
       {
          return String.Format("Jupiter Bank Current Account: Balance = {0,6:C}",
                                                                          balance);
       }   
     
    }


    }
  • 相关阅读:
    【BZOJ】1726 [Usaco2006 Nov]Roadblocks第二短路
    【BZOJ】1666 [Usaco2006 Oct]Another Cow Number Game 奶牛的数字游戏
    【BZOJ】1699 [Usaco2007 Jan]Balanced Lineup排队
    【BZOJ】1477 青蛙的约会
    【BZOJ】1385 [Baltic2000]Division expression
    【算法】数学
    【NOIP】提高组2012 同余方程
    【BZOJ】1096 [ZJOI2007]仓库建设
    【算法】动态规划
    【LA】5135 Mining Your Own Business
  • 原文地址:https://www.cnblogs.com/shihao/p/2506354.html
Copyright © 2011-2022 走看看