Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Sfida: Implementazione di CronologiaBrowser | Strutture Dati Avanzate in Java
Strutture Dati Java

bookSfida: 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, forwardStack e currentUrl.
  • 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 Deque o Stack che hai appreso in precedenza. Ricorda che Deque è una sostituzione moderna e superiore rispetto alla struttura dati Stack.
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;
    }
}
Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 5

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Suggested prompts:

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?

bookSfida: 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, forwardStack e currentUrl.
  • 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 Deque o Stack che hai appreso in precedenza. Ricorda che Deque è una sostituzione moderna e superiore rispetto alla struttura dati Stack.
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;
    }
}
Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 5
some-alt