Menu
Coddy logo textTech

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: 150

En 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.

challenge icon

Desafío

Se te proporciona una clase Thermostat. Tu tarea es añadir métodos que modifiquen su estado de temperatura:

  1. increaseTemp() - aumenta la temperatura en 1 grado
  2. decreaseTemp() - 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: 150

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
quiz iconPonte a prueba

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