Este projeto foi desenvolvido com o propósito fundamental de estudo e prática avançada dos conceitos de Programação Orientada a Objetos (POO) e Arquitetura de Software. Atuando como um "projeto norteador" acadêmico, ele serve como um guia prático para a compreensão de como planejar, estruturar e evoluir uma aplicação desktop comercial completa utilizando Java, desde a modelagem de classes e regras de negócio até a persistência segura de dados e geração de relatórios.
![]() Tela Inicial do Sistema |
![]() Tela de Cadastro de Cliente |
![]() Gráfico: Serviços Mais Contratados |
![]() Impressão de Comprovante de OS |
O sistema evoluiu de um simples CRUD para uma plataforma completa de gestão de lava-rápido, incluindo:
- Gestão de Cadastros (CRUDs): Controle completo de Clientes (Pessoa Física e Jurídica), Veículos, Modelos, Marcas, Cores e Serviços.
- Processamento de Ordens de Serviço (OS): Criação, alteração e cancelamento de OS. O sistema conta com regras de negócio embutidas, como o cálculo automático do valor do serviço baseado na categoria (tamanho) do veículo e controle de status da OS.
- Fidelização e Pontuação: Sistema automatizado de pontuação de clientes atrelado ao ciclo de vida (transação) das Ordens de Serviço.
- Dashboards e Gráficos Gerenciais: Visualização de dados estratégicos através da biblioteca nativa do JavaFX, incluindo:
- Gráfico de Linhas: Evolução do Faturamento Mensal.
- Gráfico de Barras: Volume de Vendas por Mês.
- Gráfico de Pizza: Distribuição dos Serviços Mais Contratados.
- Emissão de Relatórios e Comprovantes: Geração de arquivos de impressão profissionais utilizando a biblioteca JasperReports, permitindo imprimir comprovantes de OS e relatórios de cadastros.
O sistema foi construído visando as melhores práticas de engenharia de software, separando estritamente as responsabilidades do código através do padrão MVC (Model-View-Controller):
- View: Desenvolvida em JavaFX (utilizando arquivos
.fxmle estilização padronizada com.css). É a camada responsável por toda a interface gráfica interativa, como menus, janelas de diálogo flutuantes, tabelas de listagem e gráficos. Nenhuma regra de negócio habita esta camada. - Controller: Atua como o "maestro" da aplicação. Ele captura as interações do usuário na View, injeta dados dinâmicos na tela, controla o estado da interface (bloqueios e validações visuais) e aciona as operações correspondentes no Model.
- Model: O coração da aplicação. Contém as regras de negócio puras, as classes de domínio (utilizando herança, composição, associações e enumerações) e a estrutura de acesso a dados.
Um dos grandes focos deste projeto é a robustez na persistência de dados. O padrão DAO foi implementado estritamente dentro do pacote Model para isolar todo o código de comunicação com o Banco de Dados Relacional.
- Responsabilidade Única: As classes de domínio (como
OrdemServicoouCliente) não conhecem o banco de dados. Toda instrução deINSERT,UPDATE,DELETEeSELECTé feita exclusivamente pelas classes DAO. - Transações ACID: O sistema utiliza o controle manual de transações do JDBC (
connection.setAutoCommit(false)ecommit()). Isso garante que operações complexas (como salvar uma OS, seus itens e atualizar a pontuação do cliente) sejam executadas como um bloco único. Se houver qualquer falha, orollback()entra em ação, prevenindo dados inconsistentes ou "quebrados" no banco.
- Linguagem: Java (JDK 21+)
- Interface Gráfica: JavaFX e Scene Builder (Estilizado via CSS)
- Relatórios: Jaspersoft Studio / JasperReports
- Banco de Dados: MySQL (Conexão nativa via JDBC)
- Design Patterns: MVC, DAO e Factory Pattern (para fabricação de conexões com o banco).
Durante o desenvolvimento contínuo deste sistema, os seguintes conceitos fundamentais foram colocados em prática:
- Pilares da POO: Encapsulamento, Herança, Abstração e Polimorfismo.
- Relacionamentos estruturais: Agregação e Composição (ex: Ordem de Serviço gerenciando o ciclo de vida dos Itens da OS).
- Uso de coleções (
List,Map,HashMap,ObservableList) e laços de repetição aprimorados (For-Each). - Tratamento de Exceções Personalizadas para blindar as regras de negócio.
Desenvolvido por Luciano Simas Junior como Projeto Norteador acadêmico da disciplina de Programação Orientada a Objetos.
Orientador do projeto: Dr. Marcos André Pisching.



