IN101 – TD6 2009/2010
Sujet v2
Durée : 2 h
1
Objectifs
·
Maîtriser
les classes abstraites et les interfaces
- S’initier au maniement des exceptions
·
Contrainte :
tous les paramètres seront déclarés final
2
Classe
Compte
- Un attribut réel
aSolde
- Le constructeur
habituel (combien de paramètres ?)
- Un accesseur
getSolde()
- Un modificateur privé affecte()
- Deux procédures : debite() / credite() qui retranche / ajoute
au compte le montant passé en paramètre (appeler affecte())
- Une procédure capitalise1an() sans paramètre qui
dépend de chaque type de compte
3
Classe
CompteCourant
- C’est évidemment un
compte (non rémunéré).
- Le constructeur
habituel (combien de paramètres ?)
- Une procédure capitalise1an() qui ici n’a pas
grand-chose à faire
4
Classe
CompteRémunéré
- C’est évidemment un
compte
- Un attribut réel aTaux
(représente
un pourcentage, par exemple : 1.0 pour 1%)
- Le constructeur
habituel (combien de paramètres ?)
- Un accesseur
getTaux()
- Inutile : Une procédure capitalise1an() qui dépend de
chaque type de compte rémunéré
5
Classe
CompteAnnuel
1.
C’est
un compte rémunéré une fois par an ; le taux est donc annuel.
2.
Le
constructeur habituel (combien de paramètres ?)
3.
Une
procédure capitalise1an() qui applique une seule fois le taux pour l’année
6
Classe
CompteMensuel
- C’est un compte
rémunéré 12 fois par an ; le taux (fixe !) est donc mensuel.
- Le constructeur habituel
(combien de paramètres ?)
- Une procédure capitalise1an() qui applique 12 fois
successivement le taux pour le mois. Elle devrait appeler une procédure
récursive capitalise1mois(nbMois) également à écrire.
7
Exceptions
- Vérifiez à l’aide d’une
IllegalArgumentException qu’on ne passe jamais un montant négatif en
paramètre partout où ce risque existe. (pensez à fournir une String
pour le message d’erreur)
- Créez la classe DecouvertException comportant un attribut
réel aDecouvert, le constructeur habituel, et un accesseur.
(pensez à fournir une String pour le message d’erreur)
- Lancer une DecouvertException dans affecte() avant que le solde ne
devienne négatif.
- Résoudre le problème
dans debite() : specify.
- Résoudre le problème
dans credite() : catch. (lancer une RuntimeException("Erreur
Prog."))
8
Interface
Comparable
- Les comptes doivent
désormais être comparables (d’après leur solde).
- Rappel : il faut
définir la fonction compareTo() qui retourne –1, 0, ou
1 selon que le solde de l’objet courant est inférieur, égal, ou supérieur
au solde du compte passé en paramètre.
- Ajouter une fonction
privée arrondi2() qui sera appelée
systématiquement dans affecte() et qui retourne son
paramètre arrondi à 2 chiffres après la virgule. (utiliser (int) pour la partie
entière)