Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Desafio: Implementar Getters e Setters em uma Classe | Dominando Classes e Herança em JavaScript
Domínio Avançado de JavaScript

bookDesafio: Implementar Getters e Setters em uma Classe

Tarefa

Você está trabalhando dentro de uma classe Car que possui uma propriedade privada #mileage. Sua tarefa é definir getters e setters para essa propriedade a fim de controlar como ela é acessada e modificada.

  1. Definir Getter para Mileage: Defina um getter para a propriedade mileage para recuperar a quilometragem atual;
  2. Definir Setter para Mileage com Validação: Defina um setter para a propriedade mileage que aceite um novo valor de quilometragem. Este setter deve:
    • Permitir a atualização apenas se a nova quilometragem for maior que a quilometragem atual (a quilometragem só pode aumentar);
    • Se a nova quilometragem for inválida, registrar "Invalid mileage update" e não alterar a quilometragem atual.
123456789101112131415161718192021222324252627
class Car { #mileage = 1000; // Initial private mileage // Getter for mileage _____ mileage() { return this.#_____; } // Setter for mileage with validation _____ mileage(newMileage) { _____ (_____ > this.#_____) { this.#_____ = newMileage; } _____ { console.log(_____); } } } // Testing const car1 = new Car(); console.log(car1.mileage); // Expected: 1000 car1.mileage = 1500; // Update mileage to 1500 console.log(car1.mileage); // Expected: 1500 car1.mileage = 900; // Attempt invalid mileage update, expected: Invalid mileage update
copy
  • Definir um acessor get para mileage para recuperar a quilometragem atual;
  • Definir um acessor set para mileage que receba newMileage como parâmetro;
  • No setter, verificar se newMileage é maior que a quilometragem atual (this.#mileage);
  • Se newMileage for válido, atualizar #mileage para newMileage;
  • Se newMileage não for maior que a quilometragem atual, registrar "Invalid mileage update" e não alterar a quilometragem.
123456789101112131415161718192021222324252627
class Car { #mileage = 1000; // Initial private mileage // Getter for mileage get mileage() { return this.#mileage; } // Setter for mileage with validation set mileage(newMileage) { if (newMileage > this.#mileage) { this.#mileage = newMileage; } else { console.log('Invalid mileage update'); } } } // Testing const car1 = new Car(); console.log(car1.mileage); // Output: 1000 car1.mileage = 1500; // Update mileage to 1500 console.log(car1.mileage); // Output: 1500 car1.mileage = 900; // Attempt invalid mileage update, expected: Invalid mileage update
copy

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 10

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Suggested prompts:

Can you explain how getters and setters work in JavaScript?

What happens if I try to set the mileage to the same value as the current mileage?

Can you show how to add more validation to the setter, like checking for negative values?

Awesome!

Completion rate improved to 2.22

bookDesafio: Implementar Getters e Setters em uma Classe

Deslize para mostrar o menu

Tarefa

Você está trabalhando dentro de uma classe Car que possui uma propriedade privada #mileage. Sua tarefa é definir getters e setters para essa propriedade a fim de controlar como ela é acessada e modificada.

  1. Definir Getter para Mileage: Defina um getter para a propriedade mileage para recuperar a quilometragem atual;
  2. Definir Setter para Mileage com Validação: Defina um setter para a propriedade mileage que aceite um novo valor de quilometragem. Este setter deve:
    • Permitir a atualização apenas se a nova quilometragem for maior que a quilometragem atual (a quilometragem só pode aumentar);
    • Se a nova quilometragem for inválida, registrar "Invalid mileage update" e não alterar a quilometragem atual.
123456789101112131415161718192021222324252627
class Car { #mileage = 1000; // Initial private mileage // Getter for mileage _____ mileage() { return this.#_____; } // Setter for mileage with validation _____ mileage(newMileage) { _____ (_____ > this.#_____) { this.#_____ = newMileage; } _____ { console.log(_____); } } } // Testing const car1 = new Car(); console.log(car1.mileage); // Expected: 1000 car1.mileage = 1500; // Update mileage to 1500 console.log(car1.mileage); // Expected: 1500 car1.mileage = 900; // Attempt invalid mileage update, expected: Invalid mileage update
copy
  • Definir um acessor get para mileage para recuperar a quilometragem atual;
  • Definir um acessor set para mileage que receba newMileage como parâmetro;
  • No setter, verificar se newMileage é maior que a quilometragem atual (this.#mileage);
  • Se newMileage for válido, atualizar #mileage para newMileage;
  • Se newMileage não for maior que a quilometragem atual, registrar "Invalid mileage update" e não alterar a quilometragem.
123456789101112131415161718192021222324252627
class Car { #mileage = 1000; // Initial private mileage // Getter for mileage get mileage() { return this.#mileage; } // Setter for mileage with validation set mileage(newMileage) { if (newMileage > this.#mileage) { this.#mileage = newMileage; } else { console.log('Invalid mileage update'); } } } // Testing const car1 = new Car(); console.log(car1.mileage); // Output: 1000 car1.mileage = 1500; // Update mileage to 1500 console.log(car1.mileage); // Output: 1500 car1.mileage = 900; // Attempt invalid mileage update, expected: Invalid mileage update
copy

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 10
some-alt