Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Haaste: Selaushistorian Toteuttaminen | Edistyneet Tietorakenteet Javassa
Java-tietorakenteet

bookHaaste: Selaushistorian Toteuttaminen

Tehtävä

Edellisessä luvussa toteutit järjestelmän, jossa oli kaksi painiketta, eteenpäin ja taaksepäin, käyttäen vanhentunutta Stack-tietorakennetta, jonka käyttöä ei suositella nykyaikaisessa Java-kehityksessä.

Tässä luvussa tehtävänäsi on palata mieleen aiemmin käyttämäsi logiikka BrowserHistory-luokan toteuttamiseksi ja toteuttaa se käyttäen Deque-tietorakennetta.

Yritä olla katsomatta edelliseen lukuun ja suorita tämä tehtävä itsenäisesti—niin sanotusti "kirjoita koodi uudelleen". Tämä on myös erinomaista harjoitusta GitHubin kanssa, josta on sinulle hyötyä.

Rajapinta, jossa on kaikki metodit, on luotu GitHubissa olevan koodin kautta alla olevan linkin kautta. Tehtävänäsi on luoda luokan toteutus ja toteuttaa tämä rajapinta ylikirjoittamalla kaikki sen metodit.

Kun olet valmis, aja testit, jotka olen kirjoittanut sinulle; ne tarkistavat ratkaisusi automaattisesti.

Voit myös suorittaa välitestauksia main-luokassa. Luotan yleisesti rehellisyyteesi ja itsenäisyyteesi. Todellisen ohjelmoijan tulee pystyä ymmärtämään koodia itsenäisesti!

  • Aloita luomalla kolme attribuuttia tähän luokkaan: backStack, forwardStack ja currentUrl.
  • Seuraavaksi käytä automaattista generaattoria tämän luokan konstruktorin luomiseen.
  • Käytä implements-avainsanaa ja ylikirjoita kaikki BrowserHistory-rajapinnan metodit.
  • Käytä metodeissa aiemmin oppimiasi Deque- tai Stack-menetelmiä. Muista, että Deque on nykyaikainen ja parempi korvaaja Stack-tietorakenteelle.
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;
    }
}
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 5

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

bookHaaste: Selaushistorian Toteuttaminen

Pyyhkäise näyttääksesi valikon

Tehtävä

Edellisessä luvussa toteutit järjestelmän, jossa oli kaksi painiketta, eteenpäin ja taaksepäin, käyttäen vanhentunutta Stack-tietorakennetta, jonka käyttöä ei suositella nykyaikaisessa Java-kehityksessä.

Tässä luvussa tehtävänäsi on palata mieleen aiemmin käyttämäsi logiikka BrowserHistory-luokan toteuttamiseksi ja toteuttaa se käyttäen Deque-tietorakennetta.

Yritä olla katsomatta edelliseen lukuun ja suorita tämä tehtävä itsenäisesti—niin sanotusti "kirjoita koodi uudelleen". Tämä on myös erinomaista harjoitusta GitHubin kanssa, josta on sinulle hyötyä.

Rajapinta, jossa on kaikki metodit, on luotu GitHubissa olevan koodin kautta alla olevan linkin kautta. Tehtävänäsi on luoda luokan toteutus ja toteuttaa tämä rajapinta ylikirjoittamalla kaikki sen metodit.

Kun olet valmis, aja testit, jotka olen kirjoittanut sinulle; ne tarkistavat ratkaisusi automaattisesti.

Voit myös suorittaa välitestauksia main-luokassa. Luotan yleisesti rehellisyyteesi ja itsenäisyyteesi. Todellisen ohjelmoijan tulee pystyä ymmärtämään koodia itsenäisesti!

  • Aloita luomalla kolme attribuuttia tähän luokkaan: backStack, forwardStack ja currentUrl.
  • Seuraavaksi käytä automaattista generaattoria tämän luokan konstruktorin luomiseen.
  • Käytä implements-avainsanaa ja ylikirjoita kaikki BrowserHistory-rajapinnan metodit.
  • Käytä metodeissa aiemmin oppimiasi Deque- tai Stack-menetelmiä. Muista, että Deque on nykyaikainen ja parempi korvaaja Stack-tietorakenteelle.
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;
    }
}
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 5
some-alt