Skip to content

Latest commit

 

History

History
87 lines (82 loc) · 5.69 KB

File metadata and controls

87 lines (82 loc) · 5.69 KB

Projeto 1 - Java_CRUD_Example

📄 README In English:

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.

🖼️ Screenshot

Uma visão rápida dos painéis principais da aplicação, exibindo a interface de usuário e o fluxo de navegação.

Java CRUD Application Screenshot

📌 Funcionalidades

  • Cadastro, busca, atualização e exclusão de clientes e produtos;
  • Duas implementações DAO (HashMap e HashSet), 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.

🗂️ Estrutura de Pacotes

  • 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: Client e Product;
  • 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.

🧩 Visão Geral das Classes

  • Client: Contém os dados pessoais e de contato, sobrescreve equals e hashCode com base no CPF;
  • Product: Modelo de produto com código imutável e propriedades editáveis, sobrescreve equals e hashCode com 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.

🚀 Como Executar

  1. Certifique-se de ter o Java 15 ou superior instalado (requerido pelo uso de Text Blocks);
  2. Clique no botão Clone e abra o projeto na sua IDE preferida (ex.: Spring Tools Suite, Eclipse, IntelliJ);
  3. Execute a classe App.java no pacote br.com.eaugusto.app;
  4. Utilize o menu principal para gerenciar registros de clientes e produtos.

📅 Principais Commits

Junho 2025

  • 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.

Maio 2025

  • 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.

📌 Requisitos

  • Java 15+ (uso de Text Blocks e sintaxe aprimorada);
  • Sem dependências externas, aplicação feita em Java puro.

📚 Objetivos de Aprendizado

  • 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.

🔗 Projetos Relacionados

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