Um projeto de calculadora de desktop moderna e responsiva desenvolvida com JavaFX e Maven. Mais do que uma simples calculadora, este projeto serve como uma demonstração prática de como aplicar princípios de Arquitetura Limpa (Clean Architecture) e SOLID em uma aplicação de desktop real.
- Operações Básicas: Suporte completo para adição, subtração, multiplicação e divisão.
- Alta Precisão: Utiliza
java.math.BigDecimalpara todos os cálculos, garantindo precisão absoluta e evitando os erros de ponto flutuante comuns comdouble. - Interface Responsiva: O layout se ajusta dinamicamente ao tamanho da janela, com botões que preenchem o espaço proporcionalmente.
- Feedback Visual:
- O botão da operação selecionada (
+,-,*,/) é destacado visualmente. - Botões específicos, como o de Limpar (
C), possuem estilos customizados para melhor usabilidade.
- O botão da operação selecionada (
- Arquitetura Profissional: Construído com uma separação clara de camadas (Domínio, Aplicação, Apresentação) para alta coesão, baixo acoplamento e testabilidade.
Este projeto foi construído com foco na qualidade do código e na manutenibilidade.
- Java 21: Versão moderna da linguagem Java.
- JavaFX 21: Framework para a construção da interface gráfica.
- Maven: Ferramenta de automação de build e gerenciamento de dependências.
- CSS: Utilizado para a estilização customizada dos componentes da UI.
O projeto é inspirado em Clean Architecture, dividindo as responsabilidades em três camadas distintas:
-
Camada de Domínio (
domain):- Contém a lógica de negócio mais pura e as regras essenciais.
- As operações matemáticas são implementadas seguindo o Padrão de Projeto Strategy, onde cada operação (
Addition,Division, etc.) é uma classe que implementa uma interfaceOperation. Isso adere aos princípios Aberto/Fechado e de Responsabilidade Única do SOLID.
-
Camada de Aplicação (
application):- Atua como orquestradora. A classe
CalculatorServiceconsome os objetos de domínio para executar os casos de uso (neste caso, o cálculo). - Ela não conhece detalhes de UI ou do banco de dados (se houvesse).
- Atua como orquestradora. A classe
-
Camada de Apresentação (
presentation):- Implementada com JavaFX seguindo o padrão MVC (Model-View-Controller).
- View: Arquivos FXML declarativos que definem a estrutura da UI.
- Controller: A classe
CalculatorControllerque lida com os eventos da UI, formata dados e delega o trabalho pesado para a camada de serviço. - A conexão entre as camadas é feita via Injeção de Dependência manual na classe
MainApp, garantindo o desacoplamento.
Você precisará ter o JDK 21 e o Apache Maven instalados.
-
Clone o repositório:
git clone [https://github.com/SEU_USUARIO/SEU_REPOSITORIO.git](https://github.com/SEU_USUARIO/SEU_REPOSITORIO.git)
-
Navegue até a pasta do projeto:
cd CalculatorFX -
Compile e instale as dependências com o Maven:
mvn clean install
-
Execute a aplicação:
mvn javafx:run
src
└── main
├── java
│ └── org/dhentech/calculator
│ ├── MainApp.java // Ponto de entrada, monta a aplicação
│ ├── application
│ │ └── CalculatorService.java // Camada de Serviço (orquestração)
│ ├── domain
│ │ ├── Operation.java // Interface do Strategy
│ │ └── operations
│ │ ├── Addition.java
│ │ └── ... // Outras operações
│ └── presentation
│ └── CalculatorController.java // Controller da UI
│
└── resources
└── org/dhentech/calculator
└── presentation
└── view
├── calculator-view.fxml // A View (estrutura da UI)
└── styles.css // Estilos customizados
- Adicionar mais operações (porcentagem, raiz quadrada, potência).
- Implementar um histórico de cálculos.
- Adicionar suporte a temas (claro/escuro).
- Implementar suporte completo ao teclado.
- Escrever a suíte de testes unitários e de integração (JUnit 5, Mockito, TestFX).
Distribuído sob a licença MIT. Veja LICENSE para mais informações.
