Vous êtes sur la page 1sur 2

ECOLE SUPERIEURE DES SCIENCES ANNEE UNIVERSITAIRE : 2022-2023

ET DE LA TECHNOLOGIE DE HAMMAM SOUSSE

PROGRAMMATION JAVA

TP N° 4
Héritage et Polymorphisme
AUDITOIRE : 2 EME année LI

Problème :

1) Créer la classe Personne qui contient deux attributs protégés (protected) :


a. un attribut nom de type String,
b. un attribut age de type int,
c. un constructeur avec deux paramètres,
d. une méthode afficher() qui affiche le nom et l’âge,
2) Développer une classe nommée PersonneMain, publique, ne comportant pas d’attribut et
comportant une unique méthode main(). Au sein de cette méthode, créer deux objets de
type Personne et appeler leurs méthodes afficher().
3) Au sein de la classe Personne, créer un constructeur sans arguments, de signature
Personne() appelant le constructeur avec paramètres de la question précédente au moyen
du mot clé this et initialisant respectivement les attributs nom et age à "SansNom" et 20.
4) Modifier la méthode main() de PersonneMain en créant 2 personnes, l’une à l’aide du
constructeur avec paramètres et l’autre avec le constructeur par défaut. Afficher les deux
objets créés.
5) Créer une classe Enseignant qui hérite de la classe Personne sachant qu’il impossible
d’étendre cette classe. Elle représente un élément terminal dans l’arborescence d’héritage
(utiliser le modificateur final). Cette classe possède deux attributs privés :
a. Un attribut nbHeuresCours, de type primitif int,
b. Un attribut Souriant, de type primitif boolean,
c. Créer un constructeur avec paramètres appelant le constructeur de la super classe
(celui de Personne) par super puis initialisant ses attributs propres (nbHeuresCours et
Souriant).

-1-
6) Développer une classe Etudiant qui hérite de la classe Personne sachant qu’il impossible
d’étendre cette classe. Elle représente un élément terminal dans l’arborescence d’héritage.
Cette classe possède trois attributs privés :
a. Un attribut classe de type String,
b. Un attribut noteMoyenne, de type primitif float,
c. Un attribut sérieux, de type primitif boolean,
d. Créer un constructeur avec paramètres appelant le constructeur de la classe mère,
puis initialisant ses attributs propres (noteMoyenne et sérieux),
7) Créer une classe TesterEnseignantEleve ne comportant pas d’attribut et comportant une
unique méthode main(). Dans cette méthode, créer un objet de la classe Personne, de nom
égal à "Salah" et d’âge égal à 35.
Créer un Enseignant, de même nom et âge, ayant nbHeuresCours égal à 50 et Souriant mis
à true. Puis, créer un Etudiant de nom "Ali", d’âge égal à 20, ayant 12 comme
noteMoyenne et sérieux mis à true.
Afficher les caractéristiques des trois objets créés en faisant appel à la méthode afficher()
de la classe Personne. (Qu’est-ce que vous avez remarqué ?)
8) On se propose maintenant d’appliquer la Redéfinition de la méthode afficher(). Créer, au
sein de la classe Enseignant une méthode de signature void afficher() qui affiche les
caractéristiques d’un enseignant (de même pour la classe Etudiant).
9) Créer un tableau de N éléments de type Personne dans la méthode main() de la classe
TesterEnseignantEleve avec N est déclarée comme une constante égale à 5 (Vous allez
utiliser le mot clé final) ; initialiser ce tableau avec 2 instances d’objet de type Enseignant
et 3 instances de type Etudiant. Effectuer une boucle for sur les éléments du tableau ; dans
le corps de la boucle, afficher s’il s’agit d’un Etudiant ou d’un Enseignant en se servant de
l’opérateur instanceof, puis effectuer un appel à la méthode afficher().
Remarque à retenir : Le mot clé (le modificateur) final
• Un attribut déclaré final est un attribut constant. Il faut l'initialiser dès sa déclaration.
Par convention, un attribut final est écrit en majuscule.
Exemple : final int MAX = 10;
• Une classe final est une classe qui ne peut pas avoir de filles. Une classe final ne peut
pas être étendue: le mécanisme d'héritage est bloqué. Mais une classe final peut
évidemment être la fille d'une autre classe (non final).
• Une méthode final est une méthode qui ne peut pas être redéfinie dans les sous-
classes.

-2-

Vous aimerez peut-être aussi