Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Défi : Implémenter des Accesseurs et Mutateurs dans une Classe | Maîtrise des Classes et de l'Héritage en JavaScript
Maîtrise Avancée de JavaScript

bookDéfi : Implémenter des Accesseurs et Mutateurs dans une Classe

Tâche

Vous travaillez avec une classe Car qui possède une propriété privée #mileage. Votre tâche consiste à définir des accesseurs (getters et setters) pour cette propriété afin de contrôler son accès et sa modification.

  1. Définir un getter pour le kilométrage : Définir un getter pour la propriété mileage afin de récupérer le kilométrage actuel ;
  2. Définir un setter pour le kilométrage avec validation : Définir un setter pour la propriété mileage qui accepte une nouvelle valeur de kilométrage. Ce setter doit :
    • Autoriser la mise à jour uniquement si le nouveau kilométrage est supérieur à l’actuel (le kilométrage ne peut qu’augmenter) ;
    • Si le nouveau kilométrage n’est pas valide, afficher "Invalid mileage update" et ne pas modifier le kilométrage actuel.
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
  • Définir un accesseur get pour mileage afin de récupérer le kilométrage actuel ;
  • Définir un accesseur set pour mileage qui prend newMileage comme paramètre ;
  • Dans le setter, vérifier si newMileage est supérieur au kilométrage actuel (this.#mileage) ;
  • Si newMileage est valide, mettre à jour #mileage avec newMileage ;
  • Si newMileage n’est pas supérieur au kilométrage actuel, afficher "Invalid mileage update" et ne pas modifier le kilométrage.
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

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 10

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

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

bookDéfi : Implémenter des Accesseurs et Mutateurs dans une Classe

Glissez pour afficher le menu

Tâche

Vous travaillez avec une classe Car qui possède une propriété privée #mileage. Votre tâche consiste à définir des accesseurs (getters et setters) pour cette propriété afin de contrôler son accès et sa modification.

  1. Définir un getter pour le kilométrage : Définir un getter pour la propriété mileage afin de récupérer le kilométrage actuel ;
  2. Définir un setter pour le kilométrage avec validation : Définir un setter pour la propriété mileage qui accepte une nouvelle valeur de kilométrage. Ce setter doit :
    • Autoriser la mise à jour uniquement si le nouveau kilométrage est supérieur à l’actuel (le kilométrage ne peut qu’augmenter) ;
    • Si le nouveau kilométrage n’est pas valide, afficher "Invalid mileage update" et ne pas modifier le kilométrage actuel.
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
  • Définir un accesseur get pour mileage afin de récupérer le kilométrage actuel ;
  • Définir un accesseur set pour mileage qui prend newMileage comme paramètre ;
  • Dans le setter, vérifier si newMileage est supérieur au kilométrage actuel (this.#mileage) ;
  • Si newMileage est valide, mettre à jour #mileage avec newMileage ;
  • Si newMileage n’est pas supérieur au kilométrage actuel, afficher "Invalid mileage update" et ne pas modifier le kilométrage.
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

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 10
some-alt