Sobre o Projeto
Aplicação desktop em Java utilizando JOptionPane para gerenciar dados de clientes e produtos com operações CRUD completas,
padrão DAO baseado em interfaces, validação de entrada e armazenamento em memória.
O projeto também utiliza Generics nas implementações de DAO, permitindo um código mais flexível e reutilizável.
Foi meu primeiro projeto em Java, desenvolvido em paralelo a uma aplicação CRUD semelhante com Swing no Apache NetBeans.
Uma visão rápida dos painéis principais da aplicação, exibindo a interface de usuário e o fluxo de navegação.
- Cadastro, busca, atualização e exclusão de clientes e produtos;
- Duas implementações DAO (
HashMapeHashSet), com uso de Generics para maior flexibilidade; - Interface com
JOptionPane, com feedback consistente e validação de entrada; - Reutilização de métodos auxiliares para prompts e validações;
- Utilização do CPF (para clientes) e código do produto (para produtos) como identificadores únicos;
- Interações de UI aprimoradas, com tratamento de erros e entradas nulas/vazias.
br.com.eaugusto.app: Ponto de entrada da aplicação e lógica da interface (App.java);br.com.eaugusto.domain: Modelos de domínio:ClienteProduct;br.com.eaugusto.dao: Interface DAO e suas implementações em memória (Map e Set);br.com.eaugusto.dao.generic: Implementações DAO genéricas baseadas em Generics;br.com.eaugusto.ui: Classes auxiliares para prompts e navegação de menu.
- Client: Contém os dados pessoais e de contato, sobrescreve
equalsehashCodecom base no CPF; - Product: Modelo de produto com código imutável e propriedades editáveis, sobrescreve
equalsehashCodecom base no código do produto; - IClientDAO / IProductDAO: Interfaces DAO que declaram as operações CRUD para clientes e produtos;
- ClientMapDAO / ProductMapDAO: Implementações de DAO com
HashMap; - ClientSetDAO / ProductSetDAO: Implementações de DAO com
HashSet; - GenericMapDAO / GenericSetDAO: Implementações genéricas de DAO usando Generics;
- App: Controla o fluxo da aplicação e a interação com o usuário via
JOptionPane; - PromptHelper / MenuHelper: Auxiliam na criação de prompts e menus, centralizando a lógica de interface.
- Certifique-se de ter o Java 15 ou superior instalado (requerido pelo uso de Text Blocks);
- Clique no botão
Clonee abra o projeto na sua IDE preferida (ex.: Spring Tools Suite, Eclipse, IntelliJ); - Execute a classe
App.javano pacotebr.com.eaugusto.app; - Utilize o menu principal para gerenciar registros de clientes e produtos.
- Adição do suporte completo a produtos na aplicação;
- Refatoração das implementações DAO para simplificar o armazenamento e utilizar Generics;
- Criação de DAO baseado em Set para clientes e produtos;
- Refatoração da lógica de menu e prompts para melhorar a legibilidade e manutenibilidade;
- Adição de documentação (Javadoc) em todas as classes e métodos relevantes.
- Implementação inicial da aplicação CRUD com clientes;
- Estruturação do padrão DAO e criação dos modelos de domínio;
- Validação aprimorada de entradas e melhorias na interface com o usuário.
- Java 15+ (uso de Text Blocks e sintaxe aprimorada);
- Sem dependências externas, aplicação feita em Java puro.
- Praticar a programação orientada a objetos com Java;
- Aprender a implementar interfaces e padrões de armazenamento em memória;
- Construir aplicações desktop simples com
JOptionPane; - Utilizar Generics para criar implementações DAO reutilizáveis e flexíveis;
- Escrever código legível, manutenível e seguro.
Este projeto foi desenvolvido com o Spring Tools Suite 4 (STS4), com foco em diálogos via JOptionPane para a interface do usuário.
Existe também um projeto CRUD relacionado, desenvolvido no Apache NetBeans, utilizando Swing para a interface gráfica. Ambos compartilham funcionalidades semelhantes, mas exploram diferentes tecnologias de UI no ecossistema Java desktop.
Confira o repositório relacionado:
Java_CRUD_Example_Apache
