0% ont trouvé ce document utile (0 vote)
110 vues13 pages

Java - TD1

Transféré par

raniafahd2001
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
0% ont trouvé ce document utile (0 vote)
110 vues13 pages

Java - TD1

Transféré par

raniafahd2001
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

ENSA de Kenitra

Module : Programmation Java


2022/2023
Série 1 : Basic/Classe/Objet & UML/Héritage/Classes Abstraites/Exception

Exercice 1 : Constructeur/Getter&Setter/ToString

1. Définir une classe Voiture avec les attributs suivants : Id, Marque, Vitesse, Puissance.
2. Définir un constructeur permettant d’initialiser les attributs d'un objet voiture par des valeurs passées
en paramètre. Sachant que Id doit être auto-incrément.
3. Définir les accesseurs aux différents attributs de la classe.
4. Définir la méthode toString ( ) permettant d’afficher les informations d'une voiture.
5. Écrire un programme testant la classe Voiture.

Exercice 2 : UML-Constructeur/Getter&Setter/ToString

Un site de vente par correspondance permet à des clients (consommateurs) de


commander des produits à un magasin.

Le consommateur peut :

Faire une commande


Accéder au catalogue (seulement s’il ne sait pas quoi commander)
Suivre sa commande
Créer un compte utilisateur (entrer un mot de passe et répondre à une
question secrète)
Le magasin peut :

Suivre toutes les commandes


Envoyer les commandes
Créer des comptes utilisateurs
Valider les comptes utilisateurs

Le magasinier stock des produits dans le magasin

Le client effectue une commande des produits du magasin

Un produit est définit par une référence, un libellé, quantité et prix

Partie 1 : Conception :

1- Lister les acteurs avec leurs cas d’utilisation


2- Lister les classes, avec leurs attributs et méthodes, puis les associations entre classe
3- Proposer un diagramme des cas d’utilisation
4- Proposer un digramme de classe
5- Proposer un diagramme de séquence

Partie 2 : Implémentation

1. Implémenter les différents classes avec :


 Constructeur par défaut,
 Constructeur avec argument
 Constructeur par Copie
2. Implémenter les méthodes les Getter/Setter pour chaque classe
3. Implémenter les méthodes toString() et Affiche() pour chaque classe
ENSA de Kenitra
Module : Programmation Java
2022/2023
Série 1 : Basic/Classe/Objet & UML/Héritage/Classes Abstraites/Exception

4. Implémenter une classe de test pour tester votre application selon le diagramme
de séquence (prévoir le test de l’instanciation des objets selon les différents
constructeurs)

Exercice 3 : Expression Régulière


Ecrire un programme java avec les RegEx :

 Pour vérifier si une chaîne ne contient qu'un certain ensemble de caractères


(dans ce cas a-z, A-Z et 0-9).
 Pour vérifier si une chaîne contenant un p suivi de zéro ou de plusieurs q.
 Pour trouver des séquences de lettres minuscules jointes par un trait de
soulignement.
 Pour trouver les séquences d'une lettre majuscule suivie de lettres minuscules.
 Pour vérifier si une chaîne qui a un 'p' suivi de n'importe quoi, se terminant par
'q'.
 Pour vérifier qu'un mot contient le caractère 'g' dans une chaîne donnée.
 Pour vérifier un mot contenant 'g', pas au début ou à la fin du mot.
 Pour vérifier une chaîne qui ne contient que des lettres majuscules et
minuscules, des chiffres et des traits de soulignement.
 Pour vérifier un email
 Pour vérifier une date au format anglais puis français
 Pour vérifier si un mot de passe est correcte (contient 8 caractères minimum,
des lettres & des chiffres et un caractère spéciale)
 Pour vérifier si un mot est uniquement numérique (cas des entiers, cas des
réels)

Exercice 4 : Chaine de caractère, Date, fichier et expression régulière (Competition de


codage)
1. Un administrateur réseau souhaite disposer d’une application qui génère un log sous
forme de fichier texte pour le suivie des connexions et déconnexion des utilisateurs
a. Développer une classe java qui permet d’afficher un menu avec les choix
(Connexion, Déconnexion) et dès que l’utilisateur saisie un choix, l’application
affiche un message : Connexion réussie ou Déconnexion réussie
b. Générer un fichier log.txt pour tracer la date, heure et l’événement
(connexion/déconnexion)
Partie 1 : Connexion+Deconnexion + Fichier Log
Partie 2 : Partie 1 + Création de compte
Partie 3 : Partie 2 + Fichier user.txt
2. L’entreprise « Tesla » souhaite disposer d’une application Java, qui permet de saisir
les informations d’un client (Nom, prénom, date de naissance, adresse, ville), ensuite
ENSA de Kenitra
Module : Programmation Java
2022/2023
Série 1 : Basic/Classe/Objet & UML/Héritage/Classes Abstraites/Exception

de stocker ces informations dans un fichier texte (ou csv), puis de générer un fichier de
félicitation si la date de naissance coïncide avec la date du jour, en formatant le
message générer avec le nom de l’entreprise.
3. Améliorer le code source précédent en intégrant les expressions régulières pour
contrôler la saisie selon les règles :
Le nom et prénom, adresse et ville devraient être des chaines de caractère
La date de naissance devrait être une date au format JJ/MM/AAAA
Partie 5

Exercice 5 : Héritage/Redéfinition/Interface (Compétition de codage)

Proposer le code Java de ce diagramme de classe

Exercice 6 : Héritage/Redéfinition

On veut écrire un programme pour simuler le comportement des élus. Un programmeur a écrit
la classe ci-dessous (avant de démissionner pour se présenter aux élections législatives).

class Personne

{ String nom, prenom;

int compteBancaire; // montant de son compte


ENSA de Kenitra
Module : Programmation Java
2022/2023
Série 1 : Basic/Classe/Objet & UML/Héritage/Classes Abstraites/Exception

Personne(String nom, String prenom){ this.nom = nom; this.prenom = prenom;


this.compteBancaire = 0; }

void addSous(int montant){ this.compteBancaire = this.compteBancaire+montant; }

En réutilisant cette classe Personne, écrivez une classe qui représente les élus, qui sont des
personnes avec un ensemble d'assistants (qui sont aussi des personnes bien sur). Un élu peut
embaucher un assistant ou le licencier. Un élu peut aussi distribuer à ses assistants une
dotation budgétaire : il répartit la somme qui lui est allouée de façon équitable entre ses
assistants en ajoutant des sous sur les comptes bancaires des assistants.

1. Écrivez une classe Elu qui représente les élus.

Dans la suite, on veut représenter différents types d'élus, mais qu'on veut pouvoir manipuler
comme des élus "normaux", c'est-à-dire qu'un objet de type Elu n'aura toujours que les trois
méthodes définies dans la classe Elu et permettant d'embaucher un assistant, de licencier un
assistant et de verser une dotation.

On veut représenter les élus mafieux, qui n'embauchent comme assistants que des membres de
leur famille (c'est-à-dire des personnes qui ont le même nom qu'eux, pour simplifier). Mais ils
répartissent la dotation budgétaire qui leur est allouée de façon équitable entre leurs assistants.

2. Écrivez une classe qui représente les élus mafieux.

On veut représenter les élus économes, qui répartissent la dotation budgétaire qui leur est
allouée de la façon suivante : chaque assistant reçoit au plus le SMIC (3000 DH brut) et s'il
reste des sous, ils ne sont pas dépensés.

3. Écrivez une classe qui représente les élus économes.

On veut représenter les élus escrocs, qui ont un compte en Suisse en plus de leur compte
bancaire normal, qui n'embauchent pas forcément que les membres de leur famille, et qui
répartissent la dotation budgétaire qui leur est allouée de la façon suivante : chaque assistant
reçoit au plus le SMIC (3000 DH brut) et s'il reste des sous, ils sont versés sur le compte en
Suisse de l'élu.

4. Écrivez une classe qui représente les élus escrocs.


ENSA de Kenitra
Module : Programmation Java
2022/2023
Série 1 : Basic/Classe/Objet & UML/Héritage/Classes Abstraites/Exception

Exercice 7 : Cahier de charge 1

On souhaite réaliser une application selon le cahier de charge ci-dessous :

1. "Cahier des charges"

Il s'agit de définir une classe JAVA permettant de modéliser des comptes bancaires. Cette classe
(Compte) doit permettre à une application de créer et utiliser autant de comptes bancaires que
nécessaires, chaque compte étant un objet, instance (ou exemplaire) de la classe Compte.

Un compte bancaire est identifié par un numéro de compte. Ce numéro de compte est un entier positif
permettant de désigner et distinguer sans ambiguïté possible chaque compte géré par l'établissement
bancaire. Chaque compte possède donc un numéro unique. Ce numéro est attribué par la banque à
l'ouverture du compte et ne peut être modifié par la suite. Dans un souci de simplicité (qui ne traduit
pas la réalité) on adoptera la politique suivante pour l'attribution des numéros de compte : les comptes
sont numérotés de 1 à n, n étant le nombre de comptes qui ont été créés. Lorsque un nouveau compte
est créé, le numéro qui lui est attribué est n+1.

Un compte est associé à une personne (civile ou morale) titulaire du compte, cette personne étant
décrite par son nom. Une fois le compte créé, le titulaire du compte ne peut plus être modifié.

La somme d'argent disponible sur un compte est exprimée en Dirham. Cette somme est désignée sous
le terme de solde du compte. Ce solde est un nombre décimal qui peut être positif, nul ou négatif.

Le solde d'un compte peut être éventuellement (et temporairement) être négatif. Dans ce cas, on dit
que le compte est à découvert. Le découvert d'un compte est nul si le solde du compte est positif ou
nul, il est égal à la valeur absolue du solde si ce dernier est négatif.

En aucun cas le solde d'un compte ne peut être inférieur à une valeur fixée pour ce compte. Cette
valeur est définie comme étant - (moins) le découvert maximal autorisé pour ce compte. Par exemple
pour un compte dont le découvert maximal autorisé est 2000 dh, le solde ne pourra pas être inférieur à
-2000 dh. Le découvert maximal autorisé peut varier d'un compte à un autre, il est fixé arbitrairement
par la banque à la création du compte et peut être ensuite révisé selon les modifications des revenus du
titulaire du compte.

Créditer un compte consiste à ajouter un montant positif au solde du compte.

Débiter un compte consiste à retirer un montant positif au solde du compte. Le solde résultant ne doit
en aucun cas être inférieur au découvert maximal autorisé pour ce compte.

Lors d'une opération de retrait, un compte ne peut être débité d'un montant supérieur à une valeur
désignée sous le terme de débit maximal autorisé. Comme le découvert maximal autorisé, le débit
maximal autorisé peut varier d'un compte à un autre et est fixé arbitrairement par la banque à la
création du compte. Il peut être ensuite révisé selon les modifications des revenus du titulaire du
compte.

Effectuer un virement consiste à débiter un compte au profit d'un autre compte qui sera crédité du
montant du débit.

Lors de la création d'un compte seul le nom du titulaire du compte est indispensable. En l'absence de
dépôt initial le solde est fixé à 0. Les valeurs par défaut pour le découvert maximal autorisé et le débit
ENSA de Kenitra
Module : Programmation Java
2022/2023
Série 1 : Basic/Classe/Objet & UML/Héritage/Classes Abstraites/Exception

maximal autorisé sont respectivement de 800 dh et 1000 dh. Il est éventuellement possible d'attribuer
d'autres valeurs à ces caractéristiques du compte lors de sa création.

Toutes les informations concernant un compte peuvent être consultées : numéro du compte, nom du
titulaire, montant du découvert maximal autorisé, montant du débit maximal autorisé, situation du
compte (est-il à découvert ?), montant du débit autorisé (fonction du solde courant et du débit maximal
autorisé).

Travail demandé

1. A partir du "cahier des charges" précédent élaborer une spécification d'une classe Java
modélisant un compte bancaire.

Il s'agira en analysant le texte ci-dessus de :

-définir les attributs (variables d'instance, variables de classe) de la classe Compte,


-d'identifier les méthodes publiques proposées par la classe Compte. Pour chaque méthode on
prendra soin, outre la définition de sa signature, de spécifier son comportement sous la forme
d'un commentaire documentant.
- de proposer un ou plusieurs constructeurs pour la classe Compte. Là aussi on complétera la
donnée de la signature de chaque constructeur avec un commentaire documentant détaillant
son utilisation.

- Lister les acteurs avec leurs cas d’utilisation

- Lister les classes, avec leurs attributs et méthodes, puis les associations entre classe

- Donner le diagramme de classe et le diagramme des cas d'utilisation

2. Réaliser une implémentation en langage Java de la classe précédemment spécifiée.

3. Ecrire un programme de test permettant de :

 Créer un compte c1, au nom de Driss Bendriss avec un solde initial de 1 000 dh
 Créer un compte c2, au nom de Maryam Bendriss avec un solde inital de 50 000 dh, un debit
maximal autorisé de 6000 dh et un découvert maximal autorisé de 5000 dh.
 D'afficher les caractéristiques des comptes c1 et c2 (c'est à dire les informations suivantes :
numéro du compte, nom du titulaire, découvert maximal autorisé, débit maximal autorisé,
solde du compte et si le compte est à découvert un message le signalant explicitement).
 Retirer 300 dh du compte c1.
 Retirer 600 dh du compte c2.
 Déposer 500 dh sur le compte c1.
 D'afficher les caractéristiques des comptes c1 et c2.
 Virer 1000 dh du compte c2 vers le compte c1.
 D'afficher les caractéristiques des comptes c1 et c2.

4. Nous souhaitons que le programme nous offre un menu pour permettre à l’Agent de banque de
choisir les opérations à effectuer, Modifier la classe de test pour effectuer ceci.
5. Suite à de multiple erreur de saisie des dossiers et opération, la banque souhait renforcer les
contrôles de saisie effectuée par l’Agent. Implémenter une solution à l’aide des Expressions
régulière pour contrôler la saisie.
ENSA de Kenitra
Module : Programmation Java
2022/2023
Série 1 : Basic/Classe/Objet & UML/Héritage/Classes Abstraites/Exception

6. Nous souhaitons ajouter la fonctionnalité de suivie des opérations OK et KO :


 Ajouter le journal de transaction, qui est un fichier dont on inscrit l’ensemble des
transactions effectuées, après validation (que les cas OK), avec date, numéro de
compte, titulaire du compte et la nature de la transaction (débit, crédit….)
 Ajouter le journal des évènements, qui est un fichier pour inscrire tous les opérations
demandé par le client mais qui n’ont pas abouti, en inscrivant le libellé adéquat.
7. Reprendre le code précédent, en y intégrant la gestion des exceptions sur l'ensemble des
méthodes susceptible de générer des erreurs, exemple :
 Impossible de saisir des montants négatifs
 Impossible d’effectuer un virement négatif
 Impossible d’ouvrir, trouver, écrire et lire les fichiers
8. La banque souhaite suivre les dossiers clients : Nombre total des clients, Nombre total des
opérations, Nombre total des opérations réussis, Nombre total des opérations échouées par
catégorie. Implémenter un fichier bilan pour suivre ces opérations.

EXERCICE 8 : Cahier de charge 2

Un concessionnaire des voitures de luxe, souhaite disposer d'un programme Java pour la
gestion de son atelier de maintenance des voitures.

Chaque voiture « Voiture » est définit par :

 Identifiant, entier (qui n'est pas propre à une voiture en particulier et il s'incrémente à
chaque fois)
 Marque, chaine de caractère
 Matricule, entier
 Date de production, chaine de caractère
 Prix unitaire HT, décimale

Pour réaliser une opération de maintenance, un technicien doit d'abord accueillir le client, et
saisir ses informations :
 Identifiant, entier (qui n'est pas propre à un client en particulier et il s'incrémente à
chaque fois)
 Code client, entier
 Nom et prénom, chaine de caractère
 Date de naissance, chaine de caractère
 Genre, caractère

Ensuite, l'agent de maintenance doit saisir les informations sur l'opération de maintenance :
 Code client
 Matricule de sa voiture
 Date d'achat de la voiture
 Date dernière visite à l'atelier
ENSA de Kenitra
Module : Programmation Java
2022/2023
Série 1 : Basic/Classe/Objet & UML/Héritage/Classes Abstraites/Exception

 Nature de l'opération de maintenance (Vidange, Visite, Echange de piece)


 Montant TTC de l'opération de maintenance, décimale (le taux tva appliqué est 20%)
 Mode de paiement, chaine de caractère (le modalité possible : CASH, CARTE,
CHEQUE)
 Date de sortie de l'atelier, chaine de caractère
 Nom de l'agent de maintenance
 Code de l'agent de maintenance

Cette application, va être utiliser aussi par le directeur de l'agence pour consulter le tableau de
bord des ventes.

Partie Conception :

1- Lister les acteurs avec leurs cas d’utilisation


2- Lister les classes, avec leurs attributs et méthodes, puis les associations entre classe
3- Proposer un diagramme des cas d'utilisation
4- Proposer un diagramme de classe modélisant cette application
5- Proposer un diagramme de séquence de cette application
Partie Implémentation :
Partie 1 :
 Ecrire les constructeurs des classes :
o sans argument
o avec argument
o de copie

 Ecrire les méthodes pour les classes prévues :

 « getter & setter », pour la lecture et l’écriture.


 « toString » pour convertir l’objet en une chaine de caractère
 « affiche », pour afficher les informations

3- Ecrire une classe de test pour tester votre application selon le diagramme de séquence

Partie 2 :
4- Pour permettre au directeur de l'agence de suivre les opérations de maintenance, améliorer
la classe "Maintenance", en ajoutant les méthodes ci-dessous :

 "MCheck", pour le calcule les montants des opérations par mois


 "QCheck", pour calculer la quantité des opérations par mois
 "Prime", pour calculer la prime à attribuer aux agents de maintenance en
fonction des opérations (le meilleur agent qui fait le maximum des opérations
par mois, perçoit une prime de 2000 DH en plus à son salaire)

6- Proposer un nouveau diagramme de séquence et Ecrire une classe de test main(),


pour tester ce programme selon le diagramme de séquence
ENSA de Kenitra
Module : Programmation Java
2022/2023
Série 1 : Basic/Classe/Objet & UML/Héritage/Classes Abstraites/Exception

Partie 3 :
7- Suite à une évolution de l’entreprise, ce concessionnaire devient spécialisé dans les
voitures de marque : PORSCHE, FIRARI, MERCEDES et MASERATI. Chaque
marque de voiture dispose de ses propres caractéristiques.
 Améliorer votre code en introduisant la notion d’héritage et Classe
abstraite
 Implémenter des Expressions régulières pour renforcer le contrôle sur
la saisie
 Les exceptions sur les méthodes susceptibles de générer une erreur
8- Tester votre nouvelle version
ENSA de Kenitra
Module : Programmation Java
2022/2023
Série 1 : Basic/Classe/Objet & UML/Héritage/Classes Abstraites/Exception

EXERCICE 9 : Cahier de charge 3

Une agence de voyage souhaite développer une application sous Java pour son service
commercial. Il a fait appel à un stagiaire élève ingénieur (vous) de la filière GI de l’ENSA de
Kenitra, pour cette mission.

L’élève ingénieur a effectué une visite chez le service commercial de l’agence de voyage pour
organiser une réunion les différents acteurs du service, ci-dessous le compte rendu de cette
rencontre :

COMPTE RENDU DE REUNION

Élève ingénieur (Vous) : Bonjour tout le monde, je vous remercie pour votre présence
aujourd’hui lors de cette réunion dont le but est d’identifier vos besoins concernant le
développement d’une application pour votre service

Chef de service (Mr. Mustapha) : Merci à vous, en effet on souhaite moi et mes
collaborateurs : Mme Fatima (Responsable prospection) et Mr. Marouane (responsable
qualité), disposé d’une application pour nous aider dans nos tâches au quotidien.

Vous :Espérant vous être utile. Est-ce que vous pouvez présenter votre service, vos tâches que
vous souhaitez intégrer dans cette future application.

Mr Mustapha : Oui avec plaisir, notre service s’occupe d’établir le premier contact avec le
client, la réalisation de la prestation et ensuite l’évaluation de la satisfaction. Je laisse Mme
Fatima vous expliquer ses tâches, ensuite Mr. Marouane présentera aussi ses tâches, surtout
ceux en relation avec l’application que vous allez développer.

Mme Fatima :Avec plaisir Mr Mustapha, en effet moi je m’occupe de la prospection des
nouveaux clients, en effectuant des actions de marketing pour rechercher des nouveaux clients
susceptible d’être intéressé par nos formules de voyage, pour cela j’aurai besoin que
l’application me permet de crée un client en renseignant une fiche client avec les informations
suivantes : Nom et prénom, Age, Genre, Formule de voyage, destination du voyage, numéro
CIN, date d’expiration du CIN, numéro de passeport (Alphanumérique de 8 caractères), date
d’expiration du passeport.Dès qu’un client est identifié et qu’il souhaite bénéficier de notre
prestation, je devrais saisir ces informations via cette application.

Vous : concernant les formules de voyage, pouvez-vous m’expliquer d’avantage.

Mme Fatima : Oui, en effet, avec Mr Mustapha on établit une liste des propositions des
formules, qui sont sous forme de package des voyages organisées qu’on établit les détails
avec nos partenaires, genre : les prestataires de transport, Hôtels/auberges, Restaurants… puis
nous publions nos offres avec les informations suivantes : Chaque formule que nous
proposons a une référence (numérique), une description (Texte), La ville de destination, date
ENSA de Kenitra
Module : Programmation Java
2022/2023
Série 1 : Basic/Classe/Objet & UML/Héritage/Classes Abstraites/Exception

d’aller et de retour, Prix TTC par personne. Donc l’application devrait nous permettre de
saisir ces informations

Vous : Merci maintenant c’est claire

Mr Mustapha : Mr Marouane, pouvez-vous éclairer notre stagiaire pour vos besoins.

Mr Marouane : Avec plaisir, en ce qui me concerne ma mission consiste au suivie de la


satisfaction de nos clients et de remonter toute retour ou remarque après chaque voyage. Donc
j’aurai besoin dans l’application, que je saisie pour chaque client son niveau de satisfaction
qu’on note de 1 (faible) à 5 (excellent), son retour (un message texte) pour décrire son
voyage.

Mr Mustapha : Voilà vous avez une idée sur nos besoins, pouvez-vous nous aider en créant
cette application pour nous.

Vous : Oui avec plaisir. Je vais entamer mon travail de suite en élaborant les conceptions
qu’il faut, avant d’entamer la phase de développement et test.

Questions :

Partie 1 : Conception

1- Lister les acteurs avec leurs cas d’utilisation


2- Lister les classes, avec leurs attributs et méthodes, puis les associations entre classe
3- Elaborer le diagramme de cas d’utilisation pour cette application
4- Elaborer le diagramme de classe pour cette application
5- Elaborer le diagramme de séquence

Partie 2 : Implémentation 1
6- Commencer par créer les classes suivantes : Client, Formule, Satisfaction, en
prévoyant les :
a. Constructeur par défaut
b. Constructeur avec argument
c. Constructeur en copie
d. Les getters/setters
e. toString
f. Affiche
7- Implémenter une classe de test avec la fonction main pour tester votre application
selon le diagramme de séquence
Partie 3 : Implémentation 2

8- Après la présentation de votre application, le responsable a apprécié les résultats et il a


demandé d’ajouter l’authentification pour votre application. Revenir sur votre code est
implémenté une classe interface « personne » (avec la méthode checklogin ()), qui va être
implémenter par : personnel avec les attributs : login, password et nom. La méthode
checklogin vérifie le login et password saisie si c’est correct (si c’est pas correcte un
message d’erreur s’affiche). Il faut prévoir un constructeur avec argument de la classe
personnel.
ENSA de Kenitra
Module : Programmation Java
2022/2023
Série 1 : Basic/Classe/Objet & UML/Héritage/Classes Abstraites/Exception

Tester votre application avec les noms des différents acteurs des services, des logins et
password de votre choix
6 - En utilisant le principe d'Exception, reprendre la question 5 pour proposer une nouvelle
implémentation de la classe personnel (sans la classe interface), pour permettre de générer une
exception dans le cas ou le login/password n'est pas correcte.
Tester votre application avec les noms des différents acteurs des services, des logins et
password de votre choix

Exercice 10 : Cahier de charge 4

Un cabinet de recrutement souhaite disposer d’une application pour la gestion et analyse des
annonces d’emploi. Un stagiaire GI de l’ENSAK (vous) intègre l’équipe RH pour travail sur
ce projet.

Le responsable recrutement demande que l’application prévoit :

- La saisie d’une liste prédéfinit dans le service, des compétences SoftSkills et


HardSkills dans un fichier texte (un fichier pour chacune des compétences), le
responsable vous explique que :
 la méthode actuelle est faite d’une manière manuelle dans un fichier et que le
problème majeur que chaque collaborateur du service RH c’est qu’il fait la
saisie de ces compétences d’une manière non conforme à une règle générale
(une fois on saisie Java ou java ou JAVA ou langage JAVA….)
 Lors de la saisie des compétences des fois il y a des erreurs de saisie
(Autonomi au lieu de Autonomie….), le responsable vous demande
d’implémenter un contrôle lors de la saisie.
- La saisie des offres d’emploi des entreprises clientes du cabinet de recrutement dans
un fichier appelé « Offre.txt », cette saisie se fait actuellement manuellement en
précisant le numéro de l’offre, le nom de l’entreprise, la date de l’offre, le softskills
demandé et le hardskill demandé. Le responsable vous explique qu’actuellement on
constate qu’il y a des erreurs de saisie de la date et des noms des compétences.
- Après la saisie de ces offres, au niveau du service RH, le responsable doit
actuellement effectuer une analyse manuelle pour compter le nombre des offres par
compétence, ce qui permet d’orienter la décision de recrutement et connaitre les
tendances du marché. Vu que le nombre des offres est important, le responsable perd
un temps important dans cette tâche. Il souhaite de l’aider dans l’automatisation de
cette dernière partie.

Questions :

Partie 1 : Conception 
ENSA de Kenitra
Module : Programmation Java
2022/2023
Série 1 : Basic/Classe/Objet & UML/Héritage/Classes Abstraites/Exception

 Réaliser les diagrammes de cas d’utilisation, le diagramme de classe et le


diagramme de séquence
 Liste les cas de test possibles dans un document appeler cas de test unitaire

Partie 2 : Implémentation 1

- Implémenter en Java l’ensemble de vos classes avec les


constructeurs, les getter et setter, toString et la méthode afficher
pour chacune des classes
- Implémenter le contrôle et la saisie des compétences et la
génération du fichier de référentiel des compétences (Hard.txt et
Soft.txt)
- Implémenter le contrôle et la saisie des offres d’emploi dans un
fichier Offre.txt
- Implémenter la classe de Test avec les différents cas de test
prévue dans cette partie qui concerne la génération des trois
fichiers

Partie 3 : Implémentation 2

- Implémenter la génération d’un fichier d’analyse des offres


pour compter le nombre des offres par compétence (analyse.txt
avec le format : Nom de la compétence |Type| Nombre d’offre
- Implémenter des méthodes pour calculer le minimum, la
maximum, la moyenne et la médiane des compétences
demandées.
- Refaire ces méthodes en utilisant des libraires particulières

Vous aimerez peut-être aussi