4°IIR Prof.
Nisrine DAD
TP2 POO3 (Java et Java avancé)
Problème : Classes Personnes, Enseignants et Etudiants
Première partie: Classe Personne
Dans cette partie, on va créer deux classes, l’une représentant une personne, nommée Personne
et l’autre pour le programme de test (main), nommée GestionPersonne.
1. Créer une classe, nommée Personne contenant:
Un champ « nom » de type String
Un champ « age » de type int .
Un constructeur a deux paramètres « Personne (String nom, int age) » permettant
d’initialiser les deux champs de la classe.
Une méthode « void afficher() » permettant d’afficher le nom et l’âge au format décrit
ci-après. Ex, pour un objet de type Personne dont la variable d’instance nom vaut
"Amini" et la variable d’instance age vaut 22, la méthode afficher() affichera à l’écran
:Nom : Amini Age : 22 ans
2. Ajouter les accesseurs (les getters) et les modificateurs (les setters) pour les variables nom
et age.
3. Ajouter un champ à la classe Personne, de type tableau de réels « double[] comptes »
susceptibles de représenter les divers soldes des comptes en banque de la personne.
4. Ajouter un constructeur à 3 paramètres à la classe Personne « Personne (String nom, int
age, double [] comptes) » en appelant le constructeur a deux paramètres.
5. Adapter la méthode afficher() (qui doit afficher, outre le nom et l’âge de la personne les
différents éléments du tableau comptes.
6. Ajouter à la classe Personne, la méthode « void diviserParDeux() », permettant de modifier
le tableau comptes en divisant chaque élément par deux.
1
4°IIR Prof. Nisrine DAD
7. Ecrire un programme de test, nommée GestionPersonne, permettant de :
Créer deux objets de type Personne avec des comptes.
Appeler la méthode diviserParDeux() pour les objets crées.
Afficher les informations des objets crées.
8. Générez automatiquement avec votre IDE, la méthode redéfinie toString() dans la classe
Personne pour afficher les informations de la personne. Quelle méthode est appelée pour
afficher les informations sur les comptes ?
9. Afficher les informations des 2 objets déjà crées avant division des comptes par 2, en appelant
la méthode toString(), comme suit :
[Link](p1);
[Link]([Link]());
10. Modifiez la méthode toString() pour afficher seulement le nom et l’âge de la Personne.
Deuxième partie : Classes Etudiants et Enseignants (Héritage)
Dans cette partie, on va créer deux classes, l’une représentant un étudiant, nommée Etudiant
et l’autre représentant l’enseignant, nommée Enseignant.
Classe Etudiant
1. Créer une classe Etudiant héritant de Personne et ayant 4 champs :
Un champ « nombreCours » représente le nombre de cours suivis par l’étudiant.
Un tableau de String « String [] cours » représentant les modules.
Un tableau de double « double [] notes » représentant les notes obtenues à ces modules.
Avec la note du ième module étant à la position i dans le tableau des notes.
Un champ « MAX_COURS » fixé à 10, est une constante qui correspond au nombre
maximum de modules suivis.
2. Ajouter un constructeur à la classe Etudiant, qui prend en paramètre le nom et l’âge de
l’étudiant. Il initialise les deux tableaux (cours et notes) et la variable nombreCours à 0.
3. Définir la méthode « void ajouteCoursNote (String, double) », qui permet d’ajouter le nom
d’un module et la note obtenue dans ce module.
2
4°IIR Prof. Nisrine DAD
4. Définir la méthode « void afficheNotes() », qui affiche tous les modules suivis par l’étudiant
et les notes correspondantes.
5. Ajouter la méthode « double noteMoyenne() », qui retourne la note moyenne de l’étudiant.
6. Redéfinir la méthode « toString() » pour afficher la description d’un objet de type Etudiant
sous la forme : "Etudiant" suivi de son nom et de son âge.
Classe Enseignant
1. Créer, de même, une classe Enseignant héritant de Personne et ayant 3 champs :
Un champ « nombreCours » représente le nombre de cours assurés par l’enseignant.
Un tableau de String « String [] cours » représentant les différents modules assurés par
cet enseignant.
Un champ « MAX_COURS » fixé à 8, est une constante qui correspond au nombre
maximum de modules que peuvent assurés par l’enseignant.
2. Créer un constructeur appelant le constructeur de la classe mère, puis initialisant ses champs
propres (le tableau des cours et la variable nombreCours).
3. Ajouter la méthode « boolean ajouteCours(String) » permettant d’ajouter un cours à
l’attribut cours si ce cours n’est pas déjà présent dans la liste des modules enseignés. Si le cours
est déjà présent, on retournera la valeur booléen false, true sinon.
4. Redéfinir la méthode toString() pour afficher une description d’un objet de type Enseignant
sous la forme : "Enseignant" suivi de son nom et son âge, ainsi que la liste de tous les modules
enseignés.
5. Dans votre programme de test :
Créer une instance d’objet de type Etudiant, de nom égal à "Mrini" et d’âge égal à 22.
Ajouter 4 cours et leurs notes en appelant la méthode « ajouteCoursNote (String, double)
» de la classe Etudiant.
Afficher tous les modules suivis par l’étudiant et les notes correspondantes en appelant
la méthode afficheNotes();
Appeler la méthode « noteMoyenne() » et afficher la note moyenne de l’étudiant.
Afficher la description de l’étudiant en appelant la méthode toString().
Créer un Enseignant, de nom égal à "Salmi" et d’age égal à 45.
3
4°IIR Prof. Nisrine DAD
Ajouter 6 cours en appelant la méthode « ajouteCours (String) » de la classe Enseignant.
Parmi ces 6 cours, on trouve « Java Avancé » et « java avancé ».
Appeler la méthode toString() pour afficher la description de l’objet crée.
Différentiation par le type.
1. Créer un tableau de 5 éléments de type Personne dans votre programme de test et l’initialiser
avec 2 instances d’objet de type Enseignant et 3 instances de type Etudiant.
a. S’agit-il d’un upcasting ou un downcasting ?
b. Pour chaque élément dans le tableau, quelles sont les méthodes accessibles ?
2. Effectuer une boucle for sur les éléments du tableau; dans le corps de la boucle, effectuer un
appel à la méthode toString(), puis afficher s’il s’agit d’un Etudiant ou d’un Enseignant en se
servant de l’opérateur instanceof.