Skip to content

DhenSouza/CalculatorJavaFX

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🧮 CalculadoraFX com Arquitetura Limpa

Java JavaFX Maven License

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.


📷 Screenshot

Screenshot da Calculadora


✨ Funcionalidades (Features)

  • Operações Básicas: Suporte completo para adição, subtração, multiplicação e divisão.
  • Alta Precisão: Utiliza java.math.BigDecimal para todos os cálculos, garantindo precisão absoluta e evitando os erros de ponto flutuante comuns com double.
  • 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.
  • 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.

🛠️ Tecnologias e Arquitetura

Este projeto foi construído com foco na qualidade do código e na manutenibilidade.

Tecnologias

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

Arquitetura

O projeto é inspirado em Clean Architecture, dividindo as responsabilidades em três camadas distintas:

  1. 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 interface Operation. Isso adere aos princípios Aberto/Fechado e de Responsabilidade Única do SOLID.
  2. Camada de Aplicação (application):

    • Atua como orquestradora. A classe CalculatorService consome 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).
  3. 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 CalculatorController que 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.

🚀 Como Executar o Projeto

Você precisará ter o JDK 21 e o Apache Maven instalados.

  1. Clone o repositório:

    git clone [https://github.com/SEU_USUARIO/SEU_REPOSITORIO.git](https://github.com/SEU_USUARIO/SEU_REPOSITORIO.git)
  2. Navegue até a pasta do projeto:

    cd CalculatorFX
  3. Compile e instale as dependências com o Maven:

    mvn clean install
  4. Execute a aplicação:

    mvn javafx:run

📂 Estrutura do Projeto

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

🔮 Possíveis Melhorias Futuras

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

📄 Licença

Distribuído sob a licença MIT. Veja LICENSE para mais informações.

About

Simple calculator testing JavaFX library

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors