Herausforderung: Implementierung von Browserhistory
Aufgabe
Im vorherigen Kapitel wurde ein System mit zwei Schaltflächen, Vorwärts und Rückwärts, unter Verwendung der veralteten Stack-Datenstruktur implementiert, welche in der modernen Java-Entwicklung nicht empfohlen wird.
In diesem Kapitel besteht die Aufgabe darin, sich an die verwendete Logik zur Implementierung der Klasse BrowserHistory zu erinnern und diese mithilfe der Deque-Datenstruktur neu zu implementieren.
Versuche nicht im vorherigen Kapitel nachzuschlagen und diese Aufgabe eigenständig zu lösen – sozusagen "Code neu schreiben". Dies ist auch eine ausgezeichnete Übung mit GitHub, die von Vorteil für dich sein wird.
Im bereitgestellten Code auf GitHub (siehe Link unten) wurde ein Interface mit allen Methoden erstellt. Die Aufgabe besteht darin, eine Klassenimplementierung zu erstellen und dieses Interface zu implementieren, indem alle Methoden überschrieben werden.
Nach Abschluss sollten die von mir bereitgestellten Tests ausgeführt werden; damit wird die Lösung automatisch überprüft.
Es können auch Zwischentests in der main-Klasse durchgeführt werden. Insgesamt setze ich auf deine Ehrlichkeit und Eigenständigkeit. Ein wahrer Programmierer sollte in der Lage sein, Code eigenständig zu verstehen!
- Zunächst drei Attribute in dieser Klasse anlegen:
backStack,forwardStackundcurrentUrl. - Anschließend einen Konstruktor für diese Klasse automatisch generieren lassen.
- Das Schlüsselwort implements verwenden und alle Methoden des
BrowserHistory-Interfaces überschreiben. - In den Methoden die zuvor erlernten Methoden von
DequeoderStackverwenden. Beachte, dassDequeeine moderne und überlegene Alternative zurStack-Datenstruktur darstellt.
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;
}
}
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
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?
Großartig!
Completion Rate verbessert auf 4
Herausforderung: Implementierung von Browserhistory
Swipe um das Menü anzuzeigen
Aufgabe
Im vorherigen Kapitel wurde ein System mit zwei Schaltflächen, Vorwärts und Rückwärts, unter Verwendung der veralteten Stack-Datenstruktur implementiert, welche in der modernen Java-Entwicklung nicht empfohlen wird.
In diesem Kapitel besteht die Aufgabe darin, sich an die verwendete Logik zur Implementierung der Klasse BrowserHistory zu erinnern und diese mithilfe der Deque-Datenstruktur neu zu implementieren.
Versuche nicht im vorherigen Kapitel nachzuschlagen und diese Aufgabe eigenständig zu lösen – sozusagen "Code neu schreiben". Dies ist auch eine ausgezeichnete Übung mit GitHub, die von Vorteil für dich sein wird.
Im bereitgestellten Code auf GitHub (siehe Link unten) wurde ein Interface mit allen Methoden erstellt. Die Aufgabe besteht darin, eine Klassenimplementierung zu erstellen und dieses Interface zu implementieren, indem alle Methoden überschrieben werden.
Nach Abschluss sollten die von mir bereitgestellten Tests ausgeführt werden; damit wird die Lösung automatisch überprüft.
Es können auch Zwischentests in der main-Klasse durchgeführt werden. Insgesamt setze ich auf deine Ehrlichkeit und Eigenständigkeit. Ein wahrer Programmierer sollte in der Lage sein, Code eigenständig zu verstehen!
- Zunächst drei Attribute in dieser Klasse anlegen:
backStack,forwardStackundcurrentUrl. - Anschließend einen Konstruktor für diese Klasse automatisch generieren lassen.
- Das Schlüsselwort implements verwenden und alle Methoden des
BrowserHistory-Interfaces überschreiben. - In den Methoden die zuvor erlernten Methoden von
DequeoderStackverwenden. Beachte, dassDequeeine moderne und überlegene Alternative zurStack-Datenstruktur darstellt.
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;
}
}
Danke für Ihr Feedback!