zoukankan      html  css  js  c++  java
  • C#代码:用接口模拟实现存取款及银行之间的转账

    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元

  • 相关阅读:
    SQLite存储类(数据类型)
    SQLite常用命令
    C# 跨线程操作无效
    Android打开新的Activity并同时关闭当前Activity
    SQLite实现Top功能
    Android调用Sqlite数据库时自动生成db-journal文件的原因
    C#使用SqlDataReader读取数据库数据时CommandBehavior.CloseConnection参数的作用
    Android计算时间差
    PS通道抠图总结
    Android再次激活Activity时触发事件用于列表重新读取载入
  • 原文地址:https://www.cnblogs.com/_ymw/p/2846588.html
Copyright © 2011-2022 走看看