Dados e funcionalidades
Em JavaScript podemos criar funções:
/* Area de um triângulo retângulo */
function getTriangleArea(a, b) {
return (a * b) /2;
}
/* Hipotenusa de um triângulo retângulo */
function getTriangleHypotenuse(a, b) {
return Math.sqrt(a ** 2 + b ** 2);
}
No console do navegador:
getTriangleArea(3,4) // retorna 6
getTriangleHypotenuse(3,4) // retorna 5
Agora imagine que tivéssemos dez, vinte funções para triângulo. Ficaria confuso manter o controle de todas essas funções diferentes e todos os valores de retorno.
O que podemos fazer é combinar nossos dados com nossas funções em um objeto.
let myTri = {
a: 3,
b: 4,
getArea: function() {
return (this.a + this.b) / 2;
},
getHypotenuse: function() {
return Math.sqrt(this.a ** 2 + this.b ** 2);
},
};
Nesse objeto estamos armazenando tanto valores (a e b) como funções (getArea e getHypotenuse), que tecnicamente aqui chamamos de métodos, que na verdade são funções que residem dentro de um objeto.
Veja que usamos a palavra chave "this", para acessar algo dentro do objeto. Nesse contexto, o "this" aqui se refere a esse objeto especificamente.
No console do navegador:
myTrib.a // retorna 3
myTrib.b // retorna 4
myTrib.getArea() // retorna 3.5
myTrib.getHypotenuse() // retorna 5
Porém nesse momento, eu não consigo reutilizar o código. Para triângulos diferentes, preciso criar objetos diferentes.
Portato usando POJO
- Ajuda muito a combinação de dados e funcionalidade.
É limpo: funcionalidade relacionada vive junta.
É um problema quando temos mais de um triângulo. Pois:
É difícil de manter
Se tivermos mil triângulos, teremos mil cópias dessas funções, o que seria um desperdício de memória, espaço e tempo para escrever!
É nesse problema que entram as classes. Assunto da próxima postagem.
Top comments (0)