Desafí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,forwardStackycurrentUrl. - 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
DequeoStackque has aprendido anteriormente. Recuerda queDequees un reemplazo moderno y superior para la estructura de datosStack.
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;
}
}
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
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?
Genial!
Completion tasa mejorada a 4
Desafí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,forwardStackycurrentUrl. - 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
DequeoStackque has aprendido anteriormente. Recuerda queDequees un reemplazo moderno y superior para la estructura de datosStack.
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;
}
}
¡Gracias por tus comentarios!