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, яка не рекомендується для використання в сучасній Java-розробці.

У цьому розділі ваше завдання — згадати логіку, яку ви використовували для реалізації класу BrowserHistory, і реалізувати її з використанням структури даних Deque.

Намагайтеся не підглядати у попередній розділ і виконайте це завдання самостійно — так би мовити, «перепишіть код». Це також чудова практика роботи з GitHub, яка буде корисною для вас.

Інтерфейс з усіма методами вже створено у коді, доступному на GitHub за посиланням нижче. Ваше завдання — створити реалізацію класу та реалізувати цей інтерфейс, перевизначивши всі його методи.

Після завершення запустіть тести, які я для вас написав; це автоматично перевірить ваше рішення.

Ви також можете виконувати проміжні тести у класі main. Загалом, я покладаюся на вашу чесність та самостійність. Справжній програміст повинен самостійно розуміти код!

  • Почніть зі створення трьох атрибутів у цьому класі: 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

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

bookЗавдання: Реалізація BrowserHistory

Свайпніть щоб показати меню

Завдання

У попередньому розділі ви реалізували систему з двома кнопками — вперед і назад — використовуючи застарілу структуру даних Stack, яка не рекомендується для використання в сучасній Java-розробці.

У цьому розділі ваше завдання — згадати логіку, яку ви використовували для реалізації класу BrowserHistory, і реалізувати її з використанням структури даних Deque.

Намагайтеся не підглядати у попередній розділ і виконайте це завдання самостійно — так би мовити, «перепишіть код». Це також чудова практика роботи з GitHub, яка буде корисною для вас.

Інтерфейс з усіма методами вже створено у коді, доступному на GitHub за посиланням нижче. Ваше завдання — створити реалізацію класу та реалізувати цей інтерфейс, перевизначивши всі його методи.

Після завершення запустіть тести, які я для вас написав; це автоматично перевірить ваше рішення.

Ви також можете виконувати проміжні тести у класі main. Загалом, я покладаюся на вашу чесність та самостійність. Справжній програміст повинен самостійно розуміти код!

  • Почніть зі створення трьох атрибутів у цьому класі: 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
some-alt