JavaScript : rendre le Web interactif (école d'ingénieur) · Chapitre 6 · Application directe du cours
Un livre audio
Classes et modules · niveau 2
Énoncé
La classe Livre a un titre, un prix, une méthode description() (« titre, prix € ») et une méthode fraisDePort() qui rend 2. Écrire une sous-classe LivreAudio avec une durée en minutes, dont la description ajoute « livre audio de 2 h 05 » (pour 125 minutes), en réutilisant celle de Livre, et dont les frais de port sont nuls. Calculer le prix total, port compris, d'une commande contenant un livre à 45 € et un livre audio à 14 €.
Corrigé
class Livre {
constructor(titre, prix) {
this.titre = titre;
this.prix = prix;
}
description() {
return `${this.titre}, ${this.prix} €`;
}
fraisDePort() {
return 2;
}
}
class LivreAudio extends Livre {
constructor(titre, prix, minutes) {
super(titre, prix);
this.minutes = minutes;
}
description() {
const h = Math.floor(this.minutes / 60);
const m = this.minutes % 60;
return `${super.description()}, livre audio de ${h} h ${String(m).padStart(2, "0")}`;
}
fraisDePort() {
return 0;
}
}
const commande = [new Livre("Analyse MPSI", 45), new LivreAudio("Le Petit Prince", 14, 125)];
for (const l of commande) {
console.log(l.description(), "| port :", l.fraisDePort());
}
console.log(commande.reduce((s, l) => s + l.prix + l.fraisDePort(), 0));
Analyse MPSI, 45 € | port : 2
Le Petit Prince, 14 €, livre audio de 2 h 05 | port : 0
61
super.description() réutilise le texte de la classe mère. Le total vaut : chaque objet donne ses propres frais de port, sans que la boucle ait à connaître sa classe. padStart(2, "0") écrit 5 minutes « 05 ».
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.