Métodos que modifican el estado
Parte de la sección Programación Orientada a Objetos del Journey de JavaScript de Coddy. Lección 15 de 56.
Los métodos en las clases de JavaScript pueden modificar el estado (propiedades) de un objeto. Esta es una de las características clave de la programación orientada a objetos.
Vamos a crear una clase BankAccount sencilla:
class BankAccount {
constructor(owner, balance = 0) {
this.owner = owner;
this.balance = balance;
}
deposit(amount) {
this.balance += amount;
}
}Ahora vamos a crear una instancia y modificar su estado:
const johnsAccount = new BankAccount("John", 100);
console.log(johnsAccount.balance); // Salida: 100
johnsAccount.deposit(50);
console.log(johnsAccount.balance); // Salida: 150En este ejemplo, el método deposit() modifica el estado interno (la propiedad balance) de la instancia BankAccount.
Podemos añadir más métodos que modifiquen el estado:
class BankAccount {
constructor(owner, balance = 0) {
this.owner = owner;
this.balance = balance;
}
deposit(amount) {
this.balance += amount;
}
withdraw(amount) {
if (amount <= this.balance) {
this.balance -= amount;
}
}
transfer(amount, toAccount) {
if (amount <= this.balance) {
this.balance -= amount;
toAccount.balance += amount;
}
}
}Ahora podemos manipular nuestra cuenta bancaria de múltiples maneras.
Desafío
Se te proporciona una clase Thermostat. Tu tarea es añadir métodos que modifiquen su estado de temperatura:
increaseTemp()- aumenta la temperatura en 1 gradodecreaseTemp()- disminuye la temperatura en 1 grado
Pruébalo tú mismo
import { Thermostat } from './thermostat.js';
// Código de prueba - no modificar
const livingRoom = new Thermostat("Living Room", 20);
livingRoom.increaseTemp();
livingRoom.increaseTemp();
console.log(livingRoom.currentTemp); // Debería mostrar 22
livingRoom.decreaseTemp();
console.log(livingRoom.currentTemp); // Debería mostrar 21
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Programación Orientada a Objetos
1Objetos y la palabra clave this
Repaso rápido: ObjetosAgregar métodos a los objetosEntendiendo la palabra clave thisFunciones constructorasLa palabra clave newDesafío de repaso7Herencia y la palabra clave extends
HerenciaLa relación "es-un"La palabra clave extendsEl método super()Heredar propiedades y métodosDesafío de repaso13Composición vs. Herencia
La relación "tiene-un" vs. "es-un"Los límites de la herencia profundaConstrucción de objetos2Organización del código
¿Qué son los módulos?Exportar con exportImportar con importExportaciones por defecto vs. nombradas5Encapsulamiento y Acceso
EncapsulamientoCampos de clase públicos y privadosMétodos privadosDesafío de repaso8Organización del código OOP
Organizar clases en módulos11Proyecto: Un renderizador de figuras
Configuración: Clase Figura y exportaciónHerencia de la clase CírculoSobrescritura y método de áreaContador de figuras estático14Sistema de Gestión de Biblioteca
Diseño de la BibliotecaClase Libro con ComposiciónValidación del Autor del Libro9Métodos y propiedades estáticos
Nivel de clase vs. Nivel de instanciaPropiedades estáticasMétodos de utilidad estáticosDesafío de repasoPractica por tu cuenta: Compilador de JavaScript online