Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ チャレンジ:BrowserHistoryの実装 | Javaにおける高度なデータ構造
Javaデータ構造

bookチャレンジ:BrowserHistoryの実装

メニューを表示するにはスワイプしてください

課題

前の章では、時代遅れの Stack データ構造を使って、2つのボタン(進む・戻る)を持つシステムを実装しましたが、これは現代のJava開発では推奨されていません

この章では、BrowserHistory クラスを実装した際のロジックを思い出し、今度は Deque データ構造を使って再実装してください。

前の章を見返さずに自力でこの課題に取り組んでみてください。いわば「コードを書き直す」練習です。これはGitHubの練習としても非常に有益です。

すべてのメソッドを含むインターフェースが、下記のGitHubリンクから入手できるコード内に用意されています。あなたの課題は、クラス実装を作成し、このインターフェースを実装してすべてのメソッドをオーバーライドすることです。

完了したら、用意されたテストを実行してください。自動的に解答がチェックされます。

また、main クラスで途中テストを行うことも可能です。全体として、あなたの誠実さと自立性に期待しています。真のプログラマーは自分でコードを理解できるべきです!

  • このクラスに3つの属性:backStackforwardStackcurrentUrl を作成してください。
  • 次に、コンストラクタを自動生成ツールで作成してください。
  • implements キーワードを使い、BrowserHistory インターフェースのすべてのメソッドをオーバーライドしてください。
  • メソッド内では、これまで学習した Deque または Stack のメソッドを活用してください。DequeStack の現代的かつ優れた代替手段であることを忘れないでください。
package codefinity.Task;

import java.util.Deque;

public class BrowserHistoryImpl implements BrowserHistory {
    private Deque<String> backStack;
    private Deque<String> forwardStack;
    private String currentUrl;

    public BrowserHistoryImpl(Deque<String> backStack, Deque<String> forwardStack, String currentUrl) {
        this.backStack = backStack;
        this.forwardStack = forwardStack;
        this.currentUrl = currentUrl;
    }

    @Override
    public void visitPage(String url) {
        backStack.push(currentUrl);
        forwardStack.clear();
        currentUrl = url;
    }

    @Override
    public void goBack() {
        if (!backStack.isEmpty()) {
            forwardStack.push(currentUrl);
            currentUrl = backStack.pop();
        } else {
            System.out.println("Cannot go back. Already at the beginning.");
        }
    }

    @Override
    public void goForward() {
        if (!forwardStack.isEmpty()) {
            backStack.push(currentUrl);
            currentUrl = forwardStack.pop();
        } else {
            System.out.println("Cannot go forward. Already at the latest page.");
        }
    }

    @Override
    public String getCurrentPage() {
        return currentUrl;
    }
}
すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 2.  5

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 2.  5
some-alt