Table of Contents
📘 Paradigmas de Programação e Padrões de Projeto
Domine a arte de escrever código elegante, escalável e de fácil manutenção através do estudo dos paradigmas fundamentalistas e dos padrões de projeto consagrados.
Foco do Curso
Metodologia: Abordagem prática e comparativa entre diferentes estilos de programação, seguida pela aplicação de padrões de design (GoF) em cenários reais de desenvolvimento.
🎯 O Que Você Vai Aprender
-
Paradigmas de Programação --- Compreenda as raízes da computação: do imperativo ao funcional, entenda como o "jeito de pensar" afeta a solução. Ver Módulo 1
-
Princípios de Design --- Domine o SOLID, acoplamento e coesão. Aprenda a identificar "code smells" e a projetar sistemas flexíveis. Ver Princípios
-
Padrões Criacionais --- Aprenda Singleton, Factory, Builder e outros padrões para gerenciar a criação de objetos de forma desacoplada. Ver Padrões
-
Padrões Estruturais e Comportamentais --- Organize sistemas complexos e gerencie a interação entre objetos com Adapter, Strategy, Observer e MVC. Ver Projetos
📚 Jornada de Aprendizado (16 Aulas)
O curso é estruturado em cinco trilhas evolutivas.
🧱 Módulo 1: Fundamentos dos Paradigmas (Aulas 01-04)
- Aula 01 - Introdução aos Paradigmas 🧩
- Aula 02 - Imperativo e Estruturado 🏗️
- Aula 03 - Orientado a Objetos (POO) 📦
- Aula 04 - Paradigma Funcional ⚡
🏗️ Módulo 2: Comparação e Aplicação (Aulas 05-08)
- Aula 05 - Paradigmas na Prática ⚖️
- Aula 06 - Multi-Paradigma Moderno 🌐
- Aula 07 - Princípios SOLID 📐
- Aula 08 - Problemas de Design ⚠️
🔌 Módulo 3: Padrões Criacionais (Aulas 09-11)
- Aula 09 - Intro Design Patterns 📖
- Aula 10 - Singleton, Factory, Builder 🏭
- Aula 11 - Prática Criacional 🛠️
🚀 Módulo 4: Estruturais e Comportamentais (Aulas 12-15)
- Aula 12 - Padrões Estruturais 🔗
- Aula 13 - Padrões Comportamentais 🧠
- Aula 14 - MVC e Arquitetura 🏛️
- Aula 15 - Refatoração com Padrões ♻️
🎓 Módulo 5: Projeto Final (Aula 16)
Aulas
Aulas do Curso 📚
Acesse aqui todo o conteúdo teórico dividido em módulos de aprendizado.
-
Módulo 1: Fundamentos de Backend --- A base do desenvolvimento de APIs e Microsserviços.
-
Módulo 2: Manipulação de Dados --- Implementação robusta e persistência de dados.
-
Módulo 3: Segurança e Autenticação --- Protegendo sua API contra acessos não autorizados.
-
Módulo 4: Aplicações SPA (React) --- Criando o frontend moderno para consumir sua API.
Aula 01: Introdução aos Paradigmas de Programação 🧩
🎯 Objetivos da Aula
- [x] Compreender o que é um paradigma de programação.
- [x] Conhecer a evolução histórica das linguagens.
- [x] Identificar os principais problemas no desenvolvimento de software.
- [x] Ter uma visão geral dos paradigmas que serão estudados.
💡 O que é um Paradigma?
Um paradigma de programação é uma abordagem, um estilo ou uma forma de estruturar o pensamento para resolver problemas através do código. Não é uma linguagem em si, mas um modelo mental que define como o programador vê a execução do programa.
"Um paradigma é uma visão de mundo, um conjunto de conceitos e práticas que definem uma disciplina científica em um determinado período."
⌛ Evolução Histórica
A programação evoluiu de instruções binárias diretas para abstrações de altíssimo nível:
- Código de Máquina: Instruções diretas ao processador.
- Assembly: Mnemônicos para facilitar a leitura.
- Linguagens de Alto Nível (Fortran, C): Foco em procedimentos e lógica imperativa.
- Orientação a Objetos (Simula, Smalltalk, Java): Foco em modelar o mundo real.
- Declarativo/Funcional (Lisp, Haskell): Foco no "o que" fazer, não no "como".
📊 Panorama dos Paradigmas
graph TD
P[Paradigmas] --> I[Imperativos]
P --> D[Declarativos]
I --> Estruturado[Estruturado]
I --> POO[Orientado a Objetos]
D --> Funcional[Funcional]
D --> Logico[Lógico]
⚠️ Problemas Comuns no Desenvolvimento
- Complexidade: Sistemas grandes tornam-se difíceis de entender.
- Rigidez: Dificuldade em alterar o código sem quebrar outras partes.
- Fragilidade: Pequenas mudanças causam erros inesperados.
- Repetição: Código duplicado que dificulta a manutenção.
💻 Exemplo Comparativo (Soma de Lista)
Estilo Imperativo (Como fazer)
Estilo Funcional (O que fazer)
🚀 Mini-projeto: Analisador de Estilo
Nesta primeira aula, vamos apenas observar diferentes formas de resolver o mesmo problema e começar a treinar nosso "olhar arquitetural".
🎯 Próximos Passos
-
Slides
-
Quiz
-
Exercícios
-
Projeto
Aula 02: Paradigma Imperativo e Estruturado 🏗️
🎯 Objetivos da Aula
- [x] Compreender os fundamentos do paradigma imperativo.
- [x] Aprender sobre o teorema da programação estruturada.
- [x] Explorar variáveis, controle de fluxo e modularização.
- [x] Identificar vantagens e limitações desta abordagem.
💡 O Paradigma Imperativo
O paradigma imperativo é baseado na ideia de ordens (comandos) que alteram o estado do programa. Imagine uma receita de bolo: "pegue os ovos", "misture a farinha", "asse por 40 minutos".
Conceitos Chave:
- Estado: Os valores atuais das variáveis em um determinado momento.
- Comandos: Instruções que alteram o estado (atribuições, I/O).
🧱 Teorema da Programação Estruturada
Todo programa computável pode ser implementado usando apenas três estruturas básicas:
- Sequência: Instruções executadas uma após a outra.
- Seleção (Decisão):
if-else,switch. - Repetição (Iteração):
while,for.
📊 Fluxograma de Controle
graph TD
Start([Início]) --> Input[/Ler Valor/]
Input --> Decision{Valor > 10?}
Decision -- Sim --> Process[Dobrar Valor]
Decision -- Não --> End([Fim])
Process --> Output[/Mostrar Resultado/]
Output --> End
💻 Exemplo em Python (Imperativo)
# Estado inicial
contador = 1
total = 0
# Estrutura de repetição (Iteração)
while contador <= 5:
# Atribuição e alteração de estado
total += contador
contador += 1
print(f"Total acumulado: {total}")
🧠 Blocos de Destaque
Conceito: Efeito Colateral
No paradigma imperativo, funções costumam ter efeitos colaterais, ou seja, elas alteram variáveis fora de seu escopo local.
Atenção: Espaguete
O uso excessivo de comandos de salto (goto) ou lógica desestruturada pode levar ao famoso "código espaguete", difícil de manter.
🚀 Mini-projeto: Calculadora de Gastos
Vamos estruturar um pequeno script que lê gastos diários, calcula a média e aplica descontos usando apenas estruturas estruturadas.
🎯 Próximos Passos
-
Slides
-
Quiz
-
Exercícios
-
Projeto
Aula 03: Paradigma Orientado a Objetos (POO) 📦
🎯 Objetivos da Aula
- [x] Compreender os pilares da POO: Classe e Objeto.
- [x] Aprender sobre Encapsulamento, Herança e Polimorfismo.
- [x] Modelar sistemas simples usando objetos.
- [x] Comparar a abordagem OO com a estruturada.
💡 O que é POO?
A Orientação a Objetos é um paradigma que organiza o código em torno de dados (objetos) em vez de funções/lógica. Um objeto é uma "entidade" que possui características (atributos) e comportamentos (métodos).
🧱 Os 4 Pilares da POO
- Abstração: Focar apenas no que é essencial para o sistema.
- Encapsulamento: Esconder os detalhes internos e proteger os dados.
- Herança: Reutilizar comportamentos e atributos de classes pai.
- Polimorfismo: Capacidade de um objeto ser tratado de múltiplas formas.
📊 Diagrama de Classes (Herança)
classDiagram
class Animal {
+String nome
+fazerSom()*
}
class Cachorro {
+fazerSom()
}
class Gato {
+fazerSom()
}
Animal <|-- Cachorro
Animal <|-- Gato
💻 Exemplo Prático (Python)
class Veiculo:
def __init__(self, marca):
self._marca = marca # Encapsulamento (protegido)
def mover(self):
print(f"O {self._marca} está se movendo.")
class Carro(Veiculo): # Herança
def mover(self): # Polimorfismo
print(f"O carro {self._marca} está acelerando na estrada.")
meu_carro = Carro("Toyota")
meu_carro.mover()
🧠 Destaques
Dica de Modelagem
Sempre pergunte: "Isso É UM..." (para Herança) ou "Isso TEM UM..." (para Composição).
Vantagem principal
A POO brilha em sistemas grandes onde a reutilização de código e a organização modular são críticas para o sucesso.
🚀 Mini-projeto: Sistema de Biblioteca
Vamos modelar uma pequena biblioteca onde Livros e Usuários interagem através de objetos e métodos específicos.
🎯 Próximos Passos
-
Slides
-
Quiz
-
Exercícios
-
Projeto
Aula 04: Paradigma Funcional ⚡
🎯 Objetivos da Aula
- [x] Compreender o conceito de Programação Declarativa.
- [x] Aprender sobre Funções Puras e Efeitos Colaterais.
- [x] Entender a importância da Imutabilidade.
- [x] Manipular listas com funções de alta ordem (Map, Filter, Reduce).
💡 O Paradigma Funcional
Diferente do imperativo, o paradigma funcional trata a computação como a avaliação de funções matemáticas e evita mudar estados ou dados mutáveis.
Conceitos Fundamentais:
- Funções Puras: Dada a mesma entrada, sempre retornam a mesma saída e não causam efeitos colaterais.
- Imutabilidade: Uma vez criado, um dado não pode ser alterado. Cria-se um novo dado a partir do antigo.
📊 Fluxo Funcional (Map, Filter)
graph LR
Input[Lista Original] --> Filter[Filter: Pares]
Filter --> Map[Map: Dobro]
Map --> Output[Nova Lista]
💻 Exemplo Prático (Python)
numeros = [1, 2, 3, 4, 5, 6]
# Programação Declarativa / Funcional
pares = filter(lambda x: x % 2 == 0, numeros)
dobrados = map(lambda x: x * 2, pares)
print(list(dobrados)) # Output: [4, 8, 12]
🧠 Blocos de Destaque
Alta Ordem (Higher-Order)
Funções que recebem outras funções como argumento ou retornam funções. É a base da flexibilidade funcional.
Por que usar?
O código funcional tende a ser mais conciso, previsível e fácil de testar, além de ser excelente para processamento paralelo.
🚀 Mini-projeto: Analisador de Texto
Vamos criar um processador de texto que conta palavras, remove stop words e gera estatísticas usando apenas transformações de dados (sem loops for manuais).
🎯 Próximos Passos
-
Slides
-
Quiz
-
Exercícios
-
Projeto
Aula 05: Comparando Paradigmas na Prática ⚖️
🎯 Objetivos da Aula
- [x] Comparar a resolução do mesmo problema em diferentes paradigmas.
- [x] Identificar vantagens e desvantagens de cada abordagem.
- [x] Entender quando escolher um paradigma sobre outro.
💡 O Desafio: Filtro e Soma
Vamos resolver o seguinte problema: "Dada uma lista de produtos, filtre os que custam mais de R$ 50,00 e calcule o valor total com um imposto de 10%."
📊 Tabela de Comparação
| Critério | Imperativo | Orientado a Objetos | Funcional |
|---|---|---|---|
| Foco | Sequência de passos | Entidades e Dados | Transformação de Dados |
| Legibilidade | Média (muitos loops) | Alta (abstração) | Altíssima (concição) |
| Manutenibilidade | Difícil em larga escala | Excelente (modular) | Ótima (previsível) |
💻 Resoluções em Python
1. Abordagem Imperativa
produtos = [10, 60, 20, 80, 50]
total = 0
for p in produtos:
if p > 50:
total += p * 1.1
print(f"Total Imperativo: {total}")
2. Abordagem Funcional
produtos = [10, 60, 20, 80, 50]
total = sum(map(lambda p: p * 1.1, filter(lambda p: p > 50, produtos)))
print(f"Total Funcional: {total}")
📊 Fluxo de Decisão
graph TD
Problem[Problema de Software] --> Complexity{Complexidade?}
Complexity -->|Baixa| Script[Imperativo/Script]
Complexity -->|Média/Alta| Model[OO/Arquitetado]
Complexity -->|Dados Intensos| Func[Funcional/Declarativo]
🧠 Blocos de Destaque
Trade-offs
Não existe "bala de prata". O estilo funcional é ótimo para processamento, mas a POO é imbatível para modelagem de domínios complexos.
Atenção
Misturar paradigmas sem critério pode tornar o código confuso. O segredo é a consistência.
🚀 Mini-projeto: Refatorador de Paradigmas
Vamos pegar um código totalmente imperativo e refatorá-lo para um estilo Híbrido (OO + Funcional), aproveitando o melhor de cada mundo.
🎯 Próximos Passos
-
Slides
-
Quiz
-
Exercícios
-
Projeto
Aula 06: Paradigmas Modernos e Multi-Paradigma 🌐
🎯 Objetivos da Aula
- [x] Conhecer o conceito de linguagens multi-paradigma.
- [x] Explorar como linguagens modernas integram diferentes estilos.
- [x] Identificar as tendências atuais no desenvolvimento de software.
💡 O que é Multi-Paradigma?
A maioria das linguagens de destaque hoje (Python, JavaScript, Java, C#, Swift, Rust) não se limita a um único paradigma. Elas permitem que o desenvolvedor utilize POO para estrutura e Funcional para manipulação de dados, por exemplo.
🧱 Exemplo: O Ecossistema JavaScript
O JavaScript é o rei do multi-paradigma:
- Imperativo: Manipulação direta do DOM.
- Funcional: map, filter, reduce em arrays.
- Orientado a Objetos: Classes (ES6+) e protótipos.
📊 Linguagens e seus Paradigmas
pie title Paradigmas nas Linguagens Modernas
"Imperativo" : 20
"POO" : 40
"Funcional" : 30
"Outros" : 10
💻 Exemplo Prático (List Comprehensions em Python)
Python usa técnicas funcionais dentro de um ambiente OO/Imperativo:
# Híbrido: List Comprehension (Funcional) + Objeto (OO)
class Aluno:
def __init__(self, nome, nota):
self.nome = nome
self.nota = nota
alunos = [Aluno("Ana", 8), Aluno("Beto", 4), Aluno("Caio", 9)]
# Estilo funcional em uma linha
aprovados = [a.nome for a in alunos if a.nota >= 6]
print(f"Aprovados: {aprovados}")
🧠 Destaques
Dica de Carreira
Saber transitar entre paradigmas é um dos diferenciais que separa um programador júnior de um sênior.
Tendência: Rust
A linguagem Rust está ganhando popularidade por combinar alto desempenho (imperativo) com segurança de memória rigorosa e conceitos funcionais avançados.
🚀 Mini-projeto: Conversor Híbrido
Desenvolva um pequeno sistema que utiliza classes para representar entidades e funções de alta ordem para processar coleções dessas entidades.
🎯 Próximos Passos
-
Slides
-
Quiz
-
Exercícios
-
Projeto
Aula 07: Princípios de Projeto de Software (SOLID) 📐
🎯 Objetivos da Aula
- [x] Compreender os conceitos de Acoplamento e Coesão.
- [x] Aprender o significado das 5 letras do acrônimo SOLID.
- [x] Aplicar boas práticas de organização de código.
💡 Acoplamento vs Coesão
- Coesão: O quanto uma classe faz apenas o que ela se propõe a fazer. (Alta coesão é boa!)
- Acoplamento: O quanto uma classe depende de outra para funcionar. (Baixo acoplamento é bom!)
🧱 O que é SOLID?
Apresentado por Robert C. Martin (Uncle Bob), são 5 princípios para tornar o software mais compreensível e flexível:
- S (SRP): Responsabilidade Única.
- O (OCP): Aberto/Fechado (Aberto para extensão, fechado para modificação).
- L (LSP): Substituição de Liskov.
- I (ISP): Segregação de Interfaces.
- D (DIP): Inversão de Dependência.
📊 Visualização SOLID
graph LR
S[Single Responsibility] --> Code[Código Limpo]
O[Open/Closed] --> Code
L[Liskov] --> Code
I[Interface Segr.] --> Code
D[Dep. Inversion] --> Code
💻 Exemplo: SRP (Violando vs Seguindo)
Violando (Uma classe faz tudo)
Seguindo (Responsabilidades divididas)
class UsuarioRepositorio:
def salvar(self, usuario):
pass
class EmailService:
def enviar(self, usuario):
pass
🧠 Blocos de Destaque
Atenção
Não tente aplicar todos os princípios SOLID de uma vez em sistemas minúsculos. O excesso de abstração pode gerar complexidade desnecessária (Overengineering).
Dica
O princípio D (Inversão de Dependência) é a base para quase todos os Padrões de Projeto que veremos em seguida.
🚀 Mini-projeto: Refatoração SOLID
Pegue uma classe "Deus" (que faz tudo) e divida suas responsabilidades em classes menores e coesas.
🎯 Próximos Passos
-
Slides
-
Quiz
-
Exercícios
-
Projeto
Aula 08: Problemas Comuns de Design ⚠️
🎯 Objetivos da Aula
- [x] Identificar os principais "sintomas" de um código ruim.
- [x] Entender o conceito de "Code Smells" (Mau Cheiro no Código).
- [x] Compreender por que o software se torna rígido e frágil.
- [x] Introduzir a necessidade dos Padrões de Projeto.
💡 O software apodrece?
Sim, se não for bem cuidado. Esse processo é chamado de Erosão Arquitetural. Os principais sintomas são:
- Rigidez: Difícil de mudar.
- Fragilidade: Muda aqui, quebra lá.
- Imobilidade: Não dá para reaproveitar partes do código.
- Viscosidade: Fazer o certo é mais difícil do que fazer o "atalho".
🧱 Exemplos de Code Smells
- Código Duplicado: A mesma lógica em vários lugares.
- Método Longo: Funções com centenas de linhas.
- Classe Grande: Classes que tentam ser o sistema inteiro.
- Inveja de Escopo: Uma classe que se interessa mais pelos dados de outra do que pelos seus.
📊 Ciclo de Vida do Débito Técnico
graph TD
A[Pressão por Prazo] --> B[Atalho no Código]
B --> C[Aumento do Débito Técnico]
C --> D[Dificuldade de Manutenção]
D --> E[Mais Pressão]
E --> A
💻 Exemplo: Código Rígido (If/Else Infinitos)
def calcular_desconto(tipo_cliente, valor):
if tipo_cliente == "GOLD":
return valor * 0.9
elif tipo_cliente == "SILVER":
return valor * 0.95
# Se surgir um novo tipo, temos que ALTERAR esta função (Violando OCP)
return valor
🧠 Destaques
Conceito: Débito Técnico
É como um empréstimo: você ganha velocidade agora, mas terá que pagar com juros (tempo de manutenção) depois.
Dica
Sempre deixe o código um pouco mais limpo do que você o encontrou (Regra do Escoteiro).
🚀 Mini-projeto: Auditoria de Código
Analise um código fornecido e liste pelo menos 5 "code smells", sugerindo como poderiam ser evitados com os princípios aprendidos na aula anterior.
🎯 Próximos Passos
-
Slides
-
Quiz
-
Exercícios
-
Projeto
Aula 09: Introdução aos Padrões de Projeto 📖
🎯 Objetivos da Aula
- [x] Compreender o que são Design Patterns (Padrões de Projeto).
- [x] Conhecer a origem dos padrões no livro "Gang of Four" (GoF).
- [x] Identificar as três grandes categorias: Criacionais, Estruturais e Comportamentais.
- [x] Entender os benefícios (e riscos) de usar padrões.
💡 O que são Padrões de Projeto?
Padrões de Projeto são soluções reutilizáveis para problemas comuns que ocorrem durante o design de software. Eles não são bibliotecas ou frameworks, mas sim estratégias e modelos de organização de classes e objetos.
"Não reinvente a roda. Use uma roda que já foi testada e aprovada."
📚 A Origem: Gang of Four
Em 1994, Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides publicaram o livro "Design Patterns: Elements of Reusable Object-Oriented Software". Eles catalogaram 23 padrões fundamentais divididos em:
- Criacionais: Como os objetos são criados.
- Estruturais: Como classes e objetos são compostos.
- Comportamentais: Como os objetos interagem e distribuem responsabilidades.
📊 Categorias de Padrões
mindmap
root((Padrões GoF))
Criacionais
Singleton
Factory Method
Abstract Factory
Builder
Prototype
Estruturais
Adapter
Composite
Proxy
Facade
Decorator
Comportamentais
Strategy
Observer
Command
State
Template Method
💻 Por que usar? (Vantagens)
- Linguagem Comum: "Use um Singleton aqui" é mais rápido do que explicar toda a lógica.
- Robustez: Soluções testadas por milhares de desenvolvedores.
- Flexibilidade: Facilita a manutenção e evolução do sistema.
🧠 Blocos de Destaque
O Perigo: Overengineering
Usar padrões onde não são necessários torna o código complexo sem benefício. Padrões devem ser aplicados para resolver problemas, não para "parecer inteligente".
Dica de Estudo
Foque em entender o problema que o padrão resolve antes de decorar a solução.
🚀 Mini-projeto: Catálogo de Problemas
Identifique 3 problemas comuns que você já enfrentou codificando e tente adivinhar (ou pesquisar) qual categoria de padrão poderia resolvê-los.
🎯 Próximos Passos
-
Slides
-
Quiz
-
Exercícios
-
Projeto
Aula 10: Padrões Criacionais 🏭
🎯 Objetivos da Aula
- [x] Aprender os padrões Singleton, Factory Method e Builder.
- [x] Compreender quando impedir a criação de múltiplas instâncias.
- [x] Desacoplar a lógica de criação da lógica de negócio.
- [x] Construir objetos complexos passo a passo.
💡 O que são Padrões Criacionais?
Eles abstraem o processo de instanciação. Eles ajudam a tornar um sistema independente de como seus objetos são criados, compostos e representados.
🧱 Os Grandes Destaques
1. Singleton 👤
Garante que uma classe tenha apenas uma instância e fornece um ponto global de acesso a ela. Exemplo: Conexão com Banco de Dados, Log.
2. Factory Method 🏗️
Define uma interface para criar um objeto, mas deixa as subclasses decidirem qual classe instanciar.
3. Builder 👷
Separa a construção de um objeto complexo da sua representação, permitindo que o mesmo processo de construção crie diferentes representações.
📊 Diagrama: Factory Method
classDiagram
class Creator {
+createProduct()* Product
}
class ConcreteCreator {
+createProduct() Product
}
class Product {
<<interface>>
}
class ConcreteProduct {
}
Creator <|-- ConcreteCreator
Product <|-- ConcreteProduct
ConcreteCreator ..> ConcreteProduct
💻 Exemplo: Singleton em Python
class DatabaseConnection:
_instance = None
def __new__(cls):
if cls._instance is None:
cls._instance = super(DatabaseConnection, cls).__new__(cls)
print("Conectando ao banco...")
return cls._instance
db1 = DatabaseConnection()
db2 = DatabaseConnection()
print(f"São a mesma instância? {db1 is db2}")
🧠 Blocos de Destaque
Cuidado com o Singleton
O Singleton pode ser considerado um "anti-padrão" se usado em excesso, pois cria um estado global oculto que dificulta os testes unitários.
Builder vs Factory
Use Factory quando a criação é simples (uma linha). Use Builder quando o objeto tem muitos parâmetros opcionais ou passos de construção.
🚀 Mini-projeto: Gerador de Documentos
Crie um sistema que utiliza o padrão Factory para gerar diferentes tipos de documentos (PDF, JSON, HTML) sem que o cliente saiba qual classe específica está sendo instanciada.
🎯 Próximos Passos
-
Slides
-
Quiz
-
Exercícios
-
Projeto
Aula 11: Aplicando Padrões Criacionais em Projeto 🛠️
🎯 Objetivos da Aula
- [x] Praticar a escolha do padrão criacional adequado.
- [x] Refatorar código acoplado usando Abstract Factory.
- [x] Implementar o padrão Builder para objetos altamente configuráveis.
- [x] Identificar padrões criacionais em bibliotecas famosas.
💡 O Caso: Criador de Avatares (RPG)
Imagine um sistema de criação de personagens onde temos: - Raças (Humano, Elfo, Orc) - Classes (Guerreiro, Mago, Arqueiro) - Equipamentos (Espada, Cajado, Arco)
Tentar criar tudo isso com if/else e instanciando classes diretamente gera um código frágil e difícil de expandir.
📊 Estratégia de Refatoração
graph LR
Client[Interface do Usuário] --> Director[PersonagemDirector]
Director --> Builder[PersonagemBuilder]
Builder --> Product[Personagem Final]
💻 Exemplo: Padrão Builder (Python)
class Personagem:
def __init__(self):
self.nome = None
self.arma = None
self.armadura = None
class PersonagemBuilder:
def __init__(self):
self.p = Personagem()
def set_nome(self, nome):
self.p.nome = nome
return self
def set_arma(self, arma):
self.p.arma = arma
return self
def build(self):
return self.p
# Uso fluente
heroi = PersonagemBuilder().set_nome("Aragon").set_arma("Andúril").build()
🧠 Blocos de Destaque
Abstract Factory
É uma "fábrica de fábricas". Use-a quando precisar criar famílias de objetos relacionados (ex: Kit UI Dark vs Kit UI Light) sem especificar suas classes concretas.
Dica de Implementação
Muitas vezes o Singleton e o Abstract Factory trabalham juntos, onde a fábrica em si é um Singleton.
🚀 Mini-projeto: Fábrica de Temas de Interface
Desenvolva um sistema que, baseado em uma configuração, entrega um conjunto de Botões e Menus (Dark ou Light) usando Abstract Factory.
🎯 Próximos Passos
-
Slides
-
Quiz
-
Exercícios
-
Projeto
Aula 12: Padrões Estruturais 🔗
🎯 Objetivos da Aula
- [x] Conhecer os padrões Adapter, Composite, Decorator e Facade.
- [x] Aprender a harmonizar interfaces incompatíveis.
- [x] Representar hierarquias de objetos "parte-todo".
- [x] Adicionar responsabilidades a objetos dinamicamente.
💡 O que são Padrões Estruturais?
Eles lidam com a composição de classes e objetos para formar estruturas maiores e mais complexas. Eles ajudam a garantir que, quando uma parte muda, a estrutura inteira não precise ser alterada.
🧱 Destaques Estruturais
1. Adapter (Adaptador) 🔌
Converte a interface de uma classe em outra interface que os clientes esperam. Exemplo: Conectar um sistema novo em um banco de dados legado.
2. Composite (Composição) 🌳
Compõe objetos em estruturas de árvore para representar hierarquias. Permite tratar objetos individuais e composições de forma uniforme.
3. Decorator (Decorador) 🎀
Adiciona comportamento a um objeto individual, estaticamente ou dinamicamente, sem afetar o comportamento de outros objetos da mesma classe.
📊 Diagrama: Adapter
graph LR
Client[Cliente] --> ITarget[Interface Alvo]
ITarget --> Adapter[Adapter]
Adapter --> Adaptee[Sistema Legado]
💻 Exemplo: Decorator em Python
class Cafe:
def custo(self):
return 5
class LeiteDecorator:
def __init__(self, cafe):
self._cafe = cafe
def custo(self):
return self._cafe.custo() + 2
meu_cafe = Cafe()
meu_cafe_com_leite = LeiteDecorator(meu_cafe)
print(f"Custo total: {meu_cafe_com_leite.custo()}")
🧠 Blocos de Destaque
Facade (Fachada)
Fornece uma interface simplificada para um conjunto complexo de classes em um subsistema. É como o painel de um carro: você vira a chave (facade) e muitos sistemas complexos funcionam por trás sem você ver.
Proxy
Atua como um substituto ou porta-voz de outro objeto para controlar o acesso a ele.
🚀 Mini-projeto: Sistema de Arquivos
Use o padrão Composite para criar uma estrutura de Pastas e Arquivos, onde uma Pasta pode conter tanto Arquivos quanto outras Pastas, e todos podem ser "listados" da mesma forma.
🎯 Próximos Passos
-
Slides
-
Quiz
-
Exercícios
-
Projeto
Aula 13: Padrões Comportamentais 🧠
🎯 Objetivos da Aula
- [x] Compreender os padrões Strategy, Observer, Command e Template Method.
- [x] Aprender a encapsular algoritmos trocáveis.
- [x] Implementar comunicação de "um-para-muitos" desacoplada.
- [x] Padronizar passos de um algoritmo mantendo partes flexíveis.
💡 O que são Padrões Comportamentais?
Eles se preocupam com algoritmos e a atribuição de responsabilidades entre objetos. Eles não descrevem apenas padrões de objetos ou classes, mas também os padrões de comunicação entre eles.
🧱 Destaques Comportamentais
1. Strategy (Estratégia) 🎯
Define uma família de algoritmos, encapsula cada um deles e os torna intercambiáveis em tempo de execução. Exemplo: Diferentes formas de cálculo de frete ou desconto.
2. Observer (Observador) 🔔
Define uma dependência um-para-muitos entre objetos, de modo que quando um objeto muda de estado, todos os seus dependentes são notificados. Exemplo: Newsletter, Notificações de ações na bolsa.
3. Template Method 📝
Define o esqueleto de um algoritmo em uma operação, deixando alguns passos para as subclasses.
📊 Sequência: Observer
sequenceDiagram
participant S as Assunto (Subject)
participant O1 as Observador A
participant O2 as Observador B
S->>O1: Notificar Mudança
S->>O2: Notificar Mudança
O1->>S: Reagir/Atualizar
O2->>S: Reagir/Atualizar
💻 Exemplo: Strategy em Python
class FreteEstrategia:
def calcular(self, valor): pass
class FreteExpresso(FreteEstrategia):
def calcular(self, valor): return valor * 0.1
class FreteNormal(FreteEstrategia):
def calcular(self, valor): return valor * 0.05
class CalculadoraDeFrete:
def calcular(self, valor, estrategia):
return estrategia.calcular(valor)
calc = CalculadoraDeFrete()
print(calc.calcular(100, FreteExpresso()))
🧠 Blocos de Destaque
Command
Encapsula uma solicitação como um objeto, permitindo parametrizar clientes com diferentes solicitações e suportar operações que podem ser desfeitas (Undo).
Dica
O padrão Strategy ajuda a eliminar grandes blocos de if/else ou switch relacionados a regras de negócio que mudam frequentemente.
🚀 Mini-projeto: Sistema de Eventos
Implemente o padrão Observer para um sistema de notícias onde múltiplos assinantes (E-mail, SMS, Webhook) recebem atualizações quando uma nova notícia é publicada.
🎯 Próximos Passos
-
Slides
-
Quiz
-
Exercícios
-
Projeto
Aula 14: MVC e Arquitetura 🏛️
🎯 Objetivos da Aula
- [x] Compreender o padrão arquitetural MVC (Model-View-Controller).
- [x] Aprender a separar lógica de negócio, interface e controle.
- [x] Ver a aplicação do MVC em sistemas modernos (Web e Desktop).
- [x] Identificar os padrões GoF que compõem o MVC.
💡 O que é MVC?
O MVC é um padrão de arquitetura de software que divide a aplicação em três componentes interconectados, cada um com uma responsabilidade específica:
- Model (Modelo): Gerencia os dados, a lógica de negócio e as regras de persistência.
- View (Visão): Responsável pela apresentação visual dos dados ao usuário.
- Controller (Controle): Atua como intermediário, recebendo a entrada do usuário e coordenando as ações entre o Model e a View.
📊 Fluxo MVC
graph LR
User[Usuário] -->|Interação| C[Controller]
C -->|Atualiza| M[Model]
M -->|Notifica| V[View]
V -->|Mostra| User
🧱 Padrões por Trás do MVC
O MVC não é um padrão único, mas uma combinação de vários: - Observer: O Model notifica a View sobre mudanças. - Strategy: O Controller define como a View reage às entradas. - Composite: A View costuma ser uma estrutura composta de widgets.
👨💻 Exemplo Conceitual (Python Simplificado)
class Model:
def __init__(self):
self.dados = "Olá MVC"
class View:
def exibir(self, model):
print(f"Tela: {model.dados}")
class Controller:
def __init__(self, model, view):
self.model = model
self.view = view
def mudar_dados(self, novo_texto):
self.model.dados = novo_texto
self.view.exibir(self.model)
# Execução
app = Controller(Model(), View())
app.mudar_dados("Nova Mensagem")
🧠 Blocos de Destaque
MVC na Web
Em frameworks web modernos (como Django, Spring MVC, Rails), o MVC é ligeiramente adaptado, onde a View é frequentemente o HTML/Template e o Model é a camada de dados (ORM).
Benefício
A principal vantagem do MVC é o desacoplamento. Você pode trocar a interface (View) sem precisar mexer na lógica de negócio (Model).
🚀 Mini-projeto: Task Manager MVC
Vamos esboçar a estrutura de um gerenciador de tarefas simples, separando as classes em pastas model/, view/ e controller/.
🎯 Próximos Passos
-
Slides
-
Quiz
-
Exercícios
-
Projeto
Aula 15: Refatoração com Padrões ♻️
🎯 Objetivos da Aula
- [x] Identificar oportunidades de melhoria em código legado.
- [x] Substituir condicionais complexas por polimorfismo (Strategy).
- [x] Desacoplar sistemas usando Adapter.
- [x] Aplicar o ciclo: Identificar cheiro -> Escolher Padrão -> Refatorar.
💡 O Poder da Refatoração
Refatorar não é apenas "mudar o nome de variáveis". É alterar a estrutura interna do código para torná-lo mais elegante e sustentável, sem alterar seu comportamento externo.
"Se o código está funcionando, mas é um pesadelo de manter, ele está quebrado conceitualmente."
📊 De Switch para Strategy
graph TD
Old[Switch Case Gigante] --> Refactor[Refatoração]
Refactor --> New[Classes de Estratégia]
New --> Result[Código Flexível e OCP]
💻 Caso Real: Processamento de Pagamentos
Antes (Problemático)
def processar(tipo, valor):
if tipo == "CC": # Cartão de Crédito
# Lógica CC
elif tipo == "PIX":
# Lógica PIX
# Difícil de expandir!
Depois (Refatorado com Padrões)
class Pagamento:
def pagar(self, valor): pass
# Agora cada novo método é uma nova CLASSE, não um novo IF.
class PagamentoPix(Pagamento):
def pagar(self, valor):
print(f"Pagando R$ {valor} via Pix")
🧠 Destaques
Regra de Ouro
Antes de refatorar, garanta que você tenha testes automatizados. Eles são sua rede de proteção para garantir que você não quebrou nada durante a limpeza.
Atenção
Cuidado para não "sobrerrefatorar". Às vezes, um if simples é melhor do que 10 classes de padrão complexo. Use o bom senso.
🚀 Mini-projeto: Limpando o Legado
Pegue o seu projeto da Aula 08 (onde você auditou code smells) e agora aplique os padrões aprendidos para resolver pelo menos dois dos problemas identificados.
🎯 Próximos Passos
-
Slides
-
Quiz
-
Exercícios
-
Projeto
Aula 16: Desenvolvimento de Mini Projeto 🏆
🎯 Objetivos da Aula
- [x] Aplicar os conhecimentos adquiridos em um cenário real.
- [x] Escolher o paradigma mais adequado para diferentes partes do sistema.
- [x] Implementar pelo menos 2 padrões de projeto (GoF).
- [x] Demonstrar princípios de Clean Code e SOLID.
🚀 O Desafio Final
Você deve desenvolver um protótipo funcional (focado na arquitetura) de um dos seguintes sistemas:
- 🛒 Sistema de E-commerce: Com cálculo de frete (Strategy), catálogo (Composite) e log de transações (Singleton).
- 🚗 Gestão de Frota/Logística: Com rastreamento (Observer), criação de veículos (Factory/Builder) e interface simplificada (Facade).
📋 Requisitos Obrigatórios
- Modularidade: O sistema deve estar dividido em camadas (MVC ou similar).
- Padrões: Implementação clara de no mínimo 2 Design Patterns.
- Paradigma: Uso de POO para a estrutura e pelo menos um trecho usando técnicas Funcionais (Map/Filter).
- Documentação: Um breve arquivo
README.mdexplicando as decisões arquiteturais tomadas.
📊 Arquitetura Sugerida
graph TD
UI[Interface/CLI] --> C[Controller]
C --> M[Model / Negócio]
M --> P1[Padrão Criacional]
M --> P2[Padrão Comportamental]
M --> DB[(Simulador DB)]
💻 Exemplo de Estrutura de Pastas
# Estrutura recomendada para o projeto
mkdir meu_projeto
cd meu_projeto
mkdir src tests docs
touch src/main.py src/models.py src/patterns.py
🧠 Dica para a Apresentação
Foco Técnico
Não se preocupe com uma interface gráfica bonita. O foco aqui é o "Motor" do sistema. Explique por que você escolheu o padrão X em vez do Y.
Critério de Sucesso
O código deve ser fácil de ler, testar e, acima de tudo, fácil de estender para novas funcionalidades.
🏁 Encerramento do Curso
Parabéns por chegar até aqui! Você agora possui uma base sólida em design de software que o acompanhará por toda a sua carreira.
🎯 Próximos Passos
-
Certificação
-
Materiais de Apoio
Exercícios
Exercícios do Curso 🏋️
Lista de exercícios progressivos para cada aula.
Exercícios Aula 01: Introdução aos Paradigmas
🟢 Básico (Fácil)
- Defina o que é paradigma.
- Como história se aplica em Introdução aos Paradigmas?
🟡 Intermediário (Médio)
- Compare paradigma com imperativo.
- Implemente um exemplo prático de Introdução aos Paradigmas usando as melhores práticas.
🔴 Desafio (Difícil)
- Projete uma solução arquitetural para um sistema de grande porte utilizando os conceitos de Introdução aos Paradigmas.
Exercícios Aula 02: Paradigma Imperativo
🟢 Básico (Fácil)
- Defina o que é estado.
- Como comandos se aplica em Paradigma Imperativo?
🟡 Intermediário (Médio)
- Compare estado com sequência.
- Implemente um exemplo prático de Paradigma Imperativo usando as melhores práticas.
🔴 Desafio (Difícil)
- Projete uma solução arquitetural para um sistema de grande porte utilizando os conceitos de Paradigma Imperativo.
Exercícios Aula 03: Paradigma POO
🟢 Básico (Fácil)
- Defina o que é classe.
- Como objeto se aplica em Paradigma POO?
🟡 Intermediário (Médio)
- Compare classe com herança.
- Implemente um exemplo prático de Paradigma POO usando as melhores práticas.
🔴 Desafio (Difícil)
- Projete uma solução arquitetural para um sistema de grande porte utilizando os conceitos de Paradigma POO.
Exercícios Aula 04: Paradigma Funcional
🟢 Básico (Fácil)
- Defina o que é funções puras.
- Como imutabilidade se aplica em Paradigma Funcional?
🟡 Intermediário (Médio)
- Compare funções puras com alta ordem.
- Implemente um exemplo prático de Paradigma Funcional usando as melhores práticas.
🔴 Desafio (Difícil)
- Projete uma solução arquitetural para um sistema de grande porte utilizando os conceitos de Paradigma Funcional.
Exercícios Aula 05: Comparando Paradigmas
🟢 Básico (Fácil)
- Defina o que é trade-offs.
- Como escolha se aplica em Comparando Paradigmas?
🟡 Intermediário (Médio)
- Compare trade-offs com abstração.
- Implemente um exemplo prático de Comparando Paradigmas usando as melhores práticas.
🔴 Desafio (Difícil)
- Projete uma solução arquitetural para um sistema de grande porte utilizando os conceitos de Comparando Paradigmas.
Exercícios Aula 06: Multi-Paradigma
🟢 Básico (Fácil)
- Defina o que é híbrido.
- Como python se aplica em Multi-Paradigma?
🟡 Intermediário (Médio)
- Compare híbrido com javascript.
- Implemente um exemplo prático de Multi-Paradigma usando as melhores práticas.
🔴 Desafio (Difícil)
- Projete uma solução arquitetural para um sistema de grande porte utilizando os conceitos de Multi-Paradigma.
Exercícios Aula 07: Princípios SOLID
🟢 Básico (Fácil)
- Defina o que é SRP.
- Como OCP se aplica em Princípios SOLID?
🟡 Intermediário (Médio)
- Compare SRP com LSP.
- Implemente um exemplo prático de Princípios SOLID usando as melhores práticas.
🔴 Desafio (Difícil)
- Projete uma solução arquitetural para um sistema de grande porte utilizando os conceitos de Princípios SOLID.
Exercícios Aula 08: Problemas de Design
🟢 Básico (Fácil)
- Defina o que é code smells.
- Como rigidez se aplica em Problemas de Design?
🟡 Intermediário (Médio)
- Compare code smells com fragilidade.
- Implemente um exemplo prático de Problemas de Design usando as melhores práticas.
🔴 Desafio (Difícil)
- Projete uma solução arquitetural para um sistema de grande porte utilizando os conceitos de Problemas de Design.
Exercícios Aula 09: Intro Design Patterns
🟢 Básico (Fácil)
- Defina o que é GoF.
- Como catálogo se aplica em Intro Design Patterns?
🟡 Intermediário (Médio)
- Compare GoF com reutilização.
- Implemente um exemplo prático de Intro Design Patterns usando as melhores práticas.
🔴 Desafio (Difícil)
- Projete uma solução arquitetural para um sistema de grande porte utilizando os conceitos de Intro Design Patterns.
Exercícios Aula 10: Padrões Criacionais
🟢 Básico (Fácil)
- Defina o que é Singleton.
- Como Factory se aplica em Padrões Criacionais?
🟡 Intermediário (Médio)
- Compare Singleton com Abstract Factory.
- Implemente um exemplo prático de Padrões Criacionais usando as melhores práticas.
🔴 Desafio (Difícil)
- Projete uma solução arquitetural para um sistema de grande porte utilizando os conceitos de Padrões Criacionais.
Exercícios Aula 11: Prática Criacional
🟢 Básico (Fácil)
- Defina o que é refatoração.
- Como desacoplamento se aplica em Prática Criacional?
🟡 Intermediário (Médio)
- Compare refatoração com famílias de objetos.
- Implemente um exemplo prático de Prática Criacional usando as melhores práticas.
🔴 Desafio (Difícil)
- Projete uma solução arquitetural para um sistema de grande porte utilizando os conceitos de Prática Criacional.
Exercícios Aula 12: Padrões Estruturais
🟢 Básico (Fácil)
- Defina o que é Adapter.
- Como Composite se aplica em Padrões Estruturais?
🟡 Intermediário (Médio)
- Compare Adapter com Decorator.
- Implemente um exemplo prático de Padrões Estruturais usando as melhores práticas.
🔴 Desafio (Difícil)
- Projete uma solução arquitetural para um sistema de grande porte utilizando os conceitos de Padrões Estruturais.
Exercícios Aula 13: Padrões Comportamentais
🟢 Básico (Fácil)
- Defina o que é Strategy.
- Como Observer se aplica em Padrões Comportamentais?
🟡 Intermediário (Médio)
- Compare Strategy com Command.
- Implemente um exemplo prático de Padrões Comportamentais usando as melhores práticas.
🔴 Desafio (Difícil)
- Projete uma solução arquitetural para um sistema de grande porte utilizando os conceitos de Padrões Comportamentais.
Exercícios Aula 14: MVC e Arquitetura
🟢 Básico (Fácil)
- Defina o que é Model.
- Como View se aplica em MVC e Arquitetura?
🟡 Intermediário (Médio)
- Compare Model com Controller.
- Implemente um exemplo prático de MVC e Arquitetura usando as melhores práticas.
🔴 Desafio (Difícil)
- Projete uma solução arquitetural para um sistema de grande porte utilizando os conceitos de MVC e Arquitetura.
Exercícios Aula 15: Refatoração com Padrões
🟢 Básico (Fácil)
- Defina o que é melhoria.
- Como limpeza se aplica em Refatoração com Padrões?
🟡 Intermediário (Médio)
- Compare melhoria com evolução.
- Implemente um exemplo prático de Refatoração com Padrões usando as melhores práticas.
🔴 Desafio (Difícil)
- Projete uma solução arquitetural para um sistema de grande porte utilizando os conceitos de Refatoração com Padrões.
Exercícios Aula 16: Projeto Final
🟢 Básico (Fácil)
- Defina o que é projeto.
- Como integração se aplica em Projeto Final?
🟡 Intermediário (Médio)
- Compare projeto com arquitetura.
- Implemente um exemplo prático de Projeto Final usando as melhores práticas.
🔴 Desafio (Difícil)
- Projete uma solução arquitetural para um sistema de grande porte utilizando os conceitos de Projeto Final.
Projetos
Galeria de Projetos 🚀
Explore os mini-projetos de cada aula.
Projeto 01: Introdução aos Paradigmas
Descrição
Desenvolva uma aplicação que utilize Introdução aos Paradigmas...
Projeto 02: Paradigma Imperativo
Descrição
Desenvolva uma aplicação que utilize Paradigma Imperativo...
Projeto 03: Paradigma POO
Descrição
Desenvolva uma aplicação que utilize Paradigma POO...
Projeto 04: Paradigma Funcional
Descrição
Desenvolva uma aplicação que utilize Paradigma Funcional...
Projeto 05: Comparando Paradigmas
Descrição
Desenvolva uma aplicação que utilize Comparando Paradigmas...
Projeto 06: Multi-Paradigma
Descrição
Desenvolva uma aplicação que utilize Multi-Paradigma...
Projeto 07: Princípios SOLID
Descrição
Desenvolva uma aplicação que utilize Princípios SOLID...
Projeto 08: Problemas de Design
Descrição
Desenvolva uma aplicação que utilize Problemas de Design...
Projeto 09: Intro Design Patterns
Descrição
Desenvolva uma aplicação que utilize Intro Design Patterns...
Projeto 10: Padrões Criacionais
Descrição
Desenvolva uma aplicação que utilize Padrões Criacionais...
Projeto 11: Prática Criacional
Descrição
Desenvolva uma aplicação que utilize Prática Criacional...
Projeto 12: Padrões Estruturais
Descrição
Desenvolva uma aplicação que utilize Padrões Estruturais...
Projeto 13: Padrões Comportamentais
Descrição
Desenvolva uma aplicação que utilize Padrões Comportamentais...
Projeto 14: MVC e Arquitetura
Descrição
Desenvolva uma aplicação que utilize MVC e Arquitetura...
Projeto 15: Refatoração com Padrões
Descrição
Desenvolva uma aplicação que utilize Refatoração com Padrões...
Projeto 16: Projeto Final
Descrição
Desenvolva uma aplicação que utilize Projeto Final...
Quizzes
Quizzes do Curso 📝
Teste seus conhecimentos para cada aula.
Quiz 01: Introdução aos Paradigmas
Quiz 02: Paradigma Imperativo
Quiz 03: Paradigma POO
Quiz 04: Paradigma Funcional
Quiz 05: Comparando Paradigmas
Quiz 06: Multi-Paradigma
Quiz 07: Princípios SOLID
Quiz 08: Problemas de Design
Quiz 09: Intro Design Patterns
Quiz 10: Padrões Criacionais
Quiz 11: Prática Criacional
Quiz 12: Padrões Estruturais
Quiz 13: Padrões Comportamentais
Quiz 14: MVC e Arquitetura
Quiz 15: Refatoração com Padrões
Quiz 16: Projeto Final
Slides
Galeria de Slides 📊
Acesse os slides interativos de cada aula.
Introdução aos Paradigmas 🚀
Aula 01
Agenda de Hoje 📅
- Ponto 1
- Ponto 2
- Ponto 3
Introdução aos Paradigmas - Tópico 1
Explicação detalhada sobre o tópico 1 relacionado a história.
Introdução aos Paradigmas - Tópico 2
Explicação detalhada sobre o tópico 2 relacionado a imperativo.
Introdução aos Paradigmas - Tópico 3
Explicação detalhada sobre o tópico 3 relacionado a declarativo.
Introdução aos Paradigmas - Tópico 4
Explicação detalhada sobre o tópico 4 relacionado a paradigma.
Introdução aos Paradigmas - Tópico 5
Explicação detalhada sobre o tópico 5 relacionado a história.
Introdução aos Paradigmas - Tópico 6
Explicação detalhada sobre o tópico 6 relacionado a imperativo.
Introdução aos Paradigmas - Tópico 7
Explicação detalhada sobre o tópico 7 relacionado a declarativo.
Introdução aos Paradigmas - Tópico 8
Explicação detalhada sobre o tópico 8 relacionado a paradigma.
Introdução aos Paradigmas - Tópico 9
Explicação detalhada sobre o tópico 9 relacionado a história.
Introdução aos Paradigmas - Tópico 10
Explicação detalhada sobre o tópico 10 relacionado a imperativo.
Introdução aos Paradigmas - Tópico 11
Explicação detalhada sobre o tópico 11 relacionado a declarativo.
Introdução aos Paradigmas - Tópico 12
Explicação detalhada sobre o tópico 12 relacionado a paradigma.
Introdução aos Paradigmas - Tópico 13
Explicação detalhada sobre o tópico 13 relacionado a história.
Introdução aos Paradigmas - Tópico 14
Explicação detalhada sobre o tópico 14 relacionado a imperativo.
Introdução aos Paradigmas - Tópico 15
Explicação detalhada sobre o tópico 15 relacionado a declarativo.
Introdução aos Paradigmas - Tópico 16
Explicação detalhada sobre o tópico 16 relacionado a paradigma.
Introdução aos Paradigmas - Tópico 17
Explicação detalhada sobre o tópico 17 relacionado a história.
Conclusão e Revisão ✅
- Resumo do dia
Próxima Aula: ...
Paradigma Imperativo 🚀
Aula 02
Agenda de Hoje 📅
- Ponto 1
- Ponto 2
- Ponto 3
Paradigma Imperativo - Tópico 1
Explicação detalhada sobre o tópico 1 relacionado a comandos.
Paradigma Imperativo - Tópico 2
Explicação detalhada sobre o tópico 2 relacionado a sequência.
Paradigma Imperativo - Tópico 3
Explicação detalhada sobre o tópico 3 relacionado a seleção.
Paradigma Imperativo - Tópico 4
Explicação detalhada sobre o tópico 4 relacionado a iteração.
Paradigma Imperativo - Tópico 5
Explicação detalhada sobre o tópico 5 relacionado a estado.
Paradigma Imperativo - Tópico 6
Explicação detalhada sobre o tópico 6 relacionado a comandos.
Paradigma Imperativo - Tópico 7
Explicação detalhada sobre o tópico 7 relacionado a sequência.
Paradigma Imperativo - Tópico 8
Explicação detalhada sobre o tópico 8 relacionado a seleção.
Paradigma Imperativo - Tópico 9
Explicação detalhada sobre o tópico 9 relacionado a iteração.
Paradigma Imperativo - Tópico 10
Explicação detalhada sobre o tópico 10 relacionado a estado.
Paradigma Imperativo - Tópico 11
Explicação detalhada sobre o tópico 11 relacionado a comandos.
Paradigma Imperativo - Tópico 12
Explicação detalhada sobre o tópico 12 relacionado a sequência.
Paradigma Imperativo - Tópico 13
Explicação detalhada sobre o tópico 13 relacionado a seleção.
Paradigma Imperativo - Tópico 14
Explicação detalhada sobre o tópico 14 relacionado a iteração.
Paradigma Imperativo - Tópico 15
Explicação detalhada sobre o tópico 15 relacionado a estado.
Paradigma Imperativo - Tópico 16
Explicação detalhada sobre o tópico 16 relacionado a comandos.
Paradigma Imperativo - Tópico 17
Explicação detalhada sobre o tópico 17 relacionado a sequência.
Conclusão e Revisão ✅
- Resumo do dia
Próxima Aula: ...
Paradigma POO 🚀
Aula 03
Agenda de Hoje 📅
- Ponto 1
- Ponto 2
- Ponto 3
Paradigma POO - Tópico 1
Explicação detalhada sobre o tópico 1 relacionado a objeto.
Paradigma POO - Tópico 2
Explicação detalhada sobre o tópico 2 relacionado a herança.
Paradigma POO - Tópico 3
Explicação detalhada sobre o tópico 3 relacionado a polimorfismo.
Paradigma POO - Tópico 4
Explicação detalhada sobre o tópico 4 relacionado a encapsulamento.
Paradigma POO - Tópico 5
Explicação detalhada sobre o tópico 5 relacionado a classe.
Paradigma POO - Tópico 6
Explicação detalhada sobre o tópico 6 relacionado a objeto.
Paradigma POO - Tópico 7
Explicação detalhada sobre o tópico 7 relacionado a herança.
Paradigma POO - Tópico 8
Explicação detalhada sobre o tópico 8 relacionado a polimorfismo.
Paradigma POO - Tópico 9
Explicação detalhada sobre o tópico 9 relacionado a encapsulamento.
Paradigma POO - Tópico 10
Explicação detalhada sobre o tópico 10 relacionado a classe.
Paradigma POO - Tópico 11
Explicação detalhada sobre o tópico 11 relacionado a objeto.
Paradigma POO - Tópico 12
Explicação detalhada sobre o tópico 12 relacionado a herança.
Paradigma POO - Tópico 13
Explicação detalhada sobre o tópico 13 relacionado a polimorfismo.
Paradigma POO - Tópico 14
Explicação detalhada sobre o tópico 14 relacionado a encapsulamento.
Paradigma POO - Tópico 15
Explicação detalhada sobre o tópico 15 relacionado a classe.
Paradigma POO - Tópico 16
Explicação detalhada sobre o tópico 16 relacionado a objeto.
Paradigma POO - Tópico 17
Explicação detalhada sobre o tópico 17 relacionado a herança.
Conclusão e Revisão ✅
- Resumo do dia
Próxima Aula: ...
Paradigma Funcional 🚀
Aula 04
Agenda de Hoje 📅
- Ponto 1
- Ponto 2
- Ponto 3
Paradigma Funcional - Tópico 1
Explicação detalhada sobre o tópico 1 relacionado a imutabilidade.
Paradigma Funcional - Tópico 2
Explicação detalhada sobre o tópico 2 relacionado a alta ordem.
Paradigma Funcional - Tópico 3
Explicação detalhada sobre o tópico 3 relacionado a map.
Paradigma Funcional - Tópico 4
Explicação detalhada sobre o tópico 4 relacionado a filter.
Paradigma Funcional - Tópico 5
Explicação detalhada sobre o tópico 5 relacionado a funções puras.
Paradigma Funcional - Tópico 6
Explicação detalhada sobre o tópico 6 relacionado a imutabilidade.
Paradigma Funcional - Tópico 7
Explicação detalhada sobre o tópico 7 relacionado a alta ordem.
Paradigma Funcional - Tópico 8
Explicação detalhada sobre o tópico 8 relacionado a map.
Paradigma Funcional - Tópico 9
Explicação detalhada sobre o tópico 9 relacionado a filter.
Paradigma Funcional - Tópico 10
Explicação detalhada sobre o tópico 10 relacionado a funções puras.
Paradigma Funcional - Tópico 11
Explicação detalhada sobre o tópico 11 relacionado a imutabilidade.
Paradigma Funcional - Tópico 12
Explicação detalhada sobre o tópico 12 relacionado a alta ordem.
Paradigma Funcional - Tópico 13
Explicação detalhada sobre o tópico 13 relacionado a map.
Paradigma Funcional - Tópico 14
Explicação detalhada sobre o tópico 14 relacionado a filter.
Paradigma Funcional - Tópico 15
Explicação detalhada sobre o tópico 15 relacionado a funções puras.
Paradigma Funcional - Tópico 16
Explicação detalhada sobre o tópico 16 relacionado a imutabilidade.
Paradigma Funcional - Tópico 17
Explicação detalhada sobre o tópico 17 relacionado a alta ordem.
Conclusão e Revisão ✅
- Resumo do dia
Próxima Aula: ...
Comparando Paradigmas 🚀
Aula 05
Agenda de Hoje 📅
- Ponto 1
- Ponto 2
- Ponto 3
Comparando Paradigmas - Tópico 1
Explicação detalhada sobre o tópico 1 relacionado a escolha.
Comparando Paradigmas - Tópico 2
Explicação detalhada sobre o tópico 2 relacionado a abstração.
Comparando Paradigmas - Tópico 3
Explicação detalhada sobre o tópico 3 relacionado a legibilidade.
Comparando Paradigmas - Tópico 4
Explicação detalhada sobre o tópico 4 relacionado a trade-offs.
Comparando Paradigmas - Tópico 5
Explicação detalhada sobre o tópico 5 relacionado a escolha.
Comparando Paradigmas - Tópico 6
Explicação detalhada sobre o tópico 6 relacionado a abstração.
Comparando Paradigmas - Tópico 7
Explicação detalhada sobre o tópico 7 relacionado a legibilidade.
Comparando Paradigmas - Tópico 8
Explicação detalhada sobre o tópico 8 relacionado a trade-offs.
Comparando Paradigmas - Tópico 9
Explicação detalhada sobre o tópico 9 relacionado a escolha.
Comparando Paradigmas - Tópico 10
Explicação detalhada sobre o tópico 10 relacionado a abstração.
Comparando Paradigmas - Tópico 11
Explicação detalhada sobre o tópico 11 relacionado a legibilidade.
Comparando Paradigmas - Tópico 12
Explicação detalhada sobre o tópico 12 relacionado a trade-offs.
Comparando Paradigmas - Tópico 13
Explicação detalhada sobre o tópico 13 relacionado a escolha.
Comparando Paradigmas - Tópico 14
Explicação detalhada sobre o tópico 14 relacionado a abstração.
Comparando Paradigmas - Tópico 15
Explicação detalhada sobre o tópico 15 relacionado a legibilidade.
Comparando Paradigmas - Tópico 16
Explicação detalhada sobre o tópico 16 relacionado a trade-offs.
Comparando Paradigmas - Tópico 17
Explicação detalhada sobre o tópico 17 relacionado a escolha.
Conclusão e Revisão ✅
- Resumo do dia
Próxima Aula: ...
Multi-Paradigma 🚀
Aula 06
Agenda de Hoje 📅
- Ponto 1
- Ponto 2
- Ponto 3
Multi-Paradigma - Tópico 1
Explicação detalhada sobre o tópico 1 relacionado a python.
Multi-Paradigma - Tópico 2
Explicação detalhada sobre o tópico 2 relacionado a javascript.
Multi-Paradigma - Tópico 3
Explicação detalhada sobre o tópico 3 relacionado a moderno.
Multi-Paradigma - Tópico 4
Explicação detalhada sobre o tópico 4 relacionado a híbrido.
Multi-Paradigma - Tópico 5
Explicação detalhada sobre o tópico 5 relacionado a python.
Multi-Paradigma - Tópico 6
Explicação detalhada sobre o tópico 6 relacionado a javascript.
Multi-Paradigma - Tópico 7
Explicação detalhada sobre o tópico 7 relacionado a moderno.
Multi-Paradigma - Tópico 8
Explicação detalhada sobre o tópico 8 relacionado a híbrido.
Multi-Paradigma - Tópico 9
Explicação detalhada sobre o tópico 9 relacionado a python.
Multi-Paradigma - Tópico 10
Explicação detalhada sobre o tópico 10 relacionado a javascript.
Multi-Paradigma - Tópico 11
Explicação detalhada sobre o tópico 11 relacionado a moderno.
Multi-Paradigma - Tópico 12
Explicação detalhada sobre o tópico 12 relacionado a híbrido.
Multi-Paradigma - Tópico 13
Explicação detalhada sobre o tópico 13 relacionado a python.
Multi-Paradigma - Tópico 14
Explicação detalhada sobre o tópico 14 relacionado a javascript.
Multi-Paradigma - Tópico 15
Explicação detalhada sobre o tópico 15 relacionado a moderno.
Multi-Paradigma - Tópico 16
Explicação detalhada sobre o tópico 16 relacionado a híbrido.
Multi-Paradigma - Tópico 17
Explicação detalhada sobre o tópico 17 relacionado a python.
Conclusão e Revisão ✅
- Resumo do dia
Próxima Aula: ...
Princípios SOLID 🚀
Aula 07
Agenda de Hoje 📅
- Ponto 1
- Ponto 2
- Ponto 3
Princípios SOLID - Tópico 1
Explicação detalhada sobre o tópico 1 relacionado a OCP.
Princípios SOLID - Tópico 2
Explicação detalhada sobre o tópico 2 relacionado a LSP.
Princípios SOLID - Tópico 3
Explicação detalhada sobre o tópico 3 relacionado a ISP.
Princípios SOLID - Tópico 4
Explicação detalhada sobre o tópico 4 relacionado a DIP.
Princípios SOLID - Tópico 5
Explicação detalhada sobre o tópico 5 relacionado a SRP.
Princípios SOLID - Tópico 6
Explicação detalhada sobre o tópico 6 relacionado a OCP.
Princípios SOLID - Tópico 7
Explicação detalhada sobre o tópico 7 relacionado a LSP.
Princípios SOLID - Tópico 8
Explicação detalhada sobre o tópico 8 relacionado a ISP.
Princípios SOLID - Tópico 9
Explicação detalhada sobre o tópico 9 relacionado a DIP.
Princípios SOLID - Tópico 10
Explicação detalhada sobre o tópico 10 relacionado a SRP.
Princípios SOLID - Tópico 11
Explicação detalhada sobre o tópico 11 relacionado a OCP.
Princípios SOLID - Tópico 12
Explicação detalhada sobre o tópico 12 relacionado a LSP.
Princípios SOLID - Tópico 13
Explicação detalhada sobre o tópico 13 relacionado a ISP.
Princípios SOLID - Tópico 14
Explicação detalhada sobre o tópico 14 relacionado a DIP.
Princípios SOLID - Tópico 15
Explicação detalhada sobre o tópico 15 relacionado a SRP.
Princípios SOLID - Tópico 16
Explicação detalhada sobre o tópico 16 relacionado a OCP.
Princípios SOLID - Tópico 17
Explicação detalhada sobre o tópico 17 relacionado a LSP.
Conclusão e Revisão ✅
- Resumo do dia
Próxima Aula: ...
Problemas de Design 🚀
Aula 08
Agenda de Hoje 📅
- Ponto 1
- Ponto 2
- Ponto 3
Problemas de Design - Tópico 1
Explicação detalhada sobre o tópico 1 relacionado a rigidez.
Problemas de Design - Tópico 2
Explicação detalhada sobre o tópico 2 relacionado a fragilidade.
Problemas de Design - Tópico 3
Explicação detalhada sobre o tópico 3 relacionado a débito técnico.
Problemas de Design - Tópico 4
Explicação detalhada sobre o tópico 4 relacionado a code smells.
Problemas de Design - Tópico 5
Explicação detalhada sobre o tópico 5 relacionado a rigidez.
Problemas de Design - Tópico 6
Explicação detalhada sobre o tópico 6 relacionado a fragilidade.
Problemas de Design - Tópico 7
Explicação detalhada sobre o tópico 7 relacionado a débito técnico.
Problemas de Design - Tópico 8
Explicação detalhada sobre o tópico 8 relacionado a code smells.
Problemas de Design - Tópico 9
Explicação detalhada sobre o tópico 9 relacionado a rigidez.
Problemas de Design - Tópico 10
Explicação detalhada sobre o tópico 10 relacionado a fragilidade.
Problemas de Design - Tópico 11
Explicação detalhada sobre o tópico 11 relacionado a débito técnico.
Problemas de Design - Tópico 12
Explicação detalhada sobre o tópico 12 relacionado a code smells.
Problemas de Design - Tópico 13
Explicação detalhada sobre o tópico 13 relacionado a rigidez.
Problemas de Design - Tópico 14
Explicação detalhada sobre o tópico 14 relacionado a fragilidade.
Problemas de Design - Tópico 15
Explicação detalhada sobre o tópico 15 relacionado a débito técnico.
Problemas de Design - Tópico 16
Explicação detalhada sobre o tópico 16 relacionado a code smells.
Problemas de Design - Tópico 17
Explicação detalhada sobre o tópico 17 relacionado a rigidez.
Conclusão e Revisão ✅
- Resumo do dia
Próxima Aula: ...
Intro Design Patterns 🚀
Aula 09
Agenda de Hoje 📅
- Ponto 1
- Ponto 2
- Ponto 3
Intro Design Patterns - Tópico 1
Explicação detalhada sobre o tópico 1 relacionado a catálogo.
Intro Design Patterns - Tópico 2
Explicação detalhada sobre o tópico 2 relacionado a reutilização.
Intro Design Patterns - Tópico 3
Explicação detalhada sobre o tópico 3 relacionado a vocabulário.
Intro Design Patterns - Tópico 4
Explicação detalhada sobre o tópico 4 relacionado a GoF.
Intro Design Patterns - Tópico 5
Explicação detalhada sobre o tópico 5 relacionado a catálogo.
Intro Design Patterns - Tópico 6
Explicação detalhada sobre o tópico 6 relacionado a reutilização.
Intro Design Patterns - Tópico 7
Explicação detalhada sobre o tópico 7 relacionado a vocabulário.
Intro Design Patterns - Tópico 8
Explicação detalhada sobre o tópico 8 relacionado a GoF.
Intro Design Patterns - Tópico 9
Explicação detalhada sobre o tópico 9 relacionado a catálogo.
Intro Design Patterns - Tópico 10
Explicação detalhada sobre o tópico 10 relacionado a reutilização.
Intro Design Patterns - Tópico 11
Explicação detalhada sobre o tópico 11 relacionado a vocabulário.
Intro Design Patterns - Tópico 12
Explicação detalhada sobre o tópico 12 relacionado a GoF.
Intro Design Patterns - Tópico 13
Explicação detalhada sobre o tópico 13 relacionado a catálogo.
Intro Design Patterns - Tópico 14
Explicação detalhada sobre o tópico 14 relacionado a reutilização.
Intro Design Patterns - Tópico 15
Explicação detalhada sobre o tópico 15 relacionado a vocabulário.
Intro Design Patterns - Tópico 16
Explicação detalhada sobre o tópico 16 relacionado a GoF.
Intro Design Patterns - Tópico 17
Explicação detalhada sobre o tópico 17 relacionado a catálogo.
Conclusão e Revisão ✅
- Resumo do dia
Próxima Aula: ...
Padrões Criacionais 🚀
Aula 10
Agenda de Hoje 📅
- Ponto 1
- Ponto 2
- Ponto 3
Padrões Criacionais - Tópico 1
Explicação detalhada sobre o tópico 1 relacionado a Factory.
Padrões Criacionais - Tópico 2
Explicação detalhada sobre o tópico 2 relacionado a Abstract Factory.
Padrões Criacionais - Tópico 3
Explicação detalhada sobre o tópico 3 relacionado a Builder.
Padrões Criacionais - Tópico 4
Explicação detalhada sobre o tópico 4 relacionado a Singleton.
Padrões Criacionais - Tópico 5
Explicação detalhada sobre o tópico 5 relacionado a Factory.
Padrões Criacionais - Tópico 6
Explicação detalhada sobre o tópico 6 relacionado a Abstract Factory.
Padrões Criacionais - Tópico 7
Explicação detalhada sobre o tópico 7 relacionado a Builder.
Padrões Criacionais - Tópico 8
Explicação detalhada sobre o tópico 8 relacionado a Singleton.
Padrões Criacionais - Tópico 9
Explicação detalhada sobre o tópico 9 relacionado a Factory.
Padrões Criacionais - Tópico 10
Explicação detalhada sobre o tópico 10 relacionado a Abstract Factory.
Padrões Criacionais - Tópico 11
Explicação detalhada sobre o tópico 11 relacionado a Builder.
Padrões Criacionais - Tópico 12
Explicação detalhada sobre o tópico 12 relacionado a Singleton.
Padrões Criacionais - Tópico 13
Explicação detalhada sobre o tópico 13 relacionado a Factory.
Padrões Criacionais - Tópico 14
Explicação detalhada sobre o tópico 14 relacionado a Abstract Factory.
Padrões Criacionais - Tópico 15
Explicação detalhada sobre o tópico 15 relacionado a Builder.
Padrões Criacionais - Tópico 16
Explicação detalhada sobre o tópico 16 relacionado a Singleton.
Padrões Criacionais - Tópico 17
Explicação detalhada sobre o tópico 17 relacionado a Factory.
Conclusão e Revisão ✅
- Resumo do dia
Próxima Aula: ...
Prática Criacional 🚀
Aula 11
Agenda de Hoje 📅
- Ponto 1
- Ponto 2
- Ponto 3
Prática Criacional - Tópico 1
Explicação detalhada sobre o tópico 1 relacionado a desacoplamento.
Prática Criacional - Tópico 2
Explicação detalhada sobre o tópico 2 relacionado a famílias de objetos.
Prática Criacional - Tópico 3
Explicação detalhada sobre o tópico 3 relacionado a refatoração.
Prática Criacional - Tópico 4
Explicação detalhada sobre o tópico 4 relacionado a desacoplamento.
Prática Criacional - Tópico 5
Explicação detalhada sobre o tópico 5 relacionado a famílias de objetos.
Prática Criacional - Tópico 6
Explicação detalhada sobre o tópico 6 relacionado a refatoração.
Prática Criacional - Tópico 7
Explicação detalhada sobre o tópico 7 relacionado a desacoplamento.
Prática Criacional - Tópico 8
Explicação detalhada sobre o tópico 8 relacionado a famílias de objetos.
Prática Criacional - Tópico 9
Explicação detalhada sobre o tópico 9 relacionado a refatoração.
Prática Criacional - Tópico 10
Explicação detalhada sobre o tópico 10 relacionado a desacoplamento.
Prática Criacional - Tópico 11
Explicação detalhada sobre o tópico 11 relacionado a famílias de objetos.
Prática Criacional - Tópico 12
Explicação detalhada sobre o tópico 12 relacionado a refatoração.
Prática Criacional - Tópico 13
Explicação detalhada sobre o tópico 13 relacionado a desacoplamento.
Prática Criacional - Tópico 14
Explicação detalhada sobre o tópico 14 relacionado a famílias de objetos.
Prática Criacional - Tópico 15
Explicação detalhada sobre o tópico 15 relacionado a refatoração.
Prática Criacional - Tópico 16
Explicação detalhada sobre o tópico 16 relacionado a desacoplamento.
Prática Criacional - Tópico 17
Explicação detalhada sobre o tópico 17 relacionado a famílias de objetos.
Conclusão e Revisão ✅
- Resumo do dia
Próxima Aula: ...
Padrões Estruturais 🚀
Aula 12
Agenda de Hoje 📅
- Ponto 1
- Ponto 2
- Ponto 3
Padrões Estruturais - Tópico 1
Explicação detalhada sobre o tópico 1 relacionado a Composite.
Padrões Estruturais - Tópico 2
Explicação detalhada sobre o tópico 2 relacionado a Decorator.
Padrões Estruturais - Tópico 3
Explicação detalhada sobre o tópico 3 relacionado a Facade.
Padrões Estruturais - Tópico 4
Explicação detalhada sobre o tópico 4 relacionado a Adapter.
Padrões Estruturais - Tópico 5
Explicação detalhada sobre o tópico 5 relacionado a Composite.
Padrões Estruturais - Tópico 6
Explicação detalhada sobre o tópico 6 relacionado a Decorator.
Padrões Estruturais - Tópico 7
Explicação detalhada sobre o tópico 7 relacionado a Facade.
Padrões Estruturais - Tópico 8
Explicação detalhada sobre o tópico 8 relacionado a Adapter.
Padrões Estruturais - Tópico 9
Explicação detalhada sobre o tópico 9 relacionado a Composite.
Padrões Estruturais - Tópico 10
Explicação detalhada sobre o tópico 10 relacionado a Decorator.
Padrões Estruturais - Tópico 11
Explicação detalhada sobre o tópico 11 relacionado a Facade.
Padrões Estruturais - Tópico 12
Explicação detalhada sobre o tópico 12 relacionado a Adapter.
Padrões Estruturais - Tópico 13
Explicação detalhada sobre o tópico 13 relacionado a Composite.
Padrões Estruturais - Tópico 14
Explicação detalhada sobre o tópico 14 relacionado a Decorator.
Padrões Estruturais - Tópico 15
Explicação detalhada sobre o tópico 15 relacionado a Facade.
Padrões Estruturais - Tópico 16
Explicação detalhada sobre o tópico 16 relacionado a Adapter.
Padrões Estruturais - Tópico 17
Explicação detalhada sobre o tópico 17 relacionado a Composite.
Conclusão e Revisão ✅
- Resumo do dia
Próxima Aula: ...
Padrões Comportamentais 🚀
Aula 13
Agenda de Hoje 📅
- Ponto 1
- Ponto 2
- Ponto 3
Padrões Comportamentais - Tópico 1
Explicação detalhada sobre o tópico 1 relacionado a Observer.
Padrões Comportamentais - Tópico 2
Explicação detalhada sobre o tópico 2 relacionado a Command.
Padrões Comportamentais - Tópico 3
Explicação detalhada sobre o tópico 3 relacionado a Template Method.
Padrões Comportamentais - Tópico 4
Explicação detalhada sobre o tópico 4 relacionado a Strategy.
Padrões Comportamentais - Tópico 5
Explicação detalhada sobre o tópico 5 relacionado a Observer.
Padrões Comportamentais - Tópico 6
Explicação detalhada sobre o tópico 6 relacionado a Command.
Padrões Comportamentais - Tópico 7
Explicação detalhada sobre o tópico 7 relacionado a Template Method.
Padrões Comportamentais - Tópico 8
Explicação detalhada sobre o tópico 8 relacionado a Strategy.
Padrões Comportamentais - Tópico 9
Explicação detalhada sobre o tópico 9 relacionado a Observer.
Padrões Comportamentais - Tópico 10
Explicação detalhada sobre o tópico 10 relacionado a Command.
Padrões Comportamentais - Tópico 11
Explicação detalhada sobre o tópico 11 relacionado a Template Method.
Padrões Comportamentais - Tópico 12
Explicação detalhada sobre o tópico 12 relacionado a Strategy.
Padrões Comportamentais - Tópico 13
Explicação detalhada sobre o tópico 13 relacionado a Observer.
Padrões Comportamentais - Tópico 14
Explicação detalhada sobre o tópico 14 relacionado a Command.
Padrões Comportamentais - Tópico 15
Explicação detalhada sobre o tópico 15 relacionado a Template Method.
Padrões Comportamentais - Tópico 16
Explicação detalhada sobre o tópico 16 relacionado a Strategy.
Padrões Comportamentais - Tópico 17
Explicação detalhada sobre o tópico 17 relacionado a Observer.
Conclusão e Revisão ✅
- Resumo do dia
Próxima Aula: ...
MVC e Arquitetura 🚀
Aula 14
Agenda de Hoje 📅
- Ponto 1
- Ponto 2
- Ponto 3
MVC e Arquitetura - Tópico 1
Explicação detalhada sobre o tópico 1 relacionado a View.
MVC e Arquitetura - Tópico 2
Explicação detalhada sobre o tópico 2 relacionado a Controller.
MVC e Arquitetura - Tópico 3
Explicação detalhada sobre o tópico 3 relacionado a separação de interesses.
MVC e Arquitetura - Tópico 4
Explicação detalhada sobre o tópico 4 relacionado a Model.
MVC e Arquitetura - Tópico 5
Explicação detalhada sobre o tópico 5 relacionado a View.
MVC e Arquitetura - Tópico 6
Explicação detalhada sobre o tópico 6 relacionado a Controller.
MVC e Arquitetura - Tópico 7
Explicação detalhada sobre o tópico 7 relacionado a separação de interesses.
MVC e Arquitetura - Tópico 8
Explicação detalhada sobre o tópico 8 relacionado a Model.
MVC e Arquitetura - Tópico 9
Explicação detalhada sobre o tópico 9 relacionado a View.
MVC e Arquitetura - Tópico 10
Explicação detalhada sobre o tópico 10 relacionado a Controller.
MVC e Arquitetura - Tópico 11
Explicação detalhada sobre o tópico 11 relacionado a separação de interesses.
MVC e Arquitetura - Tópico 12
Explicação detalhada sobre o tópico 12 relacionado a Model.
MVC e Arquitetura - Tópico 13
Explicação detalhada sobre o tópico 13 relacionado a View.
MVC e Arquitetura - Tópico 14
Explicação detalhada sobre o tópico 14 relacionado a Controller.
MVC e Arquitetura - Tópico 15
Explicação detalhada sobre o tópico 15 relacionado a separação de interesses.
MVC e Arquitetura - Tópico 16
Explicação detalhada sobre o tópico 16 relacionado a Model.
MVC e Arquitetura - Tópico 17
Explicação detalhada sobre o tópico 17 relacionado a View.
Conclusão e Revisão ✅
- Resumo do dia
Próxima Aula: ...
Refatoração com Padrões 🚀
Aula 15
Agenda de Hoje 📅
- Ponto 1
- Ponto 2
- Ponto 3
Refatoração com Padrões - Tópico 1
Explicação detalhada sobre o tópico 1 relacionado a limpeza.
Refatoração com Padrões - Tópico 2
Explicação detalhada sobre o tópico 2 relacionado a evolução.
Refatoração com Padrões - Tópico 3
Explicação detalhada sobre o tópico 3 relacionado a sustentabilidade.
Refatoração com Padrões - Tópico 4
Explicação detalhada sobre o tópico 4 relacionado a melhoria.
Refatoração com Padrões - Tópico 5
Explicação detalhada sobre o tópico 5 relacionado a limpeza.
Refatoração com Padrões - Tópico 6
Explicação detalhada sobre o tópico 6 relacionado a evolução.
Refatoração com Padrões - Tópico 7
Explicação detalhada sobre o tópico 7 relacionado a sustentabilidade.
Refatoração com Padrões - Tópico 8
Explicação detalhada sobre o tópico 8 relacionado a melhoria.
Refatoração com Padrões - Tópico 9
Explicação detalhada sobre o tópico 9 relacionado a limpeza.
Refatoração com Padrões - Tópico 10
Explicação detalhada sobre o tópico 10 relacionado a evolução.
Refatoração com Padrões - Tópico 11
Explicação detalhada sobre o tópico 11 relacionado a sustentabilidade.
Refatoração com Padrões - Tópico 12
Explicação detalhada sobre o tópico 12 relacionado a melhoria.
Refatoração com Padrões - Tópico 13
Explicação detalhada sobre o tópico 13 relacionado a limpeza.
Refatoração com Padrões - Tópico 14
Explicação detalhada sobre o tópico 14 relacionado a evolução.
Refatoração com Padrões - Tópico 15
Explicação detalhada sobre o tópico 15 relacionado a sustentabilidade.
Refatoração com Padrões - Tópico 16
Explicação detalhada sobre o tópico 16 relacionado a melhoria.
Refatoração com Padrões - Tópico 17
Explicação detalhada sobre o tópico 17 relacionado a limpeza.
Conclusão e Revisão ✅
- Resumo do dia
Próxima Aula: ...
Projeto Final 🚀
Aula 16
Agenda de Hoje 📅
- Ponto 1
- Ponto 2
- Ponto 3
Projeto Final - Tópico 1
Explicação detalhada sobre o tópico 1 relacionado a integração.
Projeto Final - Tópico 2
Explicação detalhada sobre o tópico 2 relacionado a arquitetura.
Projeto Final - Tópico 3
Explicação detalhada sobre o tópico 3 relacionado a portfólio.
Projeto Final - Tópico 4
Explicação detalhada sobre o tópico 4 relacionado a projeto.
Projeto Final - Tópico 5
Explicação detalhada sobre o tópico 5 relacionado a integração.
Projeto Final - Tópico 6
Explicação detalhada sobre o tópico 6 relacionado a arquitetura.
Projeto Final - Tópico 7
Explicação detalhada sobre o tópico 7 relacionado a portfólio.
Projeto Final - Tópico 8
Explicação detalhada sobre o tópico 8 relacionado a projeto.
Projeto Final - Tópico 9
Explicação detalhada sobre o tópico 9 relacionado a integração.
Projeto Final - Tópico 10
Explicação detalhada sobre o tópico 10 relacionado a arquitetura.
Projeto Final - Tópico 11
Explicação detalhada sobre o tópico 11 relacionado a portfólio.
Projeto Final - Tópico 12
Explicação detalhada sobre o tópico 12 relacionado a projeto.
Projeto Final - Tópico 13
Explicação detalhada sobre o tópico 13 relacionado a integração.
Projeto Final - Tópico 14
Explicação detalhada sobre o tópico 14 relacionado a arquitetura.
Projeto Final - Tópico 15
Explicação detalhada sobre o tópico 15 relacionado a portfólio.
Projeto Final - Tópico 16
Explicação detalhada sobre o tópico 16 relacionado a projeto.
Projeto Final - Tópico 17
Explicação detalhada sobre o tópico 17 relacionado a integração.
Conclusão e Revisão ✅
- Resumo do dia
Próxima Aula: ...
Configuração
Ambientes de Desenvolvimento 🛠️
Guias para configurar seu computador para o desenvolvimento mobile.
-
Android --- Instalação do Android Studio, SDK e emuladores.
-
iOS (Opcional/Referência) --- Configuração básica de Xcode e ferramentas Mac.
-
Ferramentas de Apoio --- Git, Terminais e Postman/Insomnia para testes de API.
Setup 01: Android Studio 🤖
O Android Studio é a IDE oficial para o desenvolvimento Android.
1. Requisitos de Sistema
- RAM: Mínimo 8GB (Sugerido 16GB+).
- Espaço: Mínimo 10GB para IDE + SDKs.
- Processador: Intel Core i5 ou equivalente.
2. Instalação
- Acesse o site oficial: developer.android.com/studio.
- Baixe a versão mais recente para o seu Sistema Operacional.
- Execute o instalador e escolha a opção "Standard" na configuração inicial.
3. Configurando o SDK
- Após a instalação, vá em Settings > Languages & Frameworks > Android SDK.
- Certifique-se de que a versão mais recente do Android (estável) esteja instalada.
- Na aba SDK Tools, instale o "Android Emulator" e o "Intel x86 Emulator Accelerator (HAXM)" se estiver no Windows com Intel.
4. Criando um Emulador (AVD)
- Abra o Device Manager.
- Clique em Create Device.
- Escolha um dispositivo (ex: Pixel 7).
- Selecione uma imagem de sistema (ex: Level 34 - Android 14).
- Finalize e clique no "Play" para iniciar o celular virtual.
5. Solução de Problemas ⚠️
- VT-x is disabled: Você precisa habilitar a virtualização na BIOS do seu computador.
- Studio muito lento: Adicione a pasta do projeto e as pastas do Android SDK nas exclusões do seu Antivírus.
Setup 02: Xcode (iOS Foundation) 🍎
O Xcode é a ferramenta necessária para compilar e testar apps iOS.
[!IMPORTANT] O Xcode requer um computador Mac (macOS).
1. Instalação
- Abra a App Store no seu Mac.
- Pesquise por Xcode.
- Clique em Obter/Instalar.
- Após o download, abra o Xcode para carregar os componentes adicionais do macOS.
2. Configurando Simuladores
- Vá em Settings > Platforms.
- Verifique se o componente "iOS" está baixado.
- Se não estiver, clique em "GET" para baixar a versão mais estável.
3. Comandos de Linha (CLI)
Para que ferramentas de automação funcionem, você precisa instalar os Command Line Tools:
4. Opcional: CocoaPods
Muitos projetos iOS antigos ainda usam CocoaPods para dependências:
5. Solução de Problemas ⚠️
- Espaço em Disco: O Xcode é muito grande. Garanta pelo menos 40GB de espaço livre para ele e os simuladores.
- Build Lento: Use simuladores de modelos mais simples (ex: iPhone SE) para poupar memória RAM se necessário.
Setup 03: Ferramentas de Apoio 🛠️
Além da IDE, você precisará de ferramentas para gerenciar código e testar dados.
1. Git e GitHub
Essencial para versionamento. * Download: git-scm.com. * Configuração Inicial:
2. Postman ou Insomnia
Para testar as APIs REST antes de escrever código Kotlin/Swift. * Postman: postman.com. * Insomnia: insomnia.rest.
3. Vysor (Opcional)
Para espelhar a tela do seu celular real no computador (via cabo USB). * Acesso: vysor.io.
4. ADB (Android Debug Bridge)
Já vem com o Android Studio, mas é útil no PATH do sistema.
* Permite instalar APKs via terminal: adb install app.apk.
* Permite ver logs detalhados: adb logcat.
5. Flipper (Meta)
Uma ferramenta avançada para debugar bancos de dados SQLite e chamadas de rede direto na interface visual. * Acesso: fbflipper.com.
Setup 04: Java e JDK ☕
1. JDK (Java Development Kit)
O kit essencial para compilar Java.
1. Baixe o JDK 17 LTS (ou 21 LTS) no site da Oracle ou Adoptium.
2. Instale e configure a variável de ambiente JAVA_HOME.
3. Teste: java -version.
2. IntelliJ IDEA (Recomendado)
A melhor IDE para Java/Kotlin. 1. Baixe a versão Community (Gratuita) em jetbrains.com/idea. 2. Instale.
3. VS Code
Se preferir o VS Code: 1. Instale o "Extension Pack for Java" da Microsoft.
4. Solução de Problemas Comuns ⚠️
- 'javac' não reconhecido: A variável de ambiente
JAVA_HOMEou oPathestão errados. Verifique se apontam para a pastabindo JDK. - Erro: "Class names are only accepted...": O nome do arquivo DEVE ser igual ao nome da classe (ex:
Ola.javatem que terpublic class Ola). - Versão antiga do Java: Digite
java -versionpara conferir se está usando a versão que acabou de instalar.
Setup 05: .NET (C# e F#) 🔷
1. .NET SDK
Necessário para rodar C# e F#.
1. Baixe o .NET 8.0 SDK (LTS) em dotnet.microsoft.com.
2. Instale.
3. Teste: dotnet --version.
2. Visual Studio Community
A IDE mais completa para Windows. 1. Baixe em visualstudio.microsoft.com. 2. No instalador, selecione a carga de trabalho: "Desenvolvimento para desktop com .NET".
3. VS Code + C# Dev Kit
Para uma experiência mais leve: 1. Instale a extensão "C# Dev Kit" da Microsoft.
4. Solução de Problemas Comuns ⚠️
- 'dotnet' não encontrado: Reinicie o computador após instalar o SDK.
- Erro de Certificado HTTPS: Na primeira execução, rode
dotnet dev-certs https --trustpara confiar no certificado local. - OmniSharp Error: Se o VS Code reclamar, verifique se instalou o C# Dev Kit e se o SDK é compatível.
Setup 06: Python 🐍
1. Interpretador Python
- Baixe a versão mais recente em python.org.
- IMPORTANTE: Marque a caixa "Add Python to PATH" na instalação!
- Teste:
python --versionoupy --version.
2. PyCharm Community
A IDE mais poderosa para Python. 1. Baixe em jetbrains.com/pycharm.
3. VS Code + Python
- Instale a extensão "Python" da Microsoft.
- Instale a extensão "Jupyter" se quiser usar Notebooks.
4. Solução de Problemas Comuns ⚠️
- 'python' não encontrado: É o erro mais comum. Reinstale e marque a caixa "Add Python to PATH".
- Comando 'python' abre a Microsoft Store: Vá nas configurações do Windows ("Gerenciar Aliases de Execução de Aplicativo") e DESATIVE os itens do "Instalador de Aplicativo" para Python.
- Pip não funciona: Tente
python -m pip install pacote.
Setup 07: Sistemas (Rust e Go) ⚙️
Rust 🦀
O Rust usa o gerenciador rustup.
1. Acesse rustup.rs.
2. Baixe e execute o rustup-init.
3. Aceite o padrão (opção 1).
4. Reinicie o terminal e teste: cargo --version.
5. VS Code: Instale a extensão "rust-analyzer".
Go (Golang) 🐹
- Baixe em go.dev.
- Instale (Next, Next, Finish).
- Teste:
go version. - VS Code: Instale a extensão "Go" oficial.
4. Solução de Problemas Comuns ⚠️
- 'cargo' não encontrado: Reinicie o terminal. Se não funcionar, adicione
~/.cargo/bin(Linux/Mac) ou%USERPROFILE%\.cargo\bin(Windows) ao PATH. - Go Path: Certifique-se de que a variável
GOPATHestá configurada corretamente (geralmenteC:\Users\SeuUsuario\go). - Erro de Linker (Rust): No Windows, pode faltar as ferramentas de build do C++. Baixe o "Build Tools for Visual Studio".
Setup 08: Mobile (Flutter e Kotlin) 📱
Desenvolvimento mobile exige ferramentas mais pesadas.
1. Android Studio
Essencial para emular celulares Android e programar em Kotlin/Java nativo. 1. Baixe em developer.android.com/studio. 2. Instale e deixe ele baixar o Android SDK.
2. Flutter SDK
Para desenvolvimento Dart multiplataforma.
1. Baixe o SDK em flutter.dev.
2. Extraia para C:\src\flutter (exemplo).
3. Adicione C:\src\flutter\bin ao Path do Windows.
4. Rode flutter doctor no terminal para verificar o que falta.
3. VS Code
O editor preferido para Flutter. 1. Instale a extensão "Flutter" (ela instala a do Dart automaticamente).
4. Solução de Problemas Comuns ⚠️
- flutter doctor com erros: É normal. Siga o que ele diz. Geralmente é aceitar licenças (
flutter doctor --android-licenses). - Emulador não abre (HAXM/Hyper-V): Seu processador precisa ter virtualização ativada na BIOS.
- Gradle demorando: A primeira vez demora MUITO (baixa a internet inteira). Tenha paciência.
Setup 09: PHP e Servidor Local 🐘
Como o PHP roda no servidor, precisamos simular um servidor no nosso computador.
1. XAMPP (Tudo em Um)
O pacote mais fácil. Inclui Apache (Servidor), MySQL (Banco) e PHP.
1. Baixe em apachefriends.org.
2. Instale e abra o XAMPP Control Panel.
3. Clique em Start no Apache e MySQL.
4. Seus arquivos devem ficar na pasta C:\xampp\htdocs.
2. Composer (Gerenciador de Pacotes)
Essencial para usar bibliotecas modernas e frameworks como Laravel. 1. Baixe em getcomposer.org. 2. Instale. Ele deve encontrar seu PHP automaticamente.
3. Laravel (Opcional)
Para criar projetos profissionais:
4. Solução de Problemas Comuns ⚠️
- Apache não inicia (Port 80 busy): Skype ou IIS podem estar usando a porta 80. No XAMPP, vá em Config -> httpd.conf e mude
Listen 80paraListen 8080. - MySQL não conecta: Verifique se o serviço está verde no XAMPP.
- Erro de DLL: Pode faltar o "Visual C++ Redistributable" no seu Windows. Atualize-o.
Sobre
Sobre o Curso
🎓 Paradigmas de Programação e Padrões de Projeto
Este curso foi projetado para capacitar desenvolvedores iniciantes e intermediários na compreensão profunda de como o software é estruturado, focado em paradigmas e padrões que garantem qualidade, escalabilidade e manutenibilidade.
🎯 Objetivos do Curso
-
Poder dos Paradigmas --- Compreender as diferentes abordagens (Imperativa, POO, Funcional) e saber quando escolher a melhor arquitetura para cada problema.
-
Design de Excelência --- Dominar os princípios SOLID e padrões de projeto (GoF) para criar sistemas desacoplados e resilientes a mudanças.
-
Refatoração Profissional --- Identificar problemas de design (code smells) e aplicar técnicas de refatoração baseadas em padrões para melhorar a qualidade do código.
-
Visão Arquitetural --- Desenvolver a capacidade de abstração necessária para projetar sistemas complexos de forma organizada e profissional.
📚 O Que Você Vai Aprender
Módulo 1 – Fundamentos dos Paradigmas
- Evolução histórica e conceitos fundamentais
- Paradigma Imperativo e Estruturado
- Paradigma Orientado a Objetos (POO) em profundidade
- Paradigma Funcional e sua aplicação moderna
Módulo 2 – Comparação e Aplicação
- Análise comparativa entre paradigmas
- Linguagens multiparadigma modernas
- Princípios SOLID e Clean Code
- Identificação de problemas de design
Módulo 3 – Padrões Criacionais
- Origem e utilidade dos Design Patterns
- Singleton e suas aplicações (e perigos)
- Fábricas (Factory Method e Abstract Factory)
- Builder para construção de objetos complexos
Módulo 4 – Estruturais e Comportamentais
- Adapter, Composite e Decorator para organização
- Strategy e Observer para comunicação flexível
- Arquitetura MVC (Model-View-Controller)
- Refatoração sistemática com padrões
🛠️ Metodologia
Foco expositivo-dialogado com exercícios práticos imediatos. O curso utiliza diagramas Mermaid para visualização de arquitetura e simuladores de terminal (Termynal) para demonstrações práticas, culminando em um projeto final integrador.
Pronto para transformar sua forma de codificar? Começar Agora
Roadmap do Projeto: Paradigmas e Padrões de Projeto 🚀
Este documento rastreia a evolução da migração e desenvolvimento do curso.
✅ Fase 1: Preparação (Concluído)
- [x] Migração oficial do tema (Lógica -> Paradigmas)
- [x] Definição Syllabus (16 Aulas)
- [x] Estruturação do repositório (
docs/lixeira_revisao) - [x] Configuração MkDocs Material (Site Name, URLs)
🏗️ Fase 2: Conteúdo Base (Em Andamento)
- [x] Scaffolding das 16 Aulas (Markdown)
- [/] Geração de Conteúdo Educacional (Aulas 01-16)
- [ ] Criação dos 16 Quizzes (Interativos)
- [ ] Criação das 16 Listas de Exercícios
- [ ] Criação dos 16 Conjuntos de Slides (RevealJS)
🚀 Fase 3: Projetos e UX
- [ ] Definição dos 16 Projetos práticos
- [ ] Implementação de diagramas Mermaid em todas as aulas
- [ ] Revisão de visual com cards e tipografia moderna
⚙️ Fase 4: Automação e Deploy
- [/] Configuração GitHub Actions para Deploy
- [ ] Validação final de links e Mermaid
- [ ] Mockup de apresentação final
Status Atual: Em Migração / Estruturação Última Atualização: 20/02/2026
Materiais Complementares 📚
Bem-vindo à seção de materiais complementares do curso de Paradigmas de Programação e Padrões de Projeto. Aqui você encontra recursos adicionais para apoiar seus estudos e aprofundar seu conhecimento técnico.
-
Slides --- Acompanhe o conteúdo teórico com slides interativos e diagramas Mermaid.
-
Exercícios --- Pratique a modelagem e aplicação de paradigmas e padrões de projeto.
-
Quizzes --- Valide seu aprendizado com testes rápidos para cada uma das 16 aulas.
-
Projetos --- Desenvolva soluções arquitetadas seguindo padrões da indústria.
-
Ambiente --- Guias de configuração de ambiente (Java, Python, JS e Ferramentas CASE).
Versão para Impressão
Esta página foi gerada automaticamente para impressão.