Telechargé par abdelkabirelhamoussi

exam java

publicité
Ecole Nationale des Sciences Appliquées-Khouribga
Le 29 Mars 2022
Partiel JAVA
Durée : 3 h heures
Créer un Répertoire Examen-Nom. Créer un projet par Problème
Problème 1 : 14 Points
Le but de ce problème est de réaliser un logiciel de gestion des comptes en respectant les
règles suivantes :
Durée : 2heures
1- L’ajout de nouveaux attributs est interdit
2- L’ajout de nouveaux méthodes doit respecter les normes de POO(
Encapsulation,…) : private ou protected
3- Le code des méthodes ne doit pas dépasser 10 lignes pour une meilleur
lisibilité
-Veuillez implémenter les classes attributs et méthodes suivants :
Classe
Méthode ou attribut
énumération
Type_Operation
Debit(1, "Débit"),
Credit(2,"Crédit")
Integer code ;
Strring nom
public
Type_Operation(Integer
code, String nom)
public Integer getCode(),
public void setCode(Integer
code)
public String getNom()
void setNom(String nom)
Description
Cette énumération
représente le type
d'opération, une
opération est un débit
si le montant est
strictement positif et un
crédit si le montant est
strictement négative.
classe Opération
String Date , float
montant,
Type_Operation type
La date de l'opération sous
la forme jj/mm/aa
(05/12/21)
deux constructeurs avec
et sans paramètres,
getteurs et setteurs pour
date, Montant et type
public String getJour(),
public String getMois(),
Chaque méthode retourne
jour ou mois ou année de
la date de l’opération
public String getAnnée()
abstract classe Compte
Cette classe représente un
compte bancaire
String date
Date d'ouverture du
compte
ArrayList<Client>
Signataires
Représente les
propriétaires du compte
Integer numero
Float solde
HashMap<String
,Operation>
listeOperations
public Compte(Integer
numero, Float solde)
public Integer
getNumero()
public Float getSolde()
protected void
setSolde(Float solde)
Représente la liste des
opérations effectués sur le
compte, la clé est la date
de l'opération
la date d’ouverture est
la date du système
Public
ArrayList<Client>
getSignataires()
Retourne la liste des
signataires
protected void
addClient(Client client)
Ajoute un client à la liste
des clients
protected void
supprimeClient(Integer
id)
Supprime un client par son
id
public boolean
addOperation(Operation
operation)
Ajoute une opération à la
liste des opérations en
vérifiant que le montant est
différent de zéro
public
ArrayList<Operation>
getOperations()
Retourne la liste des
opérations
public boolean
equals(Object obj)
Deux comptes sont égaux
si ils ont le même numéro
public abstract boolean
addSignataires(Client
client);
Ajoute un signataire au
listes des propriétaires du
compte
public abstract boolean
removeSignataire(Client
client)
Supprime un client
class Client
représente la classe client
d'une banque
ArrayList<Compte>
mesComptes
La liste de ces comptes
String nom
Nom du client
String prenom
Prenom du client
Integer age
Age du client
String CIN
Integer id
Identifiant du client
constructeurs sans
paramètres
public Client(Integer id,
String nom, String
prenom, String cIN)
getteurs et setteurs pour
Nom, prenom, age et
CIN et id
class CompteCourant
extends Compte
public void
addCompte(Compte
compte)
Ajoute un compte
Public
removeCompte(Compte
compte)
Suprrime un compte
public boolean
equals(Object obj)
Deux clients sont égaux si
ils ont même CIN, âge,
prénom et nom
Float soldeMax
Le solde Max est une
valeur négative que le
compte ne doit jamais
dépasser
public
CompteCourant(Integer
numero, Float solde,
Float soldeMax)
public boolean
addSignataires(Client client)
Le nombre de signataire
ne doit jamais dépasser 4
N’oubliez de mettre à jour
le client
public boolean
removeSignataires(Client
client)
Si le compte à un seule
signataire, il faut que le
solde du compte est égale à
zéro pour enlever le
signataire
N’oubliez de mettre à jour
le client
public boolean
addOperation(Operation
operation)
Ajoute une opération en
vérifiant que les
contraintes suivantes :
1- le montat de l’opération
est # 0
2- si l’opération est un
crédit il ne faut pas
dépasser solde Max
3-faire la mise à jour du
solde
class CompteEpargne
extends Compte
public void
afficheReleveCourant(String
mois, String anne)
Une méthode qui affiche le
relevé d'un mois pour une
année par ordre
décroissant des jours
public void
afficheDébitCourant(String
mois, String année)
Une méthode qui affiche la
somme des opérations de
Débit d'un mois pour une
année
public void
afficheCréditCourant(String
mois, String année)
Une méthode qui affiche la
somme des opérations de
Crédit d'un mois pour une
année
Double interet
public
CompteEpargne(Integer
numero, Float solde, Double
interet)
public boolean
addSignataires(Client client)
Cette méthode doit
respecter les règles métier
suivantes :
1-Verifier que le client
n'est pas déjà signataire
2-Les signataires doivent
avoir le même nom de
famille
3-Le nombre de signataire
ne doit pas dépasser 3
N’oubliez de mettre à jour
le client
public boolean
removeSignataires(Integer
id)
Cette méthode supprime
un signataire
public boolean
addOperation(Operation
operation)
Cette méthode ajoute une
opération en respectant les
règles suivantes :
N’oubliez de mettre à jour
le client
1- Pour un crédit : la
somme ne doit jamais
dépasser le solde
2- Pour un débit :
l'opération est permise
seulement en anniversaire
du compte
3- La méthode doit
recalculer le solde
class Banque
Cette classe représente une
banque
HashMap<Integer, Client>
mesClients
Liste des clients, la clé est
le numéro du client
String nom
Public void Banque(String
nom)
Constructeur
Boolean addClient (String
nom,String prenom, String
CIN )
La méthode ajoute un
client en respectant les
règles suivantes :
1-Le client ne doit pas
exister
2-Le numéro du client est
généré automatiquement (
dernier numéro +1)
-
Problème 2 : Programmation générique 8 Points
1-Créer un interface générique
interface CritereSelection<E> {
public boolean ok(E e);
}
2- Créer une classe générique Filtre<E>, elle possédé un attribut :
ArrayList< CritereSelection >liste des Critère Sélection et quatre méthodes dont la
signature est :
a-public abstract void selection(Collection<Object> list, Collection<Object> resultat);
b- public static<E> ArrayList<E> selection(Collection<E> list, CritereSelection<E>
c) : filtre la liste par le CritereSelection c.
c- public void addCritere(CritereSelection c) :Ajoute une critère de sélection à la liste
des CritèreSelection
d- public boolean removeCritere(CritereSelection c) : Supprime une critère de
sélection à la liste des Critère Sélection
3-Créer une classe générique FiltreMoyen<E> qui hérite de la classe Filtre.
a- La méthode selection sélectionne les objets qui vérifient au minimum la moitié des
critères ( attributs de la classe) au minimum.
4-Créer trois classes qui héritent de la classe CritereSelection :
a-EstMltiple3<Integer> : vérifie si un nombre est multiple de 3
b-EstPremier<Integer> : vérifie si un nombre est premier
c-EstPalindrome<String> : vérifie si un String est palindrome
5-Créer une classe Test qui exécute les étapes suivantes :
a-Créer une instance f de la classe FiltreMoyen avec type Integer
b-Ajouter deux instances EstMultiple3 et EstPremier dans les critères de l’instance f
c-Créer une liste de 5 chiffres et exécuter la méthode selection sur la liste
d-Afficher le résultat
Téléchargement