[Go to site: main page, start]

100% ont trouvé ce document utile (1 vote)
208 vues3 pages

Gestion des Comptes Bancaires en Java

Ce document présente un exercice sur les collections en Java. Il s'agit de représenter des comptes bancaires et leurs titulaires à l'aide de collections. Le document donne des indications pour compléter le code fourni en utilisant des ArrayList et HashSet, et en ajoutant des méthodes de création de compte, d'affichage et d'opérations sur les comptes.

Transféré par

kasraouizied
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
100% ont trouvé ce document utile (1 vote)
208 vues3 pages

Gestion des Comptes Bancaires en Java

Ce document présente un exercice sur les collections en Java. Il s'agit de représenter des comptes bancaires et leurs titulaires à l'aide de collections. Le document donne des indications pour compléter le code fourni en utilisant des ArrayList et HashSet, et en ajoutant des méthodes de création de compte, d'affichage et d'opérations sur les comptes.

Transféré par

kasraouizied
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

POO Avancée

TD POO Avancée : Les


Collections

EXERCICE 1 :

On veut représenter des comptes bancaires et les personnes titulaires de ces comptes. Un
titulaire peut avoir plusieurs comptes.

Seule la banque peut créer des nouveaux comptes. Quand elle crée un nouveau compte, elle
l’ajoute à la liste des comptes de chacun des titulaires de ce compte et elle l’ajoute aussi à sa
propre liste de comptes. De même, chaque nouveau compte créé se voit attribuer par la banque
un nouveau numéro, exclusif pour ce compte. Pour réaliser la création de comptes, il faut une
méthode dans Banque qui crée un compte avec en paramètre le titulaires et le numéro du compte.
Il peut également être utile d’écrire une méthode permettant d’ajouter un nouveau compte chez
un titulaire.

Indication : Le code suivant donne une solution qu’il vous faut adapter pour utiliser des collections et compléter par
des nouvelles méthodes. Elle possède trois classes principales: Compte, Banque, et Titulaire.

class Banque{
String nom;
Compte Comptes[];

Banque(String n){
Comptes= new Compte[50] ;
nom = n;
}}

class Titulaire{
String nom;
Compte MesComptes[] ;
Titulaire(String n){
nom = n;
MesComptes= new Compte[10] ;
}
}
class Compte{
int numero;
double solde;

void retrait(double m) {
solde = solde - m;
}
void depot(double m){
solde = solde + m;
}}

1
POO Avancée

Question 1: adapter/compléter le code fourni

1. Remplacez les utilisations de Tableau de Compte par celle d’un ArrayList(ListCompte)


pour stocker les comptes d’une banque, et par celle d’un HashSet (SetCompte) pour
stocker les comptes d’un Titulaire.
2. Faites les modifications nécessaires pour les deux classes Banque et Titulaire
3. Ajoutez les méthodes suivantes pour les deux classes :
- Pour la classe Banque :
 Méthode creerCompte qui prend en paramètre le titulaire du compte et le numéro du
compte.
 Méthode Affiche qui fait l’affichage de tous les comptes de la banque

- Pour la classe Titulaire :

 L’ajout d’un compte chez un titulaire,


 L’affichage de tous les comptes d’un titulaire.
 Ajoutez les méthodes nécessaires pour permettre à un titulaire d’effectuer des
opérations de dépôt et de retrait sur un de ses comptes à partir de son numéro
Question 2

a- On désire faire le tri des comptes de la banque dans l’ordre croissant de leur solde. Pour
cela !
 Implémenter l’interface Comparable
 Ecrire une méthode triercompte() qui fait appel à la méthode sort de l’interface
Collection
b- un titulaire voudrait savoir le compte ayant le solde le plus grand
 créer une nouvelle classe SoldeComparator qui implémente l’interface Comparator
 Écrire une fonction permettant de retourner le numéro de compte ayant le maximum
de solde

EXERCICE 2 :

Le code ci-dessous ne compile pas à cause de deux instructions illégales.


1- Précisez ces deux instructions et dites pourquoi génèrent-elles ces erreurs
2- Remplacez ces deux instructions par les instructions adéquates

public class TestHashMap {

public static void main(String[] args) {

Map<String, Integer> vehicules = new HashMap<String, Integer>();


[Link]("BMW", 5);
[Link]("Mercedes", 3);
[Link]("Audi", 4);
[Link]("Ford", 6);

[Link]("total des vehicules est "+ [Link]());

2
POO Avancée

//on veut parcourir et afficher les cles de la hashMap

ArrayList Cles = [Link]();


for( Object cle :Cles)
[Link](cle);

//on veut parcourir et afficher les valeurs de la hashMap

Set valeurs = (Set) [Link]() ;


for ( Object val : valeurs )
[Link]( " la valeur est : " +val) ;

//on fait la recherche de la valeur de la clé "Audi"

String searchKey = "Audi";


if([Link](searchKey))
[Link]("le total " + [Link](searchKey) +" "+ searchKey + "
voitures!\n");

//effacer tous les valeurs de la hashMap

[Link]();
[Link]("apres l'operation clear , size: " + [Link]());
}
}

Sachant que l’affichage sera de cette forme la

total des vehicules est 4


Audi
Ford
BMW
Mercedes
la valeur est : 4
la valeur est : 6
la valeur est : 5
la valeur est : 3
le total 4 Audi voitures!

apres l'operation clear , size: 0

Common questions

Alimenté par l’IA

Using HashSet over arrays for managing accounts provides benefits of ensuring uniqueness inherently without additional checks and reducing the time complexity of lookups, insertions, and deletions to constant time. These advantages are crucial for scalability and performance, especially when dealing with large numbers of accounts and operations, which is common in banking applications .

To enhance readability and efficiency, refactor the code to use more descriptive method names and variables, apply consistent naming conventions, and introduce encapsulation by making class fields private and providing getters and setters. Additionally, employ design patterns such as Factory for account creation and Strategy for different operations like deposits and withdrawals to modularize and streamline the code structure .

Develop a method within the Titulaire class that iterates over the HashSet of Compte objects associated with an account holder. For each Compte, retrieve and display relevant details like account number and balance in a readable format. The iteration can be organized using a simple for-each loop over the set, enhancing the interface with clear output formatting, such as tabular form or structured JSON, for easy reading .

Incorporate methods within the Titulaire class that allow account holders to perform operations such as deposits and withdrawals by account number. Modify the existing deposit and withdrawal methods in the Compte class to accept an account number as a parameter, searching for the account using the data structure's natural lookup capabilities, like HashSet's constant-time performance for checking existence, before performing any operations .

The illegal instruction is 'ArrayList Cles = vehicules.keySet();' because vehicules.keySet() returns a Set, not a List, leading to a type mismatch. Correct it using 'Set<String> Cles = vehicules.keySet();'. Similarly, casting vehicules.values() to a Set results in an error since it returns a Collection, not a Set. Correct it using 'Collection<Integer> valeurs = vehicules.values();' .

Implementing an ArrayList for bank-wide accounts allows for flexible resizing and efficient iteration. Meanwhile, a HashSet for individual account holders guarantees uniqueness, provides efficient checking for account existence, and performs fundamental operations in constant time. The combination improves both scalability and performance in managing dynamic account data .

To sort the bank accounts by their balance in ascending order, first implement the Comparable interface in the Compte class. Override the compareTo method to compare the solde attribute of each Compte object. Then, in the Banque class, create a method called triercompte(), which uses Collections.sort() to order the accounts in the ArrayList based on their balances .

In the class Banque, replace the current array implementation for storing accounts with an ArrayList. This allows dynamic resizing of the account collection. Similarly, for the class Titulaire, replace the array implementation with a HashSet. This alteration helps ensure that each account is unique and allows for constant-time performance for basic operations like adding, removing, and checking for accounts. You will need to adapt the existing methods to accommodate these data structures, utilizing methods such as add() for ArrayList and add() for HashSet in their respective contexts .

The current approach to iterate over the HashMap keys and values needs to be corrected. Convert the key set to an ArrayList using the appropriate constructor and replace the line 'ArrayList Cles = vehicules.keySet();' with 'Set<String> Cles = vehicules.keySet();'. For displaying values, cast the collection returned by values() directly to a Collection, i.e., change 'Set valeurs = (Set) vehicules.values();' to 'Collection<Integer> valeurs = vehicules.values();' .

Create a SoldeComparator class that implements the Comparator interface, specifically for ordering Compte objects by their solde attribute. In this comparator, override the compare method to compare balances, reversing the usual order to facilitate finding the highest value. Then, in the Titulaire class, use the Collections.max() method along with the SoldeComparator to determine and retrieve the account with the highest balance .

Vous aimerez peut-être aussi