On veut que les opérations risquant de générer un découvert supérieur au découvert maximum génèrent une exception de type
DecouvertException
, et que le programme s'arrête, affichant un message du type :
DecouvertException: Retrait de 500,00 impossibleEssayez d'implémenter cela de deux manières :
-
En utilisant l'héritage : écrire une sous-classe de
Compte
:CompteAvecDecouvert
, qui contient un champ supplémentaire :decouvertMax
.
Une fois un compte créé, ce champ ne doit pas pouvoir être modifié.
Afin d'implémenterCompteAvecDecouvert
, il est possible de modifierCompte
. -
En utilisant la composition :
CompteAvecDecouvert
n'hérite pas de compte mais contient un compte.
Si besoin, il est aussi possible de modifier la classeCompte
.
CompteAvecDecouvert
a un constructeur prenant en paramètre le nom du compte et le montant du découvert maximum utilisé.
Pour les deux implémentations, utilisez la classe
TestCompteAvecDecouvert
fournie dans TestCompteAvecDecouvert.java.
Son exécution donne :
java TestCompteAvecDecouvert
===== Etat initial ===== Compte 1 - Découvert max 1000.0 - Solde: 0.0 Compte 2 - Découvert max 4000.0 - Solde: 0.0 ===== c1.retirer(800.0) ===== Compte 1 - Découvert max 1000.0 - Solde: -800.0 ===== c1.virerVers(500.0, c2) ===== Retrait de 500,00 impossible sur Compte 1 DecouvertException: Retrait de 500,00 impossible sur Compte 1 at CompteAvecDecouvert.retirer(CompteAvecDecouvert.java:15) at CompteAvecDecouvert.virerVers(CompteAvecDecouvert.java:22) at TestCompteAvecDecouvert.main(TestCompteAvecDecouvert.java:19)