Utmaning: Implementering av Browserhistory
Uppgift
I föregående kapitel implementerade du ett system med två knappar, framåt och bakåt, med hjälp av den föråldrade datastrukturen Stack, som inte rekommenderas för användning i modern Java-utveckling.
I detta kapitel är din uppgift att återkalla logiken du använde för att implementera klassen BrowserHistory och implementera den med hjälp av datastrukturen Deque.
Försök att inte titta på föregående kapitel och slutför denna uppgift på egen hand—så att säga, "koda om koden". Detta är också utmärkt träning med GitHub, vilket kommer att vara fördelaktigt för dig.
Ett interface med alla metoder har skapats i koden som finns på GitHub via länken nedan. Din uppgift är att skapa en klassimplementation och implementera detta interface genom att överskrida alla dess metoder.
När du är klar, kör testerna som jag har skrivit åt dig; det kommer automatiskt att kontrollera din lösning.
Du kan även utföra mellanliggande tester i main-klassen. Sammantaget litar jag på din ärlighet och självständighet. En riktig programmerare ska kunna förstå kod självständigt!
- Börja med att skapa tre attribut i denna klass:
backStack,forwardStackochcurrentUrl. - Använd därefter en autogenerator för att skapa konstruktorn för denna klass.
- Använd nyckelordet implements och överskriv alla metoder i interfacet
BrowserHistory. - Använd i metoderna de
Deque- ellerStack-metoder du har lärt dig tidigare. Kom ihåg attDequeär en modern och överlägsen ersättning för datastrukturenStack.
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;
}
}
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Fantastiskt!
Completion betyg förbättrat till 4
Utmaning: Implementering av Browserhistory
Svep för att visa menyn
Uppgift
I föregående kapitel implementerade du ett system med två knappar, framåt och bakåt, med hjälp av den föråldrade datastrukturen Stack, som inte rekommenderas för användning i modern Java-utveckling.
I detta kapitel är din uppgift att återkalla logiken du använde för att implementera klassen BrowserHistory och implementera den med hjälp av datastrukturen Deque.
Försök att inte titta på föregående kapitel och slutför denna uppgift på egen hand—så att säga, "koda om koden". Detta är också utmärkt träning med GitHub, vilket kommer att vara fördelaktigt för dig.
Ett interface med alla metoder har skapats i koden som finns på GitHub via länken nedan. Din uppgift är att skapa en klassimplementation och implementera detta interface genom att överskrida alla dess metoder.
När du är klar, kör testerna som jag har skrivit åt dig; det kommer automatiskt att kontrollera din lösning.
Du kan även utföra mellanliggande tester i main-klassen. Sammantaget litar jag på din ärlighet och självständighet. En riktig programmerare ska kunna förstå kod självständigt!
- Börja med att skapa tre attribut i denna klass:
backStack,forwardStackochcurrentUrl. - Använd därefter en autogenerator för att skapa konstruktorn för denna klass.
- Använd nyckelordet implements och överskriv alla metoder i interfacet
BrowserHistory. - Använd i metoderna de
Deque- ellerStack-metoder du har lärt dig tidigare. Kom ihåg attDequeär en modern och överlägsen ersättning för datastrukturenStack.
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;
}
}
Tack för dina kommentarer!