Uma calculadora gráfica desenvolvida em Java, utilizando Swing para a interface visual.
O projeto aplica conceitos de POO e o padrão Observer para integração entre a interface (visão) e a lógica de cálculo (modelo).
- Praticar os princípios de Programação Orientada a Objetos (encapsulamento, composição, coesão)
- Aplicar o padrão Observer para comunicação entre modelo e interface
- Desenvolver uma interface gráfica moderna com Java Swing
- Implementar a lógica completa de uma calculadora, com operações básicas e formatação numérica
A arquitetura segue o padrão MVC (Model-View-Controller) simplificado, separando modelo (lógica e estado) e visão (componentes Swing):
calculadora-swing/
├── src/br/com/calculadora/
│ ├── modelo/
│ │ ├── Memoria.java
│ │ └── MemoriaObservador.java
│ │
│ └── visao/
│ ├── Botao.java
│ ├── Calculadora.java
│ ├── Display.java
│ └── Teclado.java
│
├── .gitignore
├── README.md
Contém toda a lógica da calculadora:
Memoria.java
→ Gerencia o estado atual, histórico e operaçõesMemoriaObservador.java
→ Interface funcional que notifica alterações no display
Define a interface gráfica usando Swing:
Calculadora.java
→ Janela principal (JFrame
)Display.java
→ Mostra o número atual e o resultado das operaçõesTeclado.java
→ Organiza os botões comGridBagLayout
Botao.java
→ Estiliza os botões com cores e fontes personalizadas
git clone https://github.com/pitercoding/calculadora-swing.git
cd calculadora-swing
- Vá em File > Open...
- Selecione a pasta do projeto
- Configure o SDK do projeto para Java 17 ou superior
- Abra a classe
Calculadora.java
- Clique em Run
▶️
A calculadora será aberta em uma janela Swing.
- ➕ Soma
- ➖ Subtração
- ✖️ Multiplicação
- ➗ Divisão
- 🔁 Alterar sinal (±)
- 🧹 Limpar (AC)
- = Cálculo de resultado (=)
- ⚙️ Formatação com vírgula e precisão de casas decimais
A interface Swing é atualizada automaticamente sempre que o modelo (Memoria
) sofre alterações, por meio do padrão Observer:
Teclado
→ envia comandos para aMemoria
Memoria
→ processa e notifica os ObservadoresDisplay
→ atualiza o valor exibido na tela

- ☕ Java 21
- 🖥️ Swing / AWT
- 🧩 Padrão Observer
- 🧱 GridBagLayout e FlowLayout
- 🧪 Programação orientada a eventos
Este projeto é licenciado sob a MIT License — você é livre para usar, estudar e modificar.
Projeto desenvolvido como exercício prático baseado no Curso de Java da Cod3r.