TP Programmation par objets - Java, Licence3 - Module ULIN504, Université de Montpellier II

Enseignant resp : Jacques Ferber,ferber@lirmm.fr

TP 2 : Le distributeur de billets

 

1 La classe Compte

Rappel: En java, chaque classe est codée dans un fichier différent. La classe Compte sera donc écrite dans le fichier Compte.java et un programme de test sera écrit par exemple dans le fichier Test.java. Les deux fichiers doivent être compilés et situés dans le même répertoire lors de l'exécution.

Exercice 1:  Créer une classe Compte qui modélise un compte en banque. Dans cette classe on doit avoir au moins les deux informations suivantes : numéro du compte et le solde du compte.

Cette classe doit posséder les méthodes  :  
    - void deposer(int s)  : pour déposer une somme sur le compte.  
    - void retirer(int s)  : pour retirer une somme sur le compte.  
    - int avoirSolde() : qui retourne le solde du compte.
    - String infos() : qui retourne une chaîne d'informations similaires à :  "Compte numero: 121, Solde :  15000 Fr"

       

Exercice 2: Ecrire un programme pour tester la classe Compte. Ce programme doit effectuer successivement les opérations suivantes : déposer 5000 Frs, afficher le solde, retirer 200 Frs, afficher un RIB (methode infos()). 

 

2 Saisie clavier en Java

Il faut tout d'abord noter que java est un langage sécurisé, et qu'il existe un mécanisme d'exception qui permet de gérer d'éventuelles erreurs lors de l'exécution du programme. La méthode que nous allons utiliser pour capturer une chaîne entrée au clavier exploite ce mécanisme.

Aussi nous allons devoir effectuer une déclaration particulière (et obligatoire) qui nous permettra de ne pas tenir compte des exceptions.

Il faut désormais déclarer la fonction main() de la façon suivante:

public static void main(String[] args) throws Exception {

       //votre code...

}

D'autre part, Java n'est pas un langage très adapté à l'entrée d'informations directement à la console de commande, même si cela est tout à fait possible. En effet, Java préfère les interactions avec l'utilisateur au travers d'interfaces graphiques que nous verrons en cours.

Néanmoins, pour ce TP, les interactions avec l'utilisateur du programme s'effectueront au travers de la console. Pour lire une chaîne entrée au clavier, on va utiliser la classe BufferReader. En tout début de fichier, avant 'public class...' il faut écrire la ligne :

     import java.io.*;  

et dans la fonction main() on déclare :

BufferedReader clavier = new BufferedReader(new  InputStreamReader(System.in));

Maintenant la ligne de code suivante :

   chaine = clavier.readLine();

stoppe l'exécution du programme jusqu'à ce que une chaîne soit saisie au clavier terminée par ENTER), puis retourne cette chaîne (ici récupérée par la variable chaine, de type String) et reprend l'exécution du code.

 

3 Le programme DAB (Distributeur Automatique de Billets)

L'objectif est de faire un programme qui simule un DAB, et permet de manipuler un compte en banque. Les opérations possibles sont les suivantes :

        1- Retrait  
        2- Dépôt  
        3- Solde  
        4- Quit  

 

Exercice 3:

Créez une classe DAB qui comprenne notamment une méthode void activer() qui sert à faire des interactions avec l'utilisateur. Cette méthode affiche le menu décrit ci-dessus, et permet à l'utilisateur de saisir l'un des choix (1,2,3 ou 4). Quand un choix est fait le programme affiche par exemple:

"Vous avez fait le choix 3" 

si il s'agit d'un choix valide,(3 dans l'exemple), et affiche :

          "Vous devez entrer un choix valide ! (ex: 1)"

si l'utilisateur a entré un choix autre que 1,2,3 et 4.

Après chaque choix et l'affichage de la phrase correspondante, le menu doit être réaffiché, et l'utilisateur peut saisir un nouveau choix, et ce jusqu'à ce que l'utilisateur saisisse le choix 4, lequel conduit à mettre fin au programme.

 

Exercice 4:

Reprenez le programme précédent en y ajoutant une instance de la classe Compte, et placez le traitement correspondant à chaque choix du menu pour que le programme fonctionne réellement comme un DAB et permet à l'utilisateur de manipuler l'instance de Compte.(Pour les choix 1 et 2 le programme doit demander à l'utilisateur la valeur à retirer ou à déposer.)

Exercice 5:

On considère maintenant que le DAB contient un ensemble de comptes et que ces comptes sont placés dans un tableau de comptes.

Modifiez le programme de manière à ce qu'on puisse sélectionnez un compte pour pouvoir travailler dessus. Le menu est maintenant:

        0-Selectionner compte courant
        1- Retrait  
        2- Dépôt  
        3- Solde  
        4- Quit  

Si le compte n'existe pas, le programme doit renvoyer un message d'erreur à l'utilisateur.

Testez votre programme avec un ensemble de comptes.

Exercice 5:

On ajoute d'autres fonctionnalités à ce distributeur, comme la possibilité de virer une certaine somme d'argent d'un compte à un autre.

Modifiez la classe DAB et la classe Compte de manière à ce que l'on puisse faire des virements de compte à compte.


Site des infos concernant le module de programmation par objets en licence:
http://www.lirmm.fr/~ferber/Licence