CodeGym /Cursos /Frontend SELF PT /Construtores e Métodos

Construtores e Métodos

Frontend SELF PT
Nível 39 , Lição 5
Disponível

6.1 Construtores de Classes

Construtores e métodos de classes são elementos fundamentais da programação orientada a objetos em JavaScript. Eles permitem criar e inicializar objetos, além de definir seu comportamento. Abaixo, vamos dar uma olhada em como funcionam os construtores e métodos de classes, e como usá-los.

O que é um construtor?

Construtor é um método especial da classe chamado no momento da criação de uma nova instância da classe. Ele é utilizado para inicializar o objeto, definir valores de suas propriedades e realizar outras tarefas iniciais.

Definindo um construtor

O construtor é definido usando a palavra-chave constructor. Dentro do construtor, com a palavra-chave this, você pode acessar as propriedades e métodos do objeto.

Sintaxe:

    
      class ClassName {
        constructor(parâmetros) {
          // Inicialização do objeto
        }
      }
    
  

Exemplo:

No class Person o método constructor aceita dois parâmetros: name e age.

Esses parâmetros são usados para inicializar as propriedades name e age do objeto criado.

JavaScript
    
      class Person {
        constructor(name, age) {
          this.name = name;
          this.age = age;
        }
      }

      const person1 = new Person('Alice', 30);
      const person2 = new Person('Bob', 25);

      console.log(person1.name); // Vai imprimir: Alice
      console.log(person2.age);  // Vai imprimir: 25
    
  

Construtor padrão

Se um construtor não for explicitamente definido, o JavaScript cria automaticamente um construtor padrão vazio.

Exemplo:

JavaScript
    
      class Animal {}

      const animal = new Animal();
      console.log(animal); // Vai imprimir: Conteúdo da classe Animal {}
    
  

4.2 Métodos de Classes

Métodos de classes são definidos dentro do corpo da classe e fornecem funcionalidades para os objetos criados por essa classe. Métodos são automaticamente adicionados ao protótipo da classe, o que permite que todas as instâncias da classe os herdem e usem.

Sintaxe:

    
      class ClassName {
        constructor(parâmetros) {
          // Inicialização do objeto
        }
        
        metodo1() {
          // Corpo do método
        }
        
        metodo2() {
          // Corpo do método
        }
      }
    
  

Exemplo:

JavaScript
    
      class Car {
        constructor(brand, model) {
          this.brand = brand;
          this.model = model;
          this.mileage = 0;
        }

        drive(distance) {
          this.mileage += distance;
          console.log(`${this.brand} ${this.model} drove ${distance} miles. Total mileage: ${this.mileage}`);
        }

        getDetails() {
          return `${this.brand} ${this.model}, Mileage: ${this.mileage}`;
        }
      }

      const myCar = new Car('Toyota', 'Camry');
      myCar.drive(50); // "Toyota Camry drove 50 miles. Total mileage: 50"

      console.log(myCar.getDetails()); // "Toyota Camry, Mileage: 50"
    
  

Explicação:

  • Na classe Car são definidos dois métodos: drive() e getDetails()
  • O método drive() aumenta a quilometragem do carro e imprime informações sobre a distância percorrida
  • O método getDetails() retorna uma string com informações sobre o carro

6.3 Métodos Privados

Com a introdução das novas especificações do ECMAScript, surgiu a possibilidade de criar métodos e propriedades privadas, que não são acessíveis fora da classe. Para isso, é usado o símbolo # como parte do nome.

Exemplo de métodos e propriedades privados:

JavaScript
    
      class BankAccount {
        #balance = 0;

        constructor(initialBalance) {
          this.#balance = initialBalance;
        }

        #validateAmount(amount) {
          if (amount <= 0) {
            throw new Error('Amount must be positive.');
          }
        }

        deposit(amount) {
          this.#validateAmount(amount);
          this.#balance += amount;
          console.log(`Deposited ${amount}. New balance: ${this.#balance}`);
        }

        withdraw(amount) {
          this.#validateAmount(amount);
          if (amount > this.#balance) {
            throw new Error('Insufficient funds.');
          }
          this.#balance -= amount;
          console.log(`Withdrew ${amount}. New balance: ${this.#balance}`);
        }

        getBalance() {
          return this.#balance;
        }
      }

      const account = new BankAccount(100);
      account.deposit(50); // Vai imprimir: Deposited 50. New balance: 150
      account.withdraw(30); // Vai imprimir: Withdrew 30. New balance: 120
      console.log(account.getBalance()); // Vai imprimir: 120

      // Tentativa de acessar um método ou propriedade privado gerará um erro
      account.#balance; // SyntaxError
      account.#validateAmount(50); // SyntaxError
    
  
1
Опрос
Introdução às Classes,  39 уровень,  5 лекция
недоступен
Introdução às Classes
Introdução às Classes
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION