Sfida: Implementazione di CronologiaBrowser
Compito
Nel capitolo precedente, hai implementato un sistema con due pulsanti, avanti e indietro, utilizzando la struttura dati Stack, ormai obsoleta e non raccomandata nello sviluppo Java moderno.
In questo capitolo, il tuo compito è ricordare la logica utilizzata per implementare la classe BrowserHistory e realizzarla utilizzando la struttura dati Deque.
Cerca di non consultare il capitolo precedente e completa questo compito autonomamente—per così dire, "riscrivi il codice". Questo è anche un ottimo esercizio con GitHub, che sarà vantaggioso per te.
Un'interfaccia con tutti i metodi è stata creata nel codice disponibile su GitHub tramite il link sottostante. Il tuo compito è creare una implementazione della classe e implementare questa interfaccia sovrascrivendo tutti i suoi metodi.
Una volta terminato, esegui i test che ho scritto per te; verificheranno automaticamente la tua soluzione.
Puoi anche eseguire test intermedi nella classe main. In generale, faccio affidamento sulla tua onestà e indipendenza. Un vero programmatore dovrebbe essere in grado di comprendere il codice in modo autonomo!
- Inizia creando tre attributi in questa classe:
backStack,forwardStackecurrentUrl. - Successivamente, utilizza un generatore automatico per creare il costruttore di questa classe.
- Usa la parola chiave implements e sovrascrivi tutti i metodi dell'interfaccia
BrowserHistory. - Nei metodi, utilizza i metodi di
DequeoStackche hai appreso in precedenza. Ricorda cheDequeè una sostituzione moderna e superiore rispetto alla struttura datiStack.
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;
}
}
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Fantastico!
Completion tasso migliorato a 4
Sfida: Implementazione di CronologiaBrowser
Scorri per mostrare il menu
Compito
Nel capitolo precedente, hai implementato un sistema con due pulsanti, avanti e indietro, utilizzando la struttura dati Stack, ormai obsoleta e non raccomandata nello sviluppo Java moderno.
In questo capitolo, il tuo compito è ricordare la logica utilizzata per implementare la classe BrowserHistory e realizzarla utilizzando la struttura dati Deque.
Cerca di non consultare il capitolo precedente e completa questo compito autonomamente—per così dire, "riscrivi il codice". Questo è anche un ottimo esercizio con GitHub, che sarà vantaggioso per te.
Un'interfaccia con tutti i metodi è stata creata nel codice disponibile su GitHub tramite il link sottostante. Il tuo compito è creare una implementazione della classe e implementare questa interfaccia sovrascrivendo tutti i suoi metodi.
Una volta terminato, esegui i test che ho scritto per te; verificheranno automaticamente la tua soluzione.
Puoi anche eseguire test intermedi nella classe main. In generale, faccio affidamento sulla tua onestà e indipendenza. Un vero programmatore dovrebbe essere in grado di comprendere il codice in modo autonomo!
- Inizia creando tre attributi in questa classe:
backStack,forwardStackecurrentUrl. - Successivamente, utilizza un generatore automatico per creare il costruttore di questa classe.
- Usa la parola chiave implements e sovrascrivi tutti i metodi dell'interfaccia
BrowserHistory. - Nei metodi, utilizza i metodi di
DequeoStackche hai appreso in precedenza. Ricorda cheDequeè una sostituzione moderna e superiore rispetto alla struttura datiStack.
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;
}
}
Grazie per i tuoi commenti!