Catalog · How the catalog works
Calculadora-Extens-vel
- ★ 2 on GitHub
Anyone may press Interesting, signed in or not. It helps others find this project.
README
🧮 Módulo 1 — Calculadora Extensível (Delphi + SOLID + Clean Architecture)
Este repositório contém o primeiro módulo da jornada de estudos em Clean Architecture, SOLID e Design Patterns aplicados em Delphi.
O objetivo deste mini-projeto é construir uma calculadora extensível, aplicando conceitos fundamentais de arquitetura limpa e padrões de projeto.
Ele é simples, mas poderoso o suficiente para servir como base para projetos maiores.
🎯 Objetivos do Módulo
- Aprender a estruturar um projeto Delphi seguindo boas práticas.
- Aplicar princípios SOLID em um cenário real.
- Implementar o padrão Strategy para operações matemáticas.
- Utilizar o Factory Method para criar objetos sem acoplamento.
- Criar um projeto extensível, onde novas operações podem ser adicionadas sem modificar código existente.
🟦 /domain
Contém as regras de negócio puras:
- Interface
IOperacao - Implementações concretas das operações matemáticas.
🟩 /application
Contém a lógica de criação/despacho:
TOperacaoFactory(Factory Method)
🟧 /ui
Contém apenas a interface gráfica (VCL):
- Formulário principal com campos, seleção e resultado.
🧩 Padrões e Princípios Utilizados
✔ SOLID
1. SRP — Single Responsibility Principle
Cada operação (soma, subtração, multiplicação, divisão) é uma classe isolada com uma única responsabilidade.
2. OCP — Open/Closed Principle
Para adicionar uma nova operação, basta criar uma nova classe implementando IOperacao.
Nenhuma classe existente precisa ser alterada.
3. LSP — Liskov Substitution Principle
Todas as operações substituem corretamente a interface IOperacao sem alterar o comportamento esperado.
4. ISP — Interface Segregation Principle
A interface IOperacao é pequena, coesa e específica.
5. DIP — Dependency Inversion Principle
O formulário (UI) depende da abstração (IOperacao) em vez das classes concretas.
✔ Design Patterns
🎯 Strategy
Cada operação é uma “estratégia” diferente.
O usuário escolhe a operação e o sistema troca a estratégia em tempo de execução.
🎯 Factory Method
A classe TOperacaoFactory centraliza a criação das estratégias.
A UI não sabe “como” criar a operação — apenas informa qual deseja.
🧪 O que podemos aprender com este módulo?
Este módulo ensina uma base sólida para qualquer software bem escrito:
✔ Criar código extensível
Adicionar uma nova operação é fácil:
- Criar uma classe implementando
IOperacao - Registrar na factory
- Colocar no ComboBox
✔ Escrever código com baixo acoplamento
O Form não sabe nada sobre as classes concretas.
✔ Entender Clean Architecture na prática
Ainda que simplificado, o projeto separa UI / Application / Domain.
✔ Treinar o uso correto de interfaces
Proporciona abstração, teste e substituição fácil.
✔ Tratar erros com responsabilidade (ex.: divisão por zero)
🚀 Como executar
- Abra o projeto no Delphi (VCL).
- Certifique-se de que todas as units estejam nos caminhos corretos.
- Execute o programa.
- No formulário:
- Informe os valores A e B.
- Escolha a operação no ComboBox.
- Clique em Calcular.
O resultado aparecerá no label.
🔧 Tecnologias Utilizadas
- Delphi (Object Pascal)
- VCL
- Padrões de projeto: Strategy e Factory Method
- Princípios SOLID
- Arquitetura em camadas (Clean Architecture - versão inicial)
➕ Como adicionar uma nova operação?
Passo 1 — Criar a classe
TMinhaNovaOperacao = class(TInterfacedObject, IOperacao)
public
function Executar(A, B: Double): Double;
function Nome: string;
end;Passo 2 — Implementar suas regras
Passo 3 — Registrar na Factory
if Identificador = 'Minha Nova Operação' then
Exit(TMinhaNovaOperacao.Create);Passo 4 — Adicionar ao ComboBox na UI

