Académique Documents
Professionnel Documents
Culture Documents
Cette fiche vous permettra de monter en force dans la maîtrise de la philosophie objet et du
développement d’applications en Java. Néanmoins, sachez que c’est en pratiquant qu’on développe
ces aptitudes et cela quel que soit le domaine.
Les prérequis pour démarrer ces exercices pratiques sont les suivants :
- Avoir lu les slides de présentation pour chaque thème abordé.
- Disposé du JDK 1.8 minimum.
- Disposé de l’IDE Eclipse.
Page | 1
TP1- Les interfaces
Objectif : Ce TP vous permettra de concevoir une hiérarchie de classes utilisant la notion d'interface.
Il vous servira également de révision pour les notions d'héritage, de classes abstraites et de
polymorphisme.
1. Lancer Eclipse et créer un nouveau projet Java : Menu File – New – Java Project
2. Nommez-le « 001-interfaces-salaries »
3. Le directeur d'une entreprise de produits chimiques souhaite gérer les salaires et primes de ses
employés au moyen d'un programme Java.
Un employé est caractérisé par son nom, son prénom, son âge et sa date d'entrée en service
dans l'entreprise.
Implémenter une classe abstraite « Employe » dotée des attributs nécessaires, d'une méthode
abstraite « calculerSalaire () » (ce calcul dépendra en effet du type de l'employé) et d'une
méthode « getNom () » retournant une chaine de caractère obtenue en concaténant la chaine
de caractères "L'employé " avec le prénom et le nom.
Dotez également cette classe d'un constructeur prenant en paramètre l'ensemble des attributs
nécessaires.
Calcul du Salaire
Le calcul du salaire mensuel dépend du type de l'employé. On distingue les types d'employés
suivants :
- Ceux affectés à la Vente (Vendeur). Leur salaire mensuel est le 20 % du chiffre d'affaire
qu'ils réalisent mensuellement, plus 400 KF (Kilo francs avec 1 KF = 1 000 FCFA).
Implémenter une hiérarchie de classes pour les employés en respectant les conditions
suivantes :
- Les nouvelles classes doivent contenir les attributs qui leur sont spécifiques ainsi que le
codage approprié des méthodes « calculerSalaire () » et « getNom () », en changeant
Page | 2
le préfixe "L’employé " par la catégorie correspondante. Par exemple : "Le vendeur ",
"Le représentant ", etc …
- Chaque sous-classe est dotée d’un constructeur prenant en argument l'ensemble des
attributs nécessaires.
- Ne pas hésiter à introduire des classes intermédiaires pour éviter au maximum les
redondances d'attributs et de méthodes dans les sous-classes.
Employés à risque
Ajouter également à votre programme une interface pour les employés à risque permettant de
leur associer une prime mensuelle fixe de 100 KF.
Collections d’employés
Ajoutez une classe « Personnel » contenant une "collection" d'employés. Il s'agira d'une
collection polymorphique d'Employe - regardez le cours si vous ne voyez pas de quoi il s'agit.
a. nom (String)
b. anneeDeNaissance (int)
c. matricule (int)
Page | 3
Un Enseignant est une entité pouvant dispenser des cours ; cela peut être un personnel de
l’éducation nationale, mais pas nécessairement (un cours peut être donné par un intervenant
extérieur) ; comme précédemment, cela se définit par un ensemble de variables d’instance
privées avec leurs méthodes publiques d’accès :
a. nom (String)
b. anneeDeNaissance (int)
c. matiere (String)
Un Chercheur est une autre entité non nécessairement membre de l’éducation nationale,
consacrant une partie de son temps à des recherches ; encore une fois, des variables d’instance
privées et des méthodes publiques d’accès :
e. nom (String)
f. anneeDeNaissance (int)
g. domaineDeRecherches (String)
h. nombrePublications (int)
Les entités qui n’appartiennent pas au MENESR doivent disposer d’une autorisation qui peut
être soumise pour validation, qui peut être annulée (elle n’est donc plus valide). Une
« Autorisation » est une entité qui dispose des variables d’instances suivantes :
i. libellé (String)
7. Définir la hiérarchie de classes la mieux adapter au contexte puis les implémenter et les rendre
parfaitement opérationnelles.
En outre, nous supposerons que des méthodes sont disponibles par ailleurs, qui prennent pour
argument des objets spécifiques de trois classes du modèle :
8. Définir ces trois méthodes (dans une autre classe), et afficher simplement quelques attribut de
l'argument passé en paramètre.
Page | 4
9. Instanciez dans votre main quelques Personnel, Enseignant et Chercheur, et testez ces trois
méthodes. Faites des tests supplémentaires sur les autres classes instanciables que vous auriez
éventuellement créées.
10. Maintenant, on aimerait avoir des objets qui soient à la fois des Personnels, des Enseignants
et des Chercheurs et qu'on puisse passer à chacune des trois méthodes. Il va donc falloir
modifier votre code en utilisant la notion d’interfaces.
L'idée générale est de parler de comportements qui sont au nombre de 3 au moins et qui seront
des interfaces. Ce sont elles qui, dans l'ultime version du code seront appelées « IPersonnel »,
« IEnseignant » et « IChercheur ».
- Ces classes concrètes implémenteront 2 des trois interfaces et les méthodes static ci-
dessus doivent donc désormais, sans aucun changement, fonctionner avec deux
objets de types différents.
Page | 5
TP2- Les collections et la généricité
Objectif : Ce TP vous permettra de mettre en œuvre le concept de généricité en implémentant des
méthodes et des classes génériques.
1. Lancer Eclipse et créer un nouveau projet Java : Menu File – New – Java Project
package sn.esmt.formation.java;
5. Dans votre main, instanciez des objets de type « GenericArray » pour trier et afficher des
entiers, réels, Personne, Emission, Employe, etc … Le choix de l’ordre naturel de tri des
différents objets est laissé à votre appréciation.
Page | 6
Vous avez terminé ! Vous êtes prêt pour le TP suivant
Page | 7
TP3- Les exceptions
Objectif : Ce TP vous apprendra à gérer convenablement les erreurs en utilisant le mécanisme offert
par les « exceptions » en Java.
1. Lancer Eclipse et créer un nouveau projet Java : Menu File – New – Java Project
2. Nommez-le « 007-les-exceptions »
import java.util.Scanner;
class Clavier {
private Clavier() {}
return value;
}
System.out.print(message);
return lireInt();
}
}
4. Lancer l’exécution puis saisissez une information ne correspondant pas à un entier lorsque vous
y êtes invité. Une erreur se produit. Quel est le type de l’erreur (classe de l’exception) et quel
est le message associé ?
5. L’exécution du programme a été interrompue par cette erreur. Proposez une solution basée
sur la gestion des exceptions permettant d’éviter cette interruption.
6. Dans le programme qui suit, un message est affiché lorsque l’âge est inférieur à 18. On souhaite
déclencher une exception non contrôlée de type « IllegalArgumentException » dans ce cas
de figure. Modifier le code en conséquence.
Page | 8
public class Main {
public static void main (String[] args) {
int age = Clavier.lireInt("Entrez votre age svp : ") ;
validate (age) ;
System.out.println("Suite du programme ...") ;
}
7. Sans traiter l’exception, relancez le programme et entrez une information erronée (age < 18),
le programme crash comme le montre la figure ci-dessous.
8. Modifiez le code source de sorte à capturer l’erreur avant que le crash ne se produise puis
relancez le programme et entrez la même valeur pour l’âge. Cette fois, il n’y a pas de crash.
L’erreur est détectée, capturée et traitée convenablement. Le programme se poursuit
normalement comme le montre la figure ci-dessous en exemple.
Proposer une solution basée sur le « multi catch » pour effectuer la modification. Testez et
assurez-vous que tout se passe correctement.
11. Implémenter une classe « EntierNaturel » permettant de manipuler des entiers naturels
(positifs ou nuls uniquement). Pour l’instant, cette classe disposera simplement :
- d’un constructeur à un argument de type int qui générera une exception de type
« ConstructorException » (classe d’exception contrôlée personnalisée) lorsque la
valeur reçue ne convient pas.
Page | 9
- Cette classe devra disposer d’un attribut d’instance de type int qui recevra la valeur
fournie à tort au moment de la construction de l’objet et du message d’erreur
approprié.
13. Adapter la classe « EntierNaturel » pour qu’elle dispose des méthodes statiques permettant
de réaliser les opérations suivantes sur deux « EntierNaturel » : « addition »,
« soustraction » et « multiplication ».
15. Effectuer les différentes opérations sur des entiers naturels quelconques dans le main et
analyser les résultats. Essayer de déclencher les différents types d’exception pour vous
assurer que votre programme est conforme.
Page | 10