Utfordring: Implementering av Browserhistorikk
Oppgave
I forrige kapittel implementerte du et system med to knapper, fremover og bakover, ved bruk av den utdaterte Stack-datastrukturen, som ikke anbefales for bruk i moderne Java-utvikling.
I dette kapittelet er oppgaven din å huske logikken du brukte for å implementere BrowserHistory-klassen og implementere den ved hjelp av Deque-datastrukturen.
Forsøk å ikke se på forrige kapittel og fullfør denne oppgaven på egenhånd—så å si, "kode om koden." Dette er også utmerket øvelse med GitHub, noe som vil være gunstig for deg.
Et grensesnitt med alle metodene er opprettet i koden som er tilgjengelig på GitHub via lenken nedenfor. Din oppgave er å lage en klasseimplementasjon og implementere dette grensesnittet ved å overstyre alle dets metoder.
Når du er ferdig, kjør testene som jeg har skrevet for deg; det vil automatisk sjekke løsningen din.
Du kan også utføre mellomtester i main-klassen. Alt i alt stoler jeg på din ærlighet og selvstendighet. En ekte programmerer bør kunne forstå kode på egenhånd!
- Start med å opprette tre attributter i denne klassen:
backStack,forwardStackogcurrentUrl. - Bruk deretter en autogenerator for å lage konstruktøren for denne klassen.
- Bruk implements-nøkkelordet og overstyr alle metodene i
BrowserHistory-grensesnittet. - I metodene, bruk
Deque- ellerStack-metodene du har lært tidligere. Husk atDequeer en moderne og bedre erstatning forStack-datastrukturen.
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;
}
}
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Fantastisk!
Completion rate forbedret til 4
Utfordring: Implementering av Browserhistorikk
Sveip for å vise menyen
Oppgave
I forrige kapittel implementerte du et system med to knapper, fremover og bakover, ved bruk av den utdaterte Stack-datastrukturen, som ikke anbefales for bruk i moderne Java-utvikling.
I dette kapittelet er oppgaven din å huske logikken du brukte for å implementere BrowserHistory-klassen og implementere den ved hjelp av Deque-datastrukturen.
Forsøk å ikke se på forrige kapittel og fullfør denne oppgaven på egenhånd—så å si, "kode om koden." Dette er også utmerket øvelse med GitHub, noe som vil være gunstig for deg.
Et grensesnitt med alle metodene er opprettet i koden som er tilgjengelig på GitHub via lenken nedenfor. Din oppgave er å lage en klasseimplementasjon og implementere dette grensesnittet ved å overstyre alle dets metoder.
Når du er ferdig, kjør testene som jeg har skrevet for deg; det vil automatisk sjekke løsningen din.
Du kan også utføre mellomtester i main-klassen. Alt i alt stoler jeg på din ærlighet og selvstendighet. En ekte programmerer bør kunne forstå kode på egenhånd!
- Start med å opprette tre attributter i denne klassen:
backStack,forwardStackogcurrentUrl. - Bruk deretter en autogenerator for å lage konstruktøren for denne klassen.
- Bruk implements-nøkkelordet og overstyr alle metodene i
BrowserHistory-grensesnittet. - I metodene, bruk
Deque- ellerStack-metodene du har lært tidligere. Husk atDequeer en moderne og bedre erstatning forStack-datastrukturen.
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;
}
}
Takk for tilbakemeldingene dine!