Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

2
respostas

[Projeto] localiza-cep

Olá Rede, resolvo compartilhar minha resolução do desafio proposto pela Alura, então resolvi por em prática e realizar um projeto.

localiza-cep

PACOTE APP :
  • Main
    Execução do Aplicativo
package br.com.daniel.localizacep.app;

public class Main {
    public static void main(String[] args) {
        new Menu().exibeMenu();
    }
}
  • Menu
    Menu de forma Interativa
// imports omitidos

public class Menu {
    private final Scanner leitura = new Scanner(System.in);
    private final ConsumoApi consumoApi = new ConsumoApi();
    private final GeradorDeArquivo gerarArquivo = new GeradorDeArquivo();

    public void exibeMenu() {
        while (true) {
            System.out.println("""
                    =======================================================
                    Bem-vindo ao LOCALIZA C.E.P!
                    Você pode consultar o CEP válido residente do BRASIL.
                    =======================================================
                    INSTRUÇÕES:
                    DIGITE [0] PARA SAIR.
                    """);
            System.out.println("Digite um CEP:");
            String cep = leitura.nextLine();
            String verifiy = cep;
            if (verifiy.length() < 2 & verifiy.contains("0")) {
                System.out.println("Saindo...");
                break;
            }
            try {

                Endereco endereco = consumoApi.consultaCep(cep);
                System.out.println(endereco);
                gerarArquivo.salvarJson(endereco);

            } catch (CepInvalidoException e) {

                System.out.println("Erro: " + e.getMessage());

            }
        }
    }
}
PACOTE EXCEPTION:
  • CepInvalidoException
    Para Tratar erro expecífico
package br.com.daniel.localizacep.exception;

public class CepInvalidoException extends RuntimeException {
    public CepInvalidoException(String message) {
        super(message);
    }
}
PACOTE MODEL:
  • Endereco (Record)
    Tratar as informações extraídas da API
package br.com.daniel.localizacep.model;

public record Endereco(String cep, String logradouro, String complemento, String localidade, String uf) {
    @Override
    public String toString() {
        String complementoFormatado =
                complemento.isBlank()
                        ? "Não informado"
                        : complemento;
        // Texto formatado omitido
        );
    }
}
PACOTE SERVICE:
  • ConsumoApi
    Consultar o endereco da aplicação
// Imports omitidos

public class ConsumoApi {
    public Endereco consultaCep(String cep) {
        URI endereco = URI.create("https://viacep.com.br/ws/" + cep + "/json/");
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                .uri(endereco)
                .build();
        HttpResponse<String> response = null;
        if (cep.length() != 8) {
            throw new CepInvalidoException("O CEP deve conter exatamente 8 dígitos.");
        }
        try {
            response = client
                    .send(request, HttpResponse.BodyHandlers.ofString());
        } catch (IOException | InterruptedException e) {
            throw new RuntimeException("Não foi possível obter o endereço a partir desse CEP.");
        } catch (CepInvalidoException e) {
            System.out.println("Error: "+e.getMessage());
        }
        finally {
            System.out.println("Operação concluída.");
        }
        var json = response.body();

        return new Gson().fromJson(json, Endereco.class);
    }
}
PACOTE UTIL:
  • GeradorDeArquivo
    Guardar informações consultadas em formato JSON
public class GeradorDeArquivo {
    public void salvarJson (Endereco endereco) {
        Gson gson = new GsonBuilder()
                .setPrettyPrinting()
                .create();

        try {

            FileWriter escrita =
                    new FileWriter(endereco.cep() + ".json");

            escrita.write(gson.toJson(endereco));
            escrita.close();

            System.out.println("Arquivo JSON gerado com sucesso.");

        } catch (IOException e) {

            throw new RuntimeException("Não foi possível gerar o arquivo.");

        }
    }
}

Aceito feedbacks e sugestão de melhoria!

Link do Repositório: https://github.com/D4nN3t0/localiza-cep
desenvolvido com ☕ por Daniel Avelino durante a formação Java na Alura.

2 respostas

Olá, Wagner. Como vai?

Parabéns pela execução da atividade e pela excelente estrutura de prompt que você montou! O seu exercício é um exemplo perfeito de como a técnica de prompts com múltiplos passos (também conhecida como encadeamento de tarefas ou chaining) é poderosa.

Ao pedir para a IA primeiro pesquisar as tendências e identificar os erros antes de redigir o texto final, você garantiu que o post gerado tivesse profundidade e relevância, evitando aquela linguagem genérica que muitas inteligências artificiais trazem quando recebem comandos simples.

O resultado ficou excelente e está totalmente alinhado com as melhores práticas de escrita para o LinkedIn. Vamos analisar os pontos fortes do seu post:


Pontos Fortes da Estrutura do seu Post

  • Gancho Inicial (Hook): As duas primeiras linhas curtas instigam a curiosidade e geram um senso de urgência ("Sua empresa pode estar cometendo um dos maiores erros... E talvez nem tenha percebido."). Isso é fundamental no LinkedIn para fazer o usuário clicar no botão "ver mais".
  • Escaneabilidade: O texto foi construído com frases curtas e espaçadas. Na tela de um celular ou computador, blocos densos de texto são ignorados. O seu formato convida à leitura fluida.
  • Foco em Pessoas e Liderança: Você tocou em conceitos muito fortes atualmente, como o Executive Branding e o Thought Leadership (Liderança de Pensamento). Em redes profissionais, o perfil institucional da empresa costuma ter muito menos alcance e engajamento do que o perfil das lideranças reais humanizando a marca.
  • Chamada para Ação (CTA): Terminar com uma pergunta direta ("Qual desses erros você mais vê acontecendo...") é a melhor estratégia para abrir espaço para o debate nos comentários, o que ajuda o algoritmo da rede a impulsionar o post.

Dica de Ouro para Postagens no LinkedIn

Como você utilizou um prompt focado em comunicação empresarial e obteve um ótimo esqueleto, uma dica de ouro para quando você for publicar esse conteúdo na sua rede real é a personalização com a sua própria voz (o seu toque humano).

As IAs são ótimas para estruturar a lógica, mas o post ganha ainda mais força quando você insere um exemplo real que você vivenciou. Você poderia, por exemplo, alterar a parte do storytelling adicionando uma linha como:

"Na minha trajetória na área de [sua área], cansei de ver empresas investindo rios de dinheiro em..."

Isso traz autoridade e mostra para a sua rede de contatos que aquele pensamento nasceu da sua experiência prática combinada com a tecnologia.

Parabéns pelo uso da ferramenta e por aplicar o conhecimento do curso com maestria!

Espero que possa ter lhe ajudado!

Olá Evandro, creio que tenha enviado a resposta para o post errado.