- Programación Orientada a Objetos en JavaScript
Ir a contenido:
3.1 Objetos y clases
En JavaScript, un objeto es una colección de propiedades y métodos que se pueden utilizar para representar una entidad del mundo real. Las propiedades representan los atributos de la entidad, mientras que los métodos representan las acciones que la entidad puede realizar.
Para crear un objeto en JavaScript, se utiliza la palabra clave «new» seguida del nombre del constructor del objeto. Los constructores son funciones especiales que se utilizan para crear objetos.
Ejemplo:
function Persona(nombre, edad) { this.nombre = nombre; this.edad = edad; } let persona1 = new Persona("Juan", 30); let persona2 = new Persona("Ana", 25);
En JavaScript, las clases son una sintaxis especial para definir constructores de objetos. Las clases se introdujeron en ECMAScript 6 y son una forma más fácil de crear objetos.
Ejemplo:
class Persona { constructor(nombre, edad) { this.nombre = nombre; this.edad = edad; } } let persona1 = new Persona("Juan", 30); let persona2 = new Persona("Ana", 25);
3.2 Herencia y prototipos
La herencia en JavaScript se basa en prototipos. Los prototipos son objetos que contienen propiedades y métodos que se comparten entre todos los objetos creados a partir de un constructor.
Para crear un objeto que herede propiedades y métodos de otro objeto, se utiliza la palabra clave «extends» seguida del nombre de la clase padre.
Ejemplo:
class Animal { constructor(nombre) { this.nombre = nombre; } comer() { console.log(this.nombre + " está comiendo"); } } class Perro extends Animal { ladrar() { console.log(this.nombre + " está ladrando"); } } let perro1 = new Perro("Firulais"); perro1.comer(); // Muestra "Firulais está comiendo" perro1.ladrar(); // Muestra "Firulais está ladrando"
3.3 Getters y setters
Los getters y setters en JavaScript son métodos especiales que se utilizan para obtener y establecer valores de propiedades de un objeto. Los getters se utilizan para obtener el valor de una propiedad, mientras que los setters se utilizan para establecer el valor de una propiedad.
Ejemplo:
class Persona { constructor(nombre, edad) { this._nombre = nombre; this._edad = edad; } get nombre() { return this._nombre; } set nombre(nombre) { this._nombre = nombre; } get edad() { return this._edad; } set edad(edad) { this._edad = edad; } } let persona1 = new Persona("Juan", 30); console.log(persona1.nombre); // Muestra "Juan" persona1.nombre = "Pedro"; console.log(persona1.nombre); // Muestra "Pedro"
3.4 Métodos estáticos y de instancia
Los métodos estáticos en JavaScript son métodos que se llaman directamente en la clase, sin necesidad de crear un objeto. Los métodos de instancia son métodos que se llaman en un objeto creado a partir de la clase.
Ejemplo:
class Matematicas { static sumar(a, b) { return a + b; } static restar(a, b) { return a - b; } } console.log(Matematicas.sumar(5, 10)); // Muestra 15 console.log(Matematicas.restar(10, 5)); // Muestra 5 class Circulo { constructor(radio) { this.radio = radio; } area() { return Math.PI * Math.pow(this.radio, 2); } } let circulo1 = new Circulo(5); console.log(circulo1.area()); // Muestra 78.53981633974483
3.5 Encapsulamiento y abstracción
El encapsulamiento en JavaScript se refiere a la práctica de ocultar la implementación de un objeto y exponer solo la interfaz pública necesaria para interactuar con él. La abstracción se refiere a la práctica de representar una entidad del mundo real en términos de sus características y comportamientos esenciales.
Ejemplo:
class CuentaBancaria { constructor(saldoInicial) { this._saldo = saldoInicial; } get saldo() { return this._saldo; } depositar(monto) { this._saldo += monto; } retirar(monto) { if (monto <= this._saldo) { this._saldo -= monto; } else { console.log("Saldo insuficiente"); } } } let cuenta1 = new CuentaBancaria(1000); console.log(cuenta1.saldo); // Muestra 1000 cuenta1.depositar(500); console.log(cuenta1.saldo); // Muestra 1500 cuenta1.retirar(200); console.log(cuenta1.saldo); // Muestra 1300 cuenta1.retirar(2000); // Muestra "Saldo insuficiente"
3.6 Ejemplos y casos de uso
Algunos ejemplos y casos de uso de la programación orientada a objetos en JavaScript incluyen:
- Crear una clase «Producto» que represente un producto en una tienda en línea, con propiedades como nombre, precio y descripción, y métodos como agregar al carrito y mostrar detalles.
- Crear una clase «Libro» que represente un libro en una biblioteca, con propiedades como título, autor y editorial, y métodos como prestar y devolver.
- Crear una clase «Persona» que represente una persona, con propiedades como nombre, edad y dirección, y métodos como mostrar información y actualizar dirección.
- Crear una clase «CuentaBancaria» que represente una cuenta bancaria, con propiedades como saldo y número de cuenta, y métodos como depositar y retirar dinero.
- Crear una clase «Vehiculo» que represente un vehículo, con propiedades como marca, modelo y año, y métodos como arrancar y detener.