<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      24.12.16

      實(shí)驗(yàn) 22:狀態(tài)模式

      本次實(shí)驗(yàn)屬于模仿型實(shí)驗(yàn),通過(guò)本次實(shí)驗(yàn)學(xué)生將掌握以下內(nèi)容:

      1、理解狀態(tài)模式的動(dòng)機(jī),掌握該模式的結(jié)構(gòu);

      2、能夠利用狀態(tài)模式解決實(shí)際問(wèn)題。

      [實(shí)驗(yàn)任務(wù)一]:銀行賬戶

      用Java代碼模擬實(shí)現(xiàn)課堂上的“銀行賬戶”的實(shí)例,要求編寫(xiě)客戶端測(cè)試代碼模擬用戶存款和取款,注意賬戶對(duì)象狀態(tài)和行為的變化。

      實(shí)驗(yàn)要求:

      1.      畫(huà)出對(duì)應(yīng)的類圖;

      2.      提交源代碼;

      3. 注意編程規(guī)范。

       

      類圖:

       

       

      1. 源代碼

       

      public class Account {

       

          private AccountState state;

          private String owner;

       

          public Account(String owner, double init) {

              this.owner = owner;

              state = new GreenState(init, this);

              System.out.println("賬戶:" + this.owner + ",余額:" + init);

          }

       

          public void setState(AccountState state) {

              this.state = state;

          }

       

          public void deposit(double amount) {

              state.deposit(amount);

              System.out.println("現(xiàn)金余額為" + this.state.balance);

          }

       

          public void withdraw(double amount) {

              state.withdraw(amount);

              System.out.println("現(xiàn)金余額為" + state.balance);

          }

      }

       

      public abstract class AccountState {

       

          protected Account acc;

          protected double balance;

       

          public abstract void stateCheck();

       

          public abstract void deposit(double amount);

       

          public abstract void withdraw(double amount);

      }

       

      public class GreenState extends AccountState {

       

          public GreenState() {}

       

          public GreenState(double amount, Account account) {

              balance = amount;

              acc = account;

          }

       

          @Override

          public void stateCheck() {

              if (balance >= 0) {

                  acc.setState(new GreenState(balance, acc));

                  System.out.println("當(dāng)前為正常(綠色)狀態(tài)");

              } else if (balance < 0 && balance >= -1000) {

                  acc.setState(new YellowState(balance, acc));

                  System.out.println("當(dāng)前為欠費(fèi)(黃色)狀態(tài)");

              } else {

                  acc.setState(new RedState(balance, acc));

                  System.out.println("當(dāng)前透支(紅色)狀態(tài)");

              }

          }

       

          @Override

          public void deposit(double amount) {

              balance += amount;

              System.out.println(balance);

              stateCheck();

          }

       

          @Override

          public void withdraw(double amount) {

              balance -= amount;

              stateCheck();

          }

      }

       

      public class RedState extends AccountState {

       

          public RedState(double amount, Account acc) {

              this.balance = amount;

              this.acc = acc;

          }

       

          @Override

          public void stateCheck() {

              if (balance >= 0) {

                  acc.setState(new GreenState(balance, acc));

                  System.out.println("當(dāng)前為正常(綠色)狀態(tài)");

              } else if (balance < 0 && balance >= -1000) {

                  acc.setState(new YellowState(balance, acc));

                  System.out.println("當(dāng)前為欠費(fèi)(黃色)狀態(tài)");

              } else {

                  acc.setState(new RedState(balance, acc));

                  System.out.println("當(dāng)前透支(紅色)狀態(tài)");

              }

          }

       

          @Override

          public void deposit(double amount) {

              balance += amount;

              stateCheck();

          }

       

          @Override

          public void withdraw(double amount) {

              System.out.println("透支狀態(tài),無(wú)法取款!");

          }

      }

       

      public class YellowState extends AccountState {

       

          public YellowState(double amount, Account acc) {

              this.balance = amount;

              this.acc = acc;

          }

       

          @Override

          public void stateCheck() {

              if (balance >= 0) {

                  acc.setState(new GreenState(balance, acc));

                  System.out.println("當(dāng)前為正常(綠色)狀態(tài)");

              } else if (balance < 0 && balance >= -1000) {

                  acc.setState(new YellowState(balance, acc));

                  System.out.println("當(dāng)前為欠費(fèi)(黃色)狀態(tài)");

              } else {

                  acc.setState(new RedState(balance, acc));

                  System.out.println("當(dāng)前透支(紅色)狀態(tài)");

              }

          }

       

          @Override

          public void deposit(double amount) {

              balance += amount;

              stateCheck();

          }

       

          @Override

          public void withdraw(double amount) {

              balance -= amount;

              stateCheck();

          }

      }

      public class Client {

          public static void main(String[] args) {

              Account acc = new Account("gazikel", 2500);

       

              System.out.println("==========綠色狀態(tài)存錢(qián)===========");

              acc.deposit(1500);

              System.out.println("------------------------------");

       

              // 綠色狀態(tài)取錢(qián)

              System.out.println("==========綠色狀態(tài)取錢(qián)===========");

              acc.withdraw(4500);

              System.out.println("------------------------------");

       

              // 黃色狀態(tài)存錢(qián)

              System.out.println("==========黃色狀態(tài)存錢(qián)===========");

              acc.deposit(100);

              System.out.println("------------------------------");

       

              // 黃色狀態(tài)取錢(qián)

              System.out.println("==========黃色狀態(tài)取錢(qián)===========");

              acc.withdraw(700);

              System.out.println("------------------------------");

       

              // 紅色狀態(tài)取錢(qián)

              System.out.println("==========紅色狀態(tài)取錢(qián)===========");

              acc.withdraw(100);

       

              // 紅色狀態(tài)存錢(qián)

              System.out.println("==========紅色狀態(tài)存錢(qián)===========");

              acc.deposit(1000);

          }

      }

       

      }

      posted on 2024-12-16 17:10  Daniel350  閱讀(10)  評(píng)論(0)    收藏  舉報(bào)

      主站蜘蛛池模板: 久久精品蜜芽亚洲国产av| 免费av网站| 久久婷婷五月综合色精品| 18禁无遮挡啪啪无码网站| 国产精品一区二区麻豆蜜桃 | 国产成人a∨激情视频厨房| 人妻教师痴汉电车波多野结衣| 欧美成本人视频免费播放| 天美传媒一区二区| 日韩福利片午夜免费观着| 亚洲夂夂婷婷色拍ww47| 国产精品黄色片| 她也色tayese在线视频| 国产精品国产自产拍在线| 亚洲国产精品18久久久久久| 欧美性群另类交| 亚洲av无码片在线播放| 第一精品福利导福航| 贵州省| 91老熟女老人国产老太| 日韩乱码人妻无码中文字幕视频| 18成人片黄网站www| 亚洲av乱码久久亚洲精品| 国产精品中文字幕观看| 亚洲国产成人无码av在线影院| av在线播放无码线| 国产在线一区二区不卡| 日韩精品av一区二区三区| 亚洲无av在线中文字幕| 我国产码在线观看av哈哈哈网站| 精品少妇人妻av无码久久| 99久久精品国产综合一区| 国产免费高清69式视频在线观看| 狠狠色丁香婷婷综合尤物| av色蜜桃一区二区三区| 亚洲成av人片在www鸭子| 国产免费丝袜调教视频| 日韩精品三区二区三区| 国产高清一区二区不卡| 成人精品一区二区三区在线观看| 老司机亚洲精品一区二区|