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

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

Suggested prompts:

Can you explain how the Deque data structure improves upon the Stack in this context?

What are the main differences between Stack and Deque in Java?

Could you walk me through the logic of the visitPage, goBack, and goForward methods?

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