JavaScript : rendre le Web interactif (école d'ingénieur) · Chapitre 6 · Application directe du cours
Une classe qui se défend
Classes et modules · niveau 2
Énoncé
Écrire une classe Article dont le constructeur reçoit un titre, un prix et une quantité (1 par défaut). Il lève une TypeError si le titre est vide (après suppression des espaces), une RangeError si le prix n'est pas un nombre positif ou nul, ou si la quantité n'est pas un entier au moins égal à
- Un accesseur
montantrend le prix multiplié par la quantité, arrondi au centime. Tester avec des arguments corrects puis avec quatre jeux d'arguments fautifs.
Corrigé
export class Article {
constructor(titre, prix, quantite = 1) {
if (typeof titre !== "string" || titre.trim() === "") {
throw new TypeError("Le titre est obligatoire.");
}
if (!(prix >= 0)) {
throw new RangeError(`Prix invalide : ${prix}`);
}
if (!Number.isInteger(quantite) || quantite < 1) {
throw new RangeError(`Quantité invalide : ${quantite}`);
}
this.titre = titre.trim();
this.prix = prix;
this.quantite = quantite;
}
get montant() {
return Math.round(this.prix * this.quantite * 100) / 100;
}
}
console.log(new Article(" Le Petit Prince ", 8.5, 3));
console.log(new Article("Le Petit Prince", 8.5, 3).montant);
for (const args of [["", 8.5], ["Java", -1], ["Java", NaN], ["Java", 32, 1.5]]) {
try {
new Article(...args);
} catch (erreur) {
console.log(`${erreur.name} : ${erreur.message}`);
}
}
Article { titre: 'Le Petit Prince', prix: 8.5, quantite: 3 }
25.5
TypeError : Le titre est obligatoire.
RangeError : Prix invalide : -1
RangeError : Prix invalide : NaN
RangeError : Quantité invalide : 1.5
!(prix >= 0) écarte en un seul test les négatifs, NaN et les non-nombres (undefined >= 0 est faux). new Article(...args) étale chaque jeu d'arguments ; la quantité omise prend sa valeur par défaut.
100 % gratuit
La suite du chapitre est sur Adloun
- 10 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.