programmation Java (école d'ingénieur) · Chapitre 8 · Application directe du cours
Une heure immuable
Encapsulation, membres de classe et paquets · niveau 2
Énoncé
Écrire une classe immuable Heure représentant une heure de la journée (heures dans , minutes dans ), avec un constructeur qui refuse les valeurs invalides, une méthode plus(int n) qui retourne l'heure atteinte minutes plus tard (en passant minuit si nécessaire), et une méthode toString au format 22h45. Un train part à 22h45 pour un trajet de 150 minutes : à quelle heure arrive-t-il ?
Corrigé
On convertit en minutes depuis minuit, on ajoute, on réduit modulo , et le constructeur fabrique la nouvelle heure.
// Une heure de la journée, immuable.
final class Heure {
private final int h; // dans [0, 24)
private final int m; // dans [0, 60)
Heure(int h, int m) {
if (h < 0 || h >= 24 || m < 0 || m >= 60) {
throw new IllegalArgumentException("heure invalide : " + h + ":" + m);
}
this.h = h;
this.m = m;
}
public int getH() { return h; }
public int getM() { return m; }
// Retourne l'heure atteinte après n minutes (n >= 0), en passant minuit si besoin.
public Heure plus(int n) {
int total = (60 * h + m + n) % (24 * 60);
return new Heure(total / 60, total % 60);
}
@Override
public String toString() { return String.format("%02dh%02d", h, m); }
}
public class Ex4Heure {
public static void main(String[] args) {
Heure depart = new Heure(22, 45);
Heure arrivee = depart.plus(150);
System.out.println("départ " + depart + ", arrivée " + arrivee);
System.out.println("départ inchangé : " + depart);
}
}
départ 22h45, arrivée 01h15
départ inchangé : 22h45
minutes, et minutes, soit 1h15 le lendemain. L'objet depart n'a pas changé : plus a créé un nouvel objet. La méthode suppose : pour négatif, l'opérateur % de Java pourrait donner un reste négatif, que le constructeur refuserait.
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.