JavaScript es un lenguaje de programación versátil que soporta múltiples paradigmas, incluyendo la programación orientada a objetos (POO). Aunque tradicionalmente se ha considerado un lenguaje orientado a prototipos, la introducción de la sintaxis de clases en ECMAScript 6 (ES6) ha hecho que la POO sea más accesible y estructurada para los desarrolladores. En este post, exploraremos los conceptos básicos de la POO en JavaScript y cómo aplicarlos en tus proyectos.
Desarrollo del tema
Clases y Objetos
En ES6, las clases se introdujeron como una forma más clara y concisa de crear objetos y manejar herencia.
class Persona {
constructor(nombre, edad) {
this.nombre = nombre;
this.edad = edad;
}
saludar() {
console.log(`Hola, mi nombre es ${this.nombre} y tengo ${this.edad} años.`);
}
}
const juan = new Persona('Juan', 30);
juan.saludar();
Herencia
La herencia permite crear nuevas clases basadas en clases existentes. En JavaScript, esto se hace con la palabra clave extends
.
class Estudiante extends Persona {
constructor(nombre, edad, carrera) {
super(nombre, edad);
this.carrera = carrera;
}
estudiar() {
console.log(`${this.nombre} está estudiando ${this.carrera}.`);
}
}
const ana = new Estudiante('Ana', 22, 'Ingeniería');
ana.saludar();
ana.estudiar();
Encapsulación
La encapsulación se refiere a restringir el acceso a ciertos detalles de un objeto. En JavaScript, esto se puede lograr utilizando propiedades y métodos privados.
class CuentaBancaria {
#saldo = 0;
depositar(cantidad) {
if (cantidad > 0) {
this.#saldo += cantidad;
}
}
obtenerSaldo() {
return this.#saldo;
}
}
const cuenta = new CuentaBancaria();
cuenta.depositar(100);
console.log(cuenta.obtenerSaldo()); // 100
console.log(cuenta.#saldo); // Error: propiedad privada
Polimorfismo
El polimorfismo permite a los métodos de diferentes clases usar el mismo nombre pero comportarse de manera diferente. En JavaScript, esto se logra con métodos sobrescritos.
class Animal {
hacerSonido() {
console.log('Sonido de animal');
}
}
class Perro extends Animal {
hacerSonido() {
console.log('Ladrido');
}
}
const animal = new Animal();
const perro = new Perro();
animal.hacerSonido(); // Sonido de animal
perro.hacerSonido(); // Ladrido
Conclusión
La programación orientada a objetos en JavaScript proporciona una manera estructurada y eficiente de organizar el código, haciendo que sea más fácil de mantener y reutilizar. Al dominar los conceptos de clases, herencia, encapsulación y polimorfismo, puedes crear aplicaciones más robustas y escalables. Integrar estos principios en tus proyectos de JavaScript te permitirá aprovechar al máximo el poder del lenguaje.