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