-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path06-abstracao.js
More file actions
39 lines (29 loc) · 1.19 KB
/
06-abstracao.js
File metadata and controls
39 lines (29 loc) · 1.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// Abstração é outro pilar da POO
// Ela consiste em esconder os detalhes internos e expor apenas o essencial de um objeto ou sistema.
// EX: Você usa um carro sem precisar saber como funciona o motor por dentro — você só precisa saber que acelerar(), frear() e virar() estão disponíveis.
// ❌ JavaScript não tem classes abstratas reais
// - Não existe abstract no JavaScript puro.
// - Você não pode forçar que uma classe filha implemente um método.
// - É tudo baseado em convenções.
// ✅ Como simular abstração em JavaScript?
// Você usa uma classe base com métodos que lançam erros caso não sejam implementados nas subclasses:
class Shape {
// Método que deve ser implementado por qualquer subclasse
area() {
throw new Error("O método area() deve ser implementado pela subclasse.");
}
}
// Agora qualquer classe que herdar de Shape deve sobrescrever area, senão dá erro
class Square extends Shape {
constructor(side) {
super();
this.side = side;
}
area() {
return this.side * this.side;
}
}
const s = new Square(5);
console.log(s.area()); // 25
const broken = new Shape();
// broken.area(); // ❌ Erro: método area() deve ser implementado