Défi : Implémentation de l’Historique du Navigateur
Tâche
Dans le chapitre précédent, vous avez implémenté un système avec deux boutons, avant et arrière, en utilisant la structure de données Stack obsolète, qui n'est pas recommandée pour une utilisation en développement Java moderne.
Dans ce chapitre, il s'agit de vous rappeler la logique utilisée pour implémenter la classe BrowserHistory et de la réimplémenter en utilisant la structure de données Deque.
Essayez de ne pas consulter le chapitre précédent et réalisez cette tâche par vous-même—en quelque sorte, « recoder le code ». Il s'agit également d'un excellent exercice avec GitHub, ce qui sera bénéfique pour vous.
Une interface avec toutes les méthodes a été créée dans le code disponible sur GitHub via le lien ci-dessous. Votre tâche consiste à créer une implémentation de classe et à implémenter cette interface en redéfinissant toutes ses méthodes.
Une fois terminé, exécutez les tests que j'ai écrits pour vous ; cela vérifiera automatiquement votre solution.
Vous pouvez également effectuer des tests intermédiaires dans la classe main. Globalement, je compte sur votre honnêteté et autonomie. Un véritable programmeur doit être capable de comprendre le code de manière indépendante !
- Commencer par créer trois attributs dans cette classe :
backStack,forwardStacketcurrentUrl. - Ensuite, utiliser un générateur automatique pour créer le constructeur de cette classe.
- Utiliser le mot-clé implements et redéfinir toutes les méthodes de l'interface
BrowserHistory. - Dans les méthodes, utiliser les méthodes de
DequeouStackétudiées précédemment. Garder à l'esprit queDequeest une alternative moderne et supérieure à la structure de donnéesStack.
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;
}
}
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
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?
Génial!
Completion taux amélioré à 4
Défi : Implémentation de l’Historique du Navigateur
Glissez pour afficher le menu
Tâche
Dans le chapitre précédent, vous avez implémenté un système avec deux boutons, avant et arrière, en utilisant la structure de données Stack obsolète, qui n'est pas recommandée pour une utilisation en développement Java moderne.
Dans ce chapitre, il s'agit de vous rappeler la logique utilisée pour implémenter la classe BrowserHistory et de la réimplémenter en utilisant la structure de données Deque.
Essayez de ne pas consulter le chapitre précédent et réalisez cette tâche par vous-même—en quelque sorte, « recoder le code ». Il s'agit également d'un excellent exercice avec GitHub, ce qui sera bénéfique pour vous.
Une interface avec toutes les méthodes a été créée dans le code disponible sur GitHub via le lien ci-dessous. Votre tâche consiste à créer une implémentation de classe et à implémenter cette interface en redéfinissant toutes ses méthodes.
Une fois terminé, exécutez les tests que j'ai écrits pour vous ; cela vérifiera automatiquement votre solution.
Vous pouvez également effectuer des tests intermédiaires dans la classe main. Globalement, je compte sur votre honnêteté et autonomie. Un véritable programmeur doit être capable de comprendre le code de manière indépendante !
- Commencer par créer trois attributs dans cette classe :
backStack,forwardStacketcurrentUrl. - Ensuite, utiliser un générateur automatique pour créer le constructeur de cette classe.
- Utiliser le mot-clé implements et redéfinir toutes les méthodes de l'interface
BrowserHistory. - Dans les méthodes, utiliser les méthodes de
DequeouStackétudiées précédemment. Garder à l'esprit queDequeest une alternative moderne et supérieure à la structure de donnéesStack.
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;
}
}
Merci pour vos commentaires !