programmation Java (école d'ingénieur) · Chapitre 10 · Application directe du cours
Étendre les expressions
Classes abstraites et interfaces · niveau 3 (difficile)
Énoncé
On reprend l'interface scellée Expr du cours.
- On écrit une classe
final class Oppose implements Exprsans toucher à l'interface. Que dit le compilateur ? - Ajouter proprement une classe
Difference, puis construire et évaluer l'expression . - Quel avantage y a-t-il à ce que la liste des expressions soit fermée ?
Corrigé
- La classe n'est pas dans la clause
permits:
E5.java:13: error: class is not allowed to extend sealed class: Expr (as it is not listed in its 'permits' clause)
final class Oppose implements Expr {
^
- On ajoute la classe et son nom dans la clause
permits:
sealed interface Expr permits Nombre, Somme, Produit, Difference {
int valeur();
String texte();
}
final class Difference implements Expr {
private final Expr g, d;
Difference(Expr g, Expr d) { this.g = g; this.d = d; }
public int valeur() { return g.valeur() - d.valeur(); }
public String texte() { return g.texte() + " - (" + d.texte() + ")"; }
}
Expr e = new Difference(new Nombre(10),
new Produit(new Somme(new Nombre(2), new Nombre(3)), new Nombre(4)));
System.out.println(e.texte() + " = " + e.valeur());
10 - ((2 + 3) * 4) = -10
Les parenthèses ajoutées autour du membre de droite sont nécessaires : sans elles, l'expression s'afficherait 10 - 5 - 3, qui se lit .
- Le code qui manipule des expressions peut compter sur une liste complète et connue : aucun « cas oublié » ne peut apparaître parce qu'un autre programmeur aurait ajouté sa propre classe. Le compilateur exploite aussi cette information : avec le filtrage par motif de
switch(Java 21), il vérifie que tous les cas sont traités.
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 podcast et la vidéo du chapitre : 2 minutes d'écoute sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours, le premier QCM et 2 minutes de podcast et de vidéo. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.