DEV Community

Tente isso 10-2: Criando um sistema de ajuda baseado em disco

  • A classe Help original exibia informações sobre instruções de controle Java com dados internos à classe.

  • A abordagem inicial exigia modificar o código-fonte para atualizar ou expandir as informações de ajuda.

  • O sistema anterior usava seleção numérica, inadequada para listas de tópicos extensas.

  • Para melhorar, foi criado um sistema de ajuda baseado em disco que armazena informações em um arquivo de texto.

  • Com o sistema baseado em disco, o usuário digita o nome do tópico desejado, que é procurado no arquivo, e as informações são exibidas se o tópico for encontrado.

1 Crie o arquivo de ajuda (chame esse arquivo de helpfile.txt) que será usado pelo sistema. O arquivo de ajuda é um arquivo de texto padrão organizado desta forma:
#nome-tópico1
info-tópico
#nome-tópico2
info tópico
.
.
.
#nome-tópicoN
info-tópico

O nome de cada tópico deve ser precedido por um símbolo # e deve estar em
uma linha própria. Anteceder o nome dos tópicos com um símbolo # permite
que o programa encontre rapidamente o início de cada tópico. Após o nome
do tópico, teremos algum número de linhas de informações sobre ele. No en
tanto, é preciso que haja uma linha em branco entre o fim das informações de um tópico e o início do próximo tópico e não podemos ter espaços no fim de nenhuma linha dos tópicos da ajuda.
Aqui está um arquivo de ajuda simples que você pode usar para testar o sistema de ajuda baseado em disco. Ele armazena informações sobre instruções de controle Java.

#if
if(condition) statement;
else statement;

#switch
switch(expression) {
case constant:
statement sequence
break;
// ...
}

#for
for(init; condition; iteration) statement;
#while
while(condition) statement;

#do
do {
statement;
} while (condition);

#break
break; or break label;

#continue
continue; or continue label;

2 Crie um arquivo chamado FileHelp.java

3 Comece a criar a nova classe Help com estas linhas de código.
class Help {
String helpfile; // nome do arquivo de ajuda
Help(String fname) {
helpfile = fname;
}

O nome do arquivo de ajuda é passado para o construtor de Help e armazenado na variável de instância helpfile. Já que cada instância de Help terá sua própria cópia de helpfile, cada uma pode usar um arquivo diferente. Logo, você pode criar diferentes conjuntos de arquivos de ajuda para conjuntos de tópicos distintos.

4 Adicione o método helpOn( ) mostrado aqui à classe Help. Esse método recupera ajuda sobre o tópico especificado.

O método helpOn() trata todas as exceções de I/O internamente, eliminando a necessidade de cláusulas throws.
Isso permite que outros códigos chamem helpOn() sem blocos try/catch.
O arquivo de ajuda é aberto com FileReader encapsulado em BufferedReader, facilitando a leitura de texto e a internacionalização.
helpOn() recebe o nome do tópico em what e abre o arquivo de ajuda.
Ele procura o tópico no arquivo, identificado pelo símbolo #.
Quando o tópico correspondente é encontrado, as informações são exibidas.
Se o tópico for encontrado, helpOn() retorna true; caso contrário, retorna false.

5 A classe Help também fornece um método chamado getSelection( ). Ele solicita um tópico e retorna o string inserido pelo usuário.

Top comments (0)