Завдання: Реалізація 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;
}
}
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
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?
Чудово!
Completion показник покращився до 4
Завдання: Реалізація 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;
}
}
Дякуємо за ваш відгук!