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
Hoja de referencia
Los métodos en las clases de JavaScript pueden modificar el estado (propiedades) de un objeto.
Ejemplo de una clase con métodos que modifican 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;
}
}
}Uso de métodos que modifican el estado:
const johnsAccount = new BankAccount("John", 100);
console.log(johnsAccount.balance); // Outputs: 100
johnsAccount.deposit(50);
console.log(johnsAccount.balance); // Outputs: 150Prué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írculo14Sistema de Gestión de Biblioteca
Diseño de la BibliotecaClase Libro con Composición9Métodos y propiedades estáticos
Nivel de clase vs. Nivel de instanciaPropiedades estáticasMétodos de utilidad estáticosDesafío de repaso