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
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!