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元

  • 相关阅读:
    《构建之法》阅读有疑 与 个人Week1作业
    版本管理和项目管理软件浅谈
    [2019BUAA软工助教]第0次个人作业
    [2017BUAA软工助教]博客格式的详细说明
    [2017BUAA软工助教]收集个人信息
    最长英文单词串题目分析
    蓝桥杯PREV-11:横向打印二叉树
    day2
    冯如杯day1
    个人阅读作业
  • 原文地址:https://www.cnblogs.com/_ymw/p/2846588.html
Copyright © 2011-2022 走看看