Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Desafío: Implementación de BrowserHistory | Estructuras de Datos Avanzadas en Java
Estructuras de Datos en Java

bookDesafío: Implementación de BrowserHistory

Tarea

En el capítulo anterior, implementaste un sistema con dos botones, avanzar y retroceder, utilizando la estructura de datos Stack, que es obsoleta y no se recomienda para el desarrollo moderno en Java.

En este capítulo, tu tarea es recordar la lógica que usaste para implementar la clase BrowserHistory y reimplementarla utilizando la estructura de datos Deque.

Intenta no consultar el capítulo anterior y completa esta tarea por tu cuenta—por así decirlo, "reprograma el código". Esto también es una excelente práctica con GitHub, lo cual será beneficioso para ti.

En el código disponible en GitHub mediante el enlace a continuación, se ha creado una interfaz con todos los métodos. Tu tarea es crear una implementación de clase e implementar esta interfaz sobrescribiendo todos sus métodos.

Una vez que termines, ejecuta las pruebas que he escrito para ti; esto verificará automáticamente tu solución.

También puedes realizar pruebas intermedias en la clase main. En general, confío en tu honestidad e independencia. Un verdadero programador debe ser capaz de entender el código de forma independiente!

  • Comienza creando tres atributos en esta clase: backStack, forwardStack y currentUrl.
  • Luego, utiliza un generador automático para crear el constructor de esta clase.
  • Usa la palabra clave implements y sobrescribe todos los métodos de la interfaz BrowserHistory.
  • En los métodos, utiliza los métodos de Deque o Stack que has aprendido anteriormente. Recuerda que Deque es un reemplazo moderno y superior para la estructura de datos 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;
    }
}
¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 5

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

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?

bookDesafío: Implementación de BrowserHistory

Desliza para mostrar el menú

Tarea

En el capítulo anterior, implementaste un sistema con dos botones, avanzar y retroceder, utilizando la estructura de datos Stack, que es obsoleta y no se recomienda para el desarrollo moderno en Java.

En este capítulo, tu tarea es recordar la lógica que usaste para implementar la clase BrowserHistory y reimplementarla utilizando la estructura de datos Deque.

Intenta no consultar el capítulo anterior y completa esta tarea por tu cuenta—por así decirlo, "reprograma el código". Esto también es una excelente práctica con GitHub, lo cual será beneficioso para ti.

En el código disponible en GitHub mediante el enlace a continuación, se ha creado una interfaz con todos los métodos. Tu tarea es crear una implementación de clase e implementar esta interfaz sobrescribiendo todos sus métodos.

Una vez que termines, ejecuta las pruebas que he escrito para ti; esto verificará automáticamente tu solución.

También puedes realizar pruebas intermedias en la clase main. En general, confío en tu honestidad e independencia. Un verdadero programador debe ser capaz de entender el código de forma independiente!

  • Comienza creando tres atributos en esta clase: backStack, forwardStack y currentUrl.
  • Luego, utiliza un generador automático para crear el constructor de esta clase.
  • Usa la palabra clave implements y sobrescribe todos los métodos de la interfaz BrowserHistory.
  • En los métodos, utiliza los métodos de Deque o Stack que has aprendido anteriormente. Recuerda que Deque es un reemplazo moderno y superior para la estructura de datos 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;
    }
}
¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 5
some-alt