programmation Java (école d'ingénieur) · Chapitre 9 · Exercice de TD
Visibilité
Héritage et polymorphisme · niveau 1 (application)
Énoncé
La classe Compte a un attribut private double solde et un constructeur Compte(double s). La sous-classe Livret veut une méthode ajouterInterets(double taux) qui multiplie le solde par .
- Pourquoi le code
solde = solde * (1 + taux);écrit dansLivretest-il refusé ? - Donner deux façons de corriger, et dire laquelle préserve le mieux l'invariant « le solde n'est modifié que par les méthodes de
Compte».
Corrigé
soldeestprivatedansCompte: il existe dans l'objetLivret, mais seul le code deComptepeut y accéder. Le compilateur répondsolde has private access in Compte.- Première façon : déclarer l'attribut
protected double solde;. Le code deLivretcompile ; avec un solde initial de et un taux de , le solde devient103.0. Seconde façon : gardersoldeprivé et ajouter dansCompteune méthode, par exempleprotected void crediter(double montant), queLivretappelle aveccrediter(getSolde() * taux). C'est la seconde qui préserve l'invariant : toute modification du solde passe par une méthode deCompte, qui peut la contrôler (refuser un montant négatif, tenir un historique…).
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.