Ministère de l’Enseignement Supérieur Institut Supérieur d’Informatique
et de Recherche Scientifique
P.O.O (Java)
TP4
Exercice 1 (les collections) :
1. public static Iterator<String> reverse(List<String> list) {
2. Collections.reverse(list);
3. return list.iterator(); }
4. public static void main(String[] args) {
5. List list = new ArrayList();
6. list.add("1");
7. list.add("2");
8. list.add("3");
9. for (Object obj: reverse(list))
10. System.out.print(obj + ", ");
11. }
Exercice 2 (les collections) :
On souhaite gérer les notes d’un étudiant. Chaque étudiant sera défini par la classe
Etudiant et devra présenter les informations suivantes :
• un matricule;
• un nom;
• une liste de notes (de taille indéfinie).
Une classe Note permettra de contenir pour chaque cours, l'intitulé du cours ainsi que
la note obtenue. Les Notes de chaque étudiant seront stockées dans une ArrayList.
Une méthode addNote permettant d'ajouter une note à l'étudiant concerné.
Exercice 3 (les collections) :
Réaliser un programme Java qui définit une Map permettant la sauvegarde les villes
d’un gouvernorat. Exemple, les villes du gouvernorat Tunis sont : Bab Khadra, Bab
Souika, Bab Jdid, Bardo, etc. Le programme doit afficher la liste des villes de chaque
gouvernorat.
Voici la déclaration de la Map à utiliser : Map<String,String[]> m = new HashMap<>()
1/4 A.U. 2024/2025
Ministère de l’Enseignement Supérieur Institut Supérieur d’Informatique
et de Recherche Scientifique
Exercice 4 (les collections) :
Créer un programme java contenant les classes suivantes :
• Classe Employe qui contient les attributs suivants : nom, prenom, nationalite
(Tunisienne, Marocaine et Française), salaire, fonction (sans-fonction, chef de
service, sous-directeur et directeur).
• Classe Test qui contient la main et une liste de type ArrayList contenant des
objets de type Employe. Utiliser les méthodes forEach(), stream() et filter() de
la classe ArrayList afin d’afficher :
o Tous les employés
o Les employés ayant la nationalité Tunisienne
o Les employés ayant un salaire supérieur à 1000DT
o Les directeurs
Exercice 5 (les collections) :
1. import java.util.*;
2. public class WrappedString {
3. private String s;
4. public WrappedString(String s) { this.s = s; }
5. public static void main(String[] args) {
6. HashSet<Object> hs = new HashSet<Object>();
7. WrappedString ws1 = new WrappedString("aardvark");
8. WrappedString ws2 = new WrappedString("aardvark");
9. String s1 = new String("aardvark");
10. String s2 = new String("aardvark");
11. hs.add(ws1); hs.add(ws2); hs.add(s1); hs.add(s2);
12. System.out.println(hs.size());
}}
Exercice 6 (classe abstraite) :
Créer la classe abstraite « Personne» dans le package « mere » avec les attributs
suivants sans modificateur : int id (incrémentation automatique), String prenom, String
nom, String email et double salaire. De plus, la classe Personne contient la méthode
abstraite calculerSalaire().
1. Créer les classes «Developpeur» et «Manager» dans le package «fille ». Elles
héritent la classe Personne.
2/4 A.U. 2024/2025
Ministère de l’Enseignement Supérieur Institut Supérieur d’Informatique
et de Recherche Scientifique
2. Qu’est-ce que vous remarquez ? Comment régler le problème.
3. Redéfinir la méthode calculerSalaire() de la classe Personne sachant que :
• Le développeur aura une augmentation de 20% par rapport à son salaire
normal.
• Le manager aura une augmentation de 35% par rapport à son salaire normal.
4. Créer deux développeurs et deux managers.
5. Afficher les informations des objets crées sous la forme :
Le salaire du Manager Sassi Fatma est 2160.0 DT et son service est
Finance
Le salaire du Manager Tounsi Ahmed est 1620.0 DT et son service
est Comptabilité
Le salaire du Developpeur Abdi Mounir est : 2400.0 DT et sa
spécialité : JAVA
Le salaire du Developpeur Felhi Sana est : 3600.0 DT et sa
spécialité : Spring Boot
6. Afficher les informations des objets ayant un compte gmail.
7. Créer un objet de type Personne. Qu’est-ce que vous remarquez ?
Exercice 7 (classe abstraite ou interface) :
Ecrire les classes et/ou les interfaces nécessaires au fonctionnement du programme
suivant (en ne fournissant que les méthodes nécessaires à ce fonctionnement) :
package exercice3;
public class TestMetiers {
public static void main(String[] argv) {
Personne[] personnes = new Personne[3];
personnes[0] = new Menuisier("Samir", 8); // nom et année d’expérience
personnes[1] = new Plombier("Fathi", 15);
personnes[2] = new Menuisier("Nizar", 16);
System.out.println("La liste de toutes les personnes :");
for (Personne p : personnes) {
p.affiche();
}
System.out.println("\nLa liste des personnes ayant au moins 10 ans
d'éxpérience :");
for (Personne p : personnes) {
p.affichePlus10();
}
}
}
3/4 A.U. 2024/2025
Ministère de l’Enseignement Supérieur Institut Supérieur d’Informatique
et de Recherche Scientifique
Exemple d’exécution :
La liste de toutes les personnes :
Je suis Samir. Je travaille en tant que Menuisier
Je suis Fathi. Je travaille comme Plombier
Je suis Nizar. Je travaille en tant que Menuisier
La liste des personnes ayant au moins 10 ans d'expérience :
Je suis Fathi. J'ai 15 ans d'expérience.
Je suis Nizar. J'ai 16 ans d'expérience.
Remarque : l’objet de type « Personne » contient les données suivantes : le nom et le
nombre d’année d’expérience d’une personne.
Exercice 8 (classe abstraite ou interface) :
Ecrire les classes et/ou les interfaces nécessaires au fonctionnement du programme
suivant (en ne fournissant que les méthodes nécessaires à ce fonctionnement) :
package exercice3;
import java.text.DecimalFormat;
public class TestFormes {
public static void main(String[] argv) {
DecimalFormat df = new DecimalFormat(".0");
Forme[] figures = new Forme[3];
figures[0] = new Carre(6);
figures[1] = new Cercle(5);
figures[2] = new Carre(3);
for (int i = 0; i < figures.length; i++)
System.out.println("La surface de " +figures[i] + "
est égal à "
+ df.format(figures[i].calculerSurface()) + " cm2");
}
}
Exemple d’exécution :
La surface de Carré qui a la coté 6.0 cm est égal à 36,0 cm2
La surface de Cercle qui a le rayon 5.0 cm est égal à 78,5 cm2
La surface de Carré qui a la coté 3.0 cm est égal à 9,0 cm2
Remarque : l’objet de type Forme ne contient aucun attribut.
4/4 A.U. 2024/2025