Menu
Coddy logo textTech

Métodos que modificam o estado

Parte da seção Programação Orientada a Objetos do Journey de JavaScript da Coddy — lição 15 de 56.

Métodos em classes JavaScript podem modificar o estado (propriedades) de um objeto. Esta é uma das principais características da programação orientada a objetos.

Vamos criar uma classe BankAccount simples:

class BankAccount {
  constructor(owner, balance = 0) {
    this.owner = owner;
    this.balance = balance;
  }
  
  deposit(amount) {
    this.balance += amount;
  }
}

Agora vamos criar uma instância e modificar seu estado:

const johnsAccount = new BankAccount("John", 100);
console.log(johnsAccount.balance); // Saída: 100

johnsAccount.deposit(50);
console.log(johnsAccount.balance); // Saída: 150

Neste exemplo, o método deposit() modifica o estado interno (a propriedade balance) da instância BankAccount.

Podemos adicionar mais métodos de modificação de 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;
    }
  }
}

Agora podemos manipular nossa conta bancária de várias maneiras.

challenge icon

Desafio

Você recebeu uma classe Thermostat. Sua tarefa é adicionar métodos que modifiquem seu estado de temperatura:

  1. increaseTemp() - aumenta a temperatura em 1 grau
  2. decreaseTemp() - diminui a temperatura em 1 grau

Folha de consulta

Métodos em classes JavaScript podem modificar o estado (propriedades) de um objeto.

Exemplo de uma classe com métodos que modificam o 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;
    }
  }
}

Usando métodos que modificam o estado:

const johnsAccount = new BankAccount("John", 100);
console.log(johnsAccount.balance); // Outputs: 100

johnsAccount.deposit(50);
console.log(johnsAccount.balance); // Outputs: 150

Experimente você mesmo

import { Thermostat } from './thermostat.js';

// Código de teste - não modifique
const livingRoom = new Thermostat("Living Room", 20);

livingRoom.increaseTemp();
livingRoom.increaseTemp();
console.log(livingRoom.currentTemp); // Deve exibir 22

livingRoom.decreaseTemp();
console.log(livingRoom.currentTemp); // Deve exibir 21
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Programação Orientada a Objetos