Uitdaging: Implementatie van Browsergeschiedenis
Taak
In het vorige hoofdstuk heb je een systeem geïmplementeerd met twee knoppen, vooruit en achteruit, met behulp van de verouderde Stack datastructuur, die niet wordt aanbevolen voor gebruik in moderne Java-ontwikkeling.
In dit hoofdstuk is het jouw taak om de logica die je hebt gebruikt om de BrowserHistory-klasse te implementeren, te herinneren en deze te implementeren met behulp van de Deque datastructuur.
Probeer niet naar het vorige hoofdstuk te kijken en voltooi deze taak zelfstandig—oftewel, "hercodeer de code." Dit is ook uitstekende oefening met GitHub, wat voordelig voor je zal zijn.
Een interface met alle methoden is aangemaakt in de code die beschikbaar is op GitHub via de onderstaande link. Jouw taak is om een klasse-implementatie te maken en deze interface te implementeren door alle methoden te overschrijven.
Zodra je klaar bent, voer de tests uit die ik voor je heb geschreven; hiermee wordt je oplossing automatisch gecontroleerd.
Je kunt ook tussentijdse tests uitvoeren in de main-klasse. Over het algemeen vertrouw ik op je eerlijkheid en zelfstandigheid. Een echte programmeur moet zelfstandig code kunnen begrijpen!
- Begin met het aanmaken van drie attributen in deze klasse:
backStack,forwardStackencurrentUrl. - Gebruik vervolgens een autogenerator om de constructor voor deze klasse te maken.
- Gebruik het implements-keyword en overschrijf alle methoden van de
BrowserHistory-interface. - Gebruik in de methoden de
Deque- ofStack-methoden die je eerder hebt geleerd. Onthoud datDequeeen moderne en superieure vervanging is voor deStackdatastructuur.
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;
}
}
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
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?
Geweldig!
Completion tarief verbeterd naar 4
Uitdaging: Implementatie van Browsergeschiedenis
Veeg om het menu te tonen
Taak
In het vorige hoofdstuk heb je een systeem geïmplementeerd met twee knoppen, vooruit en achteruit, met behulp van de verouderde Stack datastructuur, die niet wordt aanbevolen voor gebruik in moderne Java-ontwikkeling.
In dit hoofdstuk is het jouw taak om de logica die je hebt gebruikt om de BrowserHistory-klasse te implementeren, te herinneren en deze te implementeren met behulp van de Deque datastructuur.
Probeer niet naar het vorige hoofdstuk te kijken en voltooi deze taak zelfstandig—oftewel, "hercodeer de code." Dit is ook uitstekende oefening met GitHub, wat voordelig voor je zal zijn.
Een interface met alle methoden is aangemaakt in de code die beschikbaar is op GitHub via de onderstaande link. Jouw taak is om een klasse-implementatie te maken en deze interface te implementeren door alle methoden te overschrijven.
Zodra je klaar bent, voer de tests uit die ik voor je heb geschreven; hiermee wordt je oplossing automatisch gecontroleerd.
Je kunt ook tussentijdse tests uitvoeren in de main-klasse. Over het algemeen vertrouw ik op je eerlijkheid en zelfstandigheid. Een echte programmeur moet zelfstandig code kunnen begrijpen!
- Begin met het aanmaken van drie attributen in deze klasse:
backStack,forwardStackencurrentUrl. - Gebruik vervolgens een autogenerator om de constructor voor deze klasse te maken.
- Gebruik het implements-keyword en overschrijf alle methoden van de
BrowserHistory-interface. - Gebruik in de methoden de
Deque- ofStack-methoden die je eerder hebt geleerd. Onthoud datDequeeen moderne en superieure vervanging is voor deStackdatastructuur.
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;
}
}
Bedankt voor je feedback!