Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Uitdaging: Implementatie van Browsergeschiedenis | Geavanceerde Datastructuren in Java
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Java Datastructuren

bookUitdaging: Implementatie van Browsergeschiedenis

Taak

In het vorige hoofdstuk heb je een systeem geïmplementeerd met twee knoppen, vooruit en achteruit, met behulp van de verouderde Stack datastructuur, die niet wordt aanbevolen voor gebruik in moderne Java-ontwikkeling.

In dit hoofdstuk is het jouw taak om de logica die je hebt gebruikt om de BrowserHistory-klasse te implementeren, te herinneren en deze te implementeren met behulp van de Deque datastructuur.

Probeer niet naar het vorige hoofdstuk te kijken en voltooi deze taak zelfstandig—oftewel, "hercodeer de code." Dit is ook uitstekende oefening met GitHub, wat voordelig voor je zal zijn.

Een interface met alle methoden is aangemaakt in de code die beschikbaar is op GitHub via de onderstaande link. Jouw taak is om een klasse-implementatie te maken en deze interface te implementeren door alle methoden te overschrijven.

Zodra je klaar bent, voer de tests uit die ik voor je heb geschreven; hiermee wordt je oplossing automatisch gecontroleerd.

Je kunt ook tussentijdse tests uitvoeren in de main-klasse. Over het algemeen vertrouw ik op je eerlijkheid en zelfstandigheid. Een echte programmeur moet zelfstandig code kunnen begrijpen!

  • Begin met het aanmaken van drie attributen in deze klasse: backStack, forwardStack en currentUrl.
  • Gebruik vervolgens een autogenerator om de constructor voor deze klasse te maken.
  • Gebruik het implements-keyword en overschrijf alle methoden van de BrowserHistory-interface.
  • Gebruik in de methoden de Deque- of Stack-methoden die je eerder hebt geleerd. Onthoud dat Deque een moderne en superieure vervanging is voor de Stack datastructuur.
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;
    }
}
Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 5

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

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?

bookUitdaging: Implementatie van Browsergeschiedenis

Veeg om het menu te tonen

Taak

In het vorige hoofdstuk heb je een systeem geïmplementeerd met twee knoppen, vooruit en achteruit, met behulp van de verouderde Stack datastructuur, die niet wordt aanbevolen voor gebruik in moderne Java-ontwikkeling.

In dit hoofdstuk is het jouw taak om de logica die je hebt gebruikt om de BrowserHistory-klasse te implementeren, te herinneren en deze te implementeren met behulp van de Deque datastructuur.

Probeer niet naar het vorige hoofdstuk te kijken en voltooi deze taak zelfstandig—oftewel, "hercodeer de code." Dit is ook uitstekende oefening met GitHub, wat voordelig voor je zal zijn.

Een interface met alle methoden is aangemaakt in de code die beschikbaar is op GitHub via de onderstaande link. Jouw taak is om een klasse-implementatie te maken en deze interface te implementeren door alle methoden te overschrijven.

Zodra je klaar bent, voer de tests uit die ik voor je heb geschreven; hiermee wordt je oplossing automatisch gecontroleerd.

Je kunt ook tussentijdse tests uitvoeren in de main-klasse. Over het algemeen vertrouw ik op je eerlijkheid en zelfstandigheid. Een echte programmeur moet zelfstandig code kunnen begrijpen!

  • Begin met het aanmaken van drie attributen in deze klasse: backStack, forwardStack en currentUrl.
  • Gebruik vervolgens een autogenerator om de constructor voor deze klasse te maken.
  • Gebruik het implements-keyword en overschrijf alle methoden van de BrowserHistory-interface.
  • Gebruik in de methoden de Deque- of Stack-methoden die je eerder hebt geleerd. Onthoud dat Deque een moderne en superieure vervanging is voor de Stack datastructuur.
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;
    }
}
Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 5
some-alt