Desafio: Implementando BrowserHistory
Tarefa
No capítulo anterior, você implementou um sistema com dois botões, avançar e voltar, utilizando a estrutura de dados Stack obsoleta, que não é recomendada para uso no desenvolvimento Java moderno.
Neste capítulo, sua tarefa é recordar a lógica utilizada para implementar a classe BrowserHistory e implementá-la utilizando a estrutura de dados Deque.
Tente não consultar o capítulo anterior e complete esta tarefa por conta própria — ou seja, "recrie o código". Isso também é excelente prática com o GitHub, o que será benéfico para você.
Uma interface com todos os métodos já foi criada no código disponível no GitHub através do link abaixo. Sua tarefa é criar uma implementação de classe e implementar esta interface sobrescrevendo todos os seus métodos.
Quando terminar, execute os testes que escrevi para você; isso verificará automaticamente sua solução.
Você também pode realizar testes intermediários na classe main. No geral, confio em sua honestidade e independência. Um verdadeiro programador deve ser capaz de compreender código de forma independente!
- Comece criando três atributos nesta classe:
backStack,forwardStackecurrentUrl. - Em seguida, utilize um gerador automático para criar o construtor desta classe.
- Use a palavra-chave implements e sobrescreva todos os métodos da interface
BrowserHistory. - Nos métodos, utilize os métodos de
DequeouStackque você aprendeu anteriormente. Lembre-se de queDequeé uma substituição moderna e superior para a estrutura de dadosStack.
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;
}
}
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
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?
Incrível!
Completion taxa melhorada para 4
Desafio: Implementando BrowserHistory
Deslize para mostrar o menu
Tarefa
No capítulo anterior, você implementou um sistema com dois botões, avançar e voltar, utilizando a estrutura de dados Stack obsoleta, que não é recomendada para uso no desenvolvimento Java moderno.
Neste capítulo, sua tarefa é recordar a lógica utilizada para implementar a classe BrowserHistory e implementá-la utilizando a estrutura de dados Deque.
Tente não consultar o capítulo anterior e complete esta tarefa por conta própria — ou seja, "recrie o código". Isso também é excelente prática com o GitHub, o que será benéfico para você.
Uma interface com todos os métodos já foi criada no código disponível no GitHub através do link abaixo. Sua tarefa é criar uma implementação de classe e implementar esta interface sobrescrevendo todos os seus métodos.
Quando terminar, execute os testes que escrevi para você; isso verificará automaticamente sua solução.
Você também pode realizar testes intermediários na classe main. No geral, confio em sua honestidade e independência. Um verdadeiro programador deve ser capaz de compreender código de forma independente!
- Comece criando três atributos nesta classe:
backStack,forwardStackecurrentUrl. - Em seguida, utilize um gerador automático para criar o construtor desta classe.
- Use a palavra-chave implements e sobrescreva todos os métodos da interface
BrowserHistory. - Nos métodos, utilize os métodos de
DequeouStackque você aprendeu anteriormente. Lembre-se de queDequeé uma substituição moderna e superior para a estrutura de dadosStack.
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;
}
}
Obrigado pelo seu feedback!