Modelo mental para te guiar e transformar o problema do mundo real em softwere.
-
Analizar o mundo como um objeto e suas relações.
- Os objetos tem atributos, responsabilidades e relação entre esses objetos.
-
Paradigma Funcional
- trabalha com dados constantes (consome mais memória e processamento)
- lida melhor com processamento paralelo
-
Paradigma Procedural
- não precisa se preocupar muito com os príncipios pro seu código.
-
Paradigma Orientação a Objetos
- precisa se preocupar com os princípios a serem aplicados no seu código.
- Sempre trabalhando com as váriaveis
- Foco no fluxo
- Estados mutáveis
- Como (explica como cada passo deve ser feito, a linguagem deve resolver)
- Maior quantidade de código
- Baixo nível
- Mais conhecido
- Mais explícito
const notas = [8.7, 6.8, 7.7, 7.7, 9.2, 5.3, 8.0]
function media(notas) {
let total = 0
for(let i = 0; i < notas.length; i++){
total += notas[i]
}
return total / notas.length
}
const mediaTurma = media(notas)
console.log(`Média é ${mediaTurma}`)
- Não altera os dados que já existem, cria-se uma evolução dos dados
existentes para manipulação.
- Foco na lógica
- Imutabilidade
- O que ( você define o que deve ser feito )
- Alto nível de escalabilidade
- Menos conhecido
- Menos explícito
const notas = [8.7, 6.8, 7.7, 7.7, 9.2, 5.3, 8.0]
const somar = (a, b) => a + b
const dividir = (a, b) => a / b
const mediaTurma = dividir(
notas.reduce(somar),
notas.length
)
console.log(`Média é ${mediaTurma}`)
- First Class Functions (funções são valores)
function dobro(x) {
return x * 2
}
dobro(20)
const dobro = function(x) {
return x * 2
}
dobro(20)
const exagerado = composicao(
gritar, // <-- É uma função
enfatizar, // <-- É uma função
)
// exagerado também é uma função
exagerado('PARA')