Aula 08 – Design de Software e SOLID
🎯 Objetivos de Aprendizagem
- Entender os princípios de um bom design de software.
- Compreender os conceitos de Acoplamento e Coesão.
- Introduzir o princípio KISS e DRY.
- Conhecer os Princípios SOLID (visão geral).
📚 Conteúdo
1. Design de Software
Design não é apenas sobre cores e botões; em engenharia, é sobre a organização interna do código. Um bom design torna o software fácil de mudar e difícil de quebrar.
O Código Espaguete
Sem design, o código se torna um amontoado confuso de funções dependentes. O objetivo do design é manter a ordem.
2. Conceitos Fundamentais
A) Coesão (O foco)
Cada parte do sistema deve fazer apenas uma coisa e fazê-la muito bem.
Alta Coesão
Imagine uma caixa de ferramentas. Cada ferramenta tem uma função única. Você não usa um martelo para parafusar.
B) Acoplamento (A dependência)
O quanto uma parte do sistema depende de outra. Queremos que as partes sejam independentes.
Baixo Acoplamento
Se você mudar o formato do banco de dados e precisar mexer em 50 arquivos diferentes, seu acoplamento está alto.
3. Princípios Práticos
- KISS (Keep It Simple, Stupid): Mantenha as coisas simples. Se há duas formas de resolver, escolha a mais óbvia.
- DRY (Don't Repeat Yourself): Não se repita. Se você copiou e colou código, você falhou no design.
4. SOLID (Os 5 Pilares)
graph TD
S["Single Responsibility"]
O["Open/Closed"]
L["Liskov Substitution"]
I["Interface Segregation"]
D["Dependency Inversion"]
📝 Exercícios Progressivos
- [Básico] O que é "Coesão" em design de software?
- [Básico] O que significa a sigla DRY?
- [Intermediário] Por que um alto acoplamento é prejudicial para a manutenção?
- [Intermediário] Explique o princípio KISS com um exemplo do mundo real.
- [Desafio] Escolha DOIS princípios do SOLID e tente explicar a importância deles para um sistema que precisa crescer muito.
🚀 Mini-Projeto 08: Refatorando o Caos
Abaixo está um pseudo-código:
função ProcessarPedido(id) { ValidarEstoque(); CobrarCartao(); EnviarEmailConfirmacao(); GerarNotaFiscal(); }
Como você separaria essa função seguindo o princípio de Responsabilidade Única (SRP)?
📅 Atividades
- [ ] Ver Slides da Aula
- [ ] Fazer Quiz
- [ ] Praticar Exercícios
- [ ] Realizar Projeto