• Aucun résultat trouvé

Gestion locale de banque simple en Java

N/A
N/A
Protected

Academic year: 2022

Partager "Gestion locale de banque simple en Java"

Copied!
3
0
0

Texte intégral

(1)

Gestion locale de banque simple en Java

Université Paris Sud

Exercice 1 Gestion simple de banque : solution locale

L’objet de cet exercice est de créer une application java qui implante quelques services de base d’une gestion bancaire.

1. Créer deux classes principales BankLocal et BankLocalServer qui vont agir respectivement comme client et comme serveur (en local). La classe BankLocal sera déclarée publique.

2. Créer une classeAccount, représentant un compte bancaire, munie des trois champs String name, le nom du propriétaire du compte, String password, le mot de passe associé au compte et int balance, le solde du compte. Cette classe ne contiendra qu’un constructeur et aucune autre méthode. Ce constructeur ne sera chargé que d’enregistrer le nom et le mot de passe ainsi que d’initialiser le solde à zéro.

3. Première option. L’ensemble des comptes bancaires sera stocké dans un tableau d’objets de type Account(le compte, informatiquement parlant). Ce tableau sera le seul champ de la classeBankLocalServer, nommé allAccounts.

Deuxième option. L’ensemble des comptes bancaires est stocké dans une table de hachage (HashMap) réalisant l’associationnom du titulaire d’un compte – objet de type Account (le compte, informatiquement parlant). Cette table sera le seul champ de BankLocalServer, nommé allAccounts.

4. Prévoir les opérations suivantes comme méthodes de BankLocalServer (ce sont les opérations réalisées au sein même de la banque) :

– Ouverture de compte par la méthode

public void openAccount(String name, String password).

Le nom du titulaire name est donné en premier argument et son mot de passe passworden deuxième argument. La méthode réalise la vérification d’un compte ayant déja le même nom de titulaire, auquel cas elle affiche un message d’erreur et sort du programme. Dans le cas contraire, elle crée le compte et l’enregistre dans la table allAccounts.

– Une méthode utilitaire de vérification d’existence de compte et de mot de passe valide :

public Account verify(String name, String password).

1

(2)

2 Gestion locale de banque simple en Java

Si le compte de nom name n’existe pas (dans account) ou si le mot de passe passwordest différent de celui trouvé dansallAccountscomme correspondant àname, la méthode affiche un message d’erreur et sort du programme. Sinon, elle renvoie une référence sur l’objet de type Accountcorrespondant.

– Fermeture de compte par la méthode

public int closeAccount(String name, String password).

Elle effectue une vérification à l’aide deverify(...), retire le compte deallAccounts, met le solde à zéro et renvoie le montant disponible.

– Dépot d’argent sur un compte par la méthode

public void deposit(String name, String password, int money).

Elle effectue une vérification à l’aide de verify(...)et incrémente le solde du montant moneydéposé.

– Retrait d’argent sur un compte par la méthode

public int withdraw(String name, String password, int amount).

Elle effectue une vérification à l’aide de verify(...), vérifie que le solde est suffisant pour le montant du retrait (dans le cas contraire, elle affiche un message et ne fait rien de plus), décrémente le solde du montant amount et renvoie le montant retiré.

– Obtention du solde d’un compte par la méthode

public int getBalance(String name, String password).

Elle effectue une vérification à l’aide de verify(...), puis renvoie le solde du compte.

5. La méthode main(...) se trouvera dans BankLocal et proposera à l’utilisa- teur un menu textuel afin qu’il puisse gérer son compte. Les entrées seront effec- tuées avec desreadLine()(sur une référence crée parBufferedReader stdin

= new BufferedReader(new InputStreamReader(System.in)) ;) et les sorties seront effectuées avec desSystem.out.println(...)

Exercice 2 Gestion simple de banque : compléments

Diverses améliorations sont proposées dans cet exercice, utilisant des structures de données différentes, effectuant une gestion d’erreurs par exceptions, gérant des accès syn- chronisés.

1. Créer une exceptionBankingExceptionqui hérite d’Exceptionet qui ne définit qu’un seul constructeurBankingException(String)et aucune autre méthode.

Ce constructeur appelle le constructeur de la classe mère. Cette exception servira pour des cas tels que “Solde insuffisant” ou “Mot de passe invalide”.

2. Modifier les méthodes du serveurBankLocalServer comme suit : – Ouverture de compte par la méthode

public void openAccount(String name, String password) throws BankingException.

La méthode réalise la vérification d’un compte ayant déja le même nom de titulaire, auquel cas elle lève une exception de type BankingException et dans le cas contraire crée le compte et l’enregistre dans la table allAccounts.

– Une méthode utilitaire de vérification d’existence de compte et de mot de passe valide :

(3)

Exercice 2 – Gestion simple de banque : compléments 3

public Account verify(String name, String password) throws BankingException.

Si le compte de nom name n’existe pas (dans account) ou si le mot de passe passwordest différent de celui trouvé dansallAccountscomme correspondant à name, la méthode génère une BankingException. Sinon, elle renvoie une référence sur l’objet de type Accountcorrespondant.

– Fermeture de compte par la méthode

public int closeAccount(String name, String password) throws BankingException.

Elle effectue une vérification à l’aide deverify(...), retire le compte de la table de hachage allAccounts, met le solde à zéro et renvoie le montant disponible.

– Dépot d’argent sur un compte par la méthode

public void deposit(String name, String password, int money) throws BankingException.

Elle effectue une vérification à l’aide de verify(...)et incrémente le solde du montant moneydéposé.

– Retrait d’argent sur un compte par la méthode

public int withdraw(String name, String password, int amount) throws BankingException.

Elle effectue une vérification à l’aide de verify(...), vérifie que le solde est suffisant pour le montant du retrait (dans le cas contraire, elle genère une excep- tion de type BankingException), décrémente le solde du montantamount et renvoie le montant retiré.

– Obtention du solde d’un compte par la méthode

public int getBalance(String name, String password) throws BankingException.

Elle effectue une vérification à l’aide de verify(...), puis renvoie le solde du compte.

3. Gestion des synchronisations.

Quelles méthodes doivent être synchronisées et dans lesquelles peut-on se contenter de ne synchroniser qu’un bloc afin d’assurer l’accès en exclusion mutuelle à un objet ? Modifier le code de façon à obtenir des accès synchronisés.

4. Question subsidiaire : gestion des transactions.

Effectuer un historique des transactions à l’aide d’un nouveau champ de Account, de type ArrayList, nommé transactions. Mettre à jour le constructeur de Account ainsi que les méthodes deposit(...)et withdraw(...). Créer une méthode public ArrayList getTransactionHistory(String name, String password) throws BankingExceptionqui effectue une vérification à l’aide deverify(...), puis renvoie une référence sur le vecteur des transactions.

Références

Documents relatifs

Après réflexion, la direction de l’objet lumineux ne correspondait pas avec la position de Venus, l’intensité était plus forte que celle de Venus en pleine nuit (alors que

Vous avez été témoin direct, sur le territoire français, d’un phénomène aérospatial qui vous a intrigué, et vous souhaitez confier cette observation au GEIPAN pour analyse..

[r]

Vous avez été témoin direct, sur le territoire français, d’un phénomène aérospatial qui vous a intrigué, et vous souhaitez confier cette observation au GEIPAN pour analyse.. Nous

Nous vous proposons, dans un premier temps, de vous rendre sur notre site Internet www.geipan.fr, La consultation du guide d'identification des PANs

Nous vous proposons, dans un premier temps, de vous rendre sur notre site Internet www.geipan.fr, La consultation du guide d'identification des PANs vous permettra peut-être de

d- désigne le degré entrant d'un sommet (nombre d'arcs qui arrivent à un sommet) et d+ le degré sortant d'un sommet (nombre d'arcs qui partent d'un sommet).. Nous avons

Mais quand ça ne bougeait pas, quand ça grossissait puis devenait tout petit et finissait pas disparaître comme ça, et aussi par rapport aux comparaisons avec les avions et