チャレンジ:BrowserHistoryの実装
メニューを表示するにはスワイプしてください
課題
前の章では、時代遅れの Stack データ構造を使って、2つのボタン(進む・戻る)を持つシステムを実装しましたが、これは現代のJava開発では推奨されていません。
この章では、BrowserHistory クラスを実装した際のロジックを思い出し、今度は Deque データ構造を使って再実装してください。
前の章を見返さずに自力でこの課題に取り組んでみてください。いわば「コードを書き直す」練習です。これはGitHubの練習としても非常に有益です。
すべてのメソッドを含むインターフェースが、下記のGitHubリンクから入手できるコード内に用意されています。あなたの課題は、クラス実装を作成し、このインターフェースを実装してすべてのメソッドをオーバーライドすることです。
完了したら、用意されたテストを実行してください。自動的に解答がチェックされます。
また、main クラスで途中テストを行うことも可能です。全体として、あなたの誠実さと自立性に期待しています。真のプログラマーは自分でコードを理解できるべきです!
- このクラスに3つの属性:
backStack、forwardStack、currentUrlを作成してください。 - 次に、コンストラクタを自動生成ツールで作成してください。
- implements キーワードを使い、
BrowserHistoryインターフェースのすべてのメソッドをオーバーライドしてください。 - メソッド内では、これまで学習した
DequeまたはStackのメソッドを活用してください。DequeはStackの現代的かつ優れた代替手段であることを忘れないでください。
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に質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください
セクション 2. 章 5