Institut Supérieur des Arts Multimédias de la Mannouba
EXAMEN DE SESSION PRINCIPALE
Matière : Programmation Orientée Objets Session : Janvier 2023
Niveau : 2ème année IM Documents: non autorisés
Durée : 1h30 Nbre de pages : 3
Enseignants : Hanène CHETTAOUI HAMROUNI A.U. : 2022-2023
Exercice 1
class A {
public void calcul (double x, int i)
{
…
}
}
public class B extends A
{
public void calcul (int i, double x)
{
…
}
}
Soient les déclarations suivantes :
int i;
double x ;
A a=new A( ) ;
B b= new B( ) ;
Est-ce que les appels suivants sont corrects ? Si oui, quelle méthode est appelée ?
a. [Link] (i, x ) ;
b. [Link] (x, i);
c. [Link] (i, x);
d. [Link] (x, i);
Exercice 2
Si les classes Pomme et Orange dérivent de la classe Fruit et la classe Golden dérive de la
classe Pomme, Est-ce que les déclarations suivantes sont correctes.
a. Fruit [] tab = new Orange [10] ;
b. Fruit [] tab = new Fruit [10] ;
1
c. Golden [] tab = new Pomme [10] ;
d. Golden [] tab = new Orange [10] ;
Exercice 3
Un centre de formations fait appel à des formateurs dont chacun est caractérisé par un numéro
d’identification et un score.
Il y a deux catégories de formateurs : formateur en Java et formateur en Web dynamique. La
rémunération du formateur en Java est différente de celle du formateur en Web dynamique.
La rémunération est exprimée en dinars par heure. En revanche, la rémunération est la même
pour chaque catégorie de formateurs. Cette rémunération varie chaque jour. Le score par
lequel un formateur ne fait plus partie du centre de formation est différent pour les formateurs
java et web dynamique, mais c’est le même score pour tous les formateurs Java
(respectivement, les formateurs Web dynamique).
1) Ecrire la classe Formateur qui comporte :
Un attribut privé identite de type entier
Un attribut privé nom de type chaîne de caractères
Un attribut privé score de type double
Une méthode de classe nommée verifChaine qui permet de vérifier si une
chaîne de caractères passée en paramètre est valide ou non. Une chaîne de
caractères est valide s’elle comporte seulement des lettres. La méthode
retourne true si la chaîne est valide et false sinon.
Un constructeur permettant d’initialiser les attributs identite , score et nom
par valeurs saisies au clavier. Le score doit être strictement positif et le nom
doit être valide (c’est-à-dire comporte seulement des lettres).
Une méthode nommée afficheFormateur permettant d’afficher les
informations liées au formateur
une méthode nommée setScore permettant de changer le score du formateur
par une valeur passée en argument
une méthode nommée getIdentite permettant de retourner l’identité du
formateur.
Une méthode nommée getScore permettant de retourner le score du formateur
une méthode nommée verifFormateur qui permet de vérifier si le formateur
doit être éliminé ou pas (retourne true ou false). Un formateur ne peut être
éliminé que si son score est inférieur ou égal au score d’élimination. Cette
vérification ne peut pas se faire à ce niveau.
Une méthode nommée remuneration qui retourne la rémunération d’une
formation pour un formateur de type double. La rémunération ne peut pas être
calculée à ce niveau. Elle dépendra de la rémunération par heure et du score
du formateur (le produit entre sa rémunération par heure et son score).
2
2) Ecrire la classe FormateurJava qui hérite de la classe Formateur. Cette classe
comporte :
Un attribut privé remunerationParHeure de type double initialisé à 40 et
qui est partagé par toutes les instances de la classe FormateurJava
Un attribut privé scoreElimination de type double initialisé à 5 et qui est
partagé par toutes les instances de la classe FormateurJava
Un constructeur
Une méthode de classe nommée changerRemuneration permettant de
modifier la rémunération par heure par une valeur passée en argument
Une méthode de classe nommée changerScoreElimination permettant de
modifier le score d’élimination par une valeur passée en argument
Remarque : Dans la suite, la sous-classe FormateurWeb suit la même démarche et n’est pas
à réaliser.
3) Écrire la classe Formation qui comporte :
Un attribut privé tabFormateurs qui est un vecteur de formateurs
Une méthode nommée rechercher permettant de rechercher un formateur par
son identité passé en argument. Cette méthode retourne le formateur s’il
existe dans tabFormateurs et null sinon.
Une méthode nommée ajouter qui permet d’ajouter un formateur passé en
argument à tabFormateurs sachant que le formateur doit exister une seule
fois dans tabFormateurs.
Une méthode nommée changerScore permettant de rechercher un formateur
par son identité passé en argument et de changer son score par une valeur
passée en argument s’il existe dans tabFormateurs.
une méthode nommée afficheFormation permettant d’afficher toutes les
informations sur les formateurs de la formation.
4) On suppose que la classe publique Test, contenant la méthode main, est créée et dans
laquelle une formation est créée et la liste suivante de formateurs est ajoutée. Ne pas
écrire le code associé.
Type du formateur identite score
Java 2 10
Java 1 8.2
Web dynamique 7 3.2
Web dynamique 8 4.6
Si on change la valeur de l’attribut scoreElimination à 6 du formateur dont l’identité est 2, alors
quelle serait la valeur de l’attribut scoreElimination du formateur dont l’identité est 1 ?