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

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