Você está na página 1de 4

L2 Informatique Programmation Orientee Objet Dr.

Lemia Louail

Corrige Serie 2

Exercice 1 : Creation et utilisation dune classe simple

Exercice 2 : Initialisation dun objet


Creation dun objet de type A.
Initialisation explicite de lattribut nbre a 20.
Initialisation par defaut de lattribut decal a une valeur nulle (decal=0).
Appel du constructeur :
Multiplication de nbre par la valeur passee comme parametre (nbre * 5).
Incrementation de nbre par la valeur de decal (nbre + 0).
Appel de la methode affiche :
Le programme affiche : nbr = 100 decal = 0
L2 Informatique Programmation Orientee Objet Dr. Lemia Louail

Exercice 3 : Affectation et comparaison dobjets


NB : ajouter n1.incr(5) ; System.out.print(n1 = ) ; n1.imprime() ; dans la classe Appli-
cation juste avant n1=n2.

Dans la premiere comparaison entre les objets n1 et n2, le resultat est false car n1 et n2 sont
deux objets differents meme sils ont la meme valeur (5). Loperateur == compare les references
des objets et non pas leurs valeurs.
Apres execution de linstruction n1=n2 ; n1 et n2 ont la meme reference qui est celle de n2.
Lobjet qui etait reference par n1 nest plus reference et lobjet qui etait reference par n2 est
maintenant reference par n1 et n2. Par consequent, le resultat de la deuxieme comparaison est
true.

Exercice 4 : Methodes dacces aux champs prives

Exercice 5 : Conversions darguments


a.f(n,x) ; rien a signaler.
a.f(b+3,x) ; rien a signaler. b+3 est de type int.
a.f(b,x) ; rien a signaler. le type byte va etre converti en int.
a.f(n,y) ; erreur : y est de type double et ne peut etre converti en float.
a.f(n,(float)y) ; rien a signaler. Conversion explicite de y vers float.
a.f(n,2*x) ; rien a signaler. 2*x est de type float.
a.f(n+5,x+0.5) ; erreur : x+0.5 est de type double puisque 0.5 est par defaut double.
a.g(b) ; rien a signaler.
a.g(b+1) ; erreur : b+1 est de type int et ne peut etre converti en byte.
a.g(b++) ; rien a signaler. b++ est par defaut de type byte.
a.g(3) ; erreur : 3 est par defaut de type int et ne peut etre converti en byte.
L2 Informatique Programmation Orientee Objet Dr. Lemia Louail

Exercice 6 : Champs et methodes de classe


Les erreurs :
La methode f est statique, par consequent elle ne peut pas agir sur un champ non statique ;
i.e. elle ne peut pas agir sur q.
Dans la methode g : p = n est incorrecte car p est une constante i.e. sa valeur peut etre
initialisee soit lors de la decalaration soit dans le cosntructeur mais elle ne peut etre modifiee
nul part dans le programme.
Dans le main :
lappel a.f(n) est inutile car f est statique. On peut faire tout simplement A.f(n).
lappel f(n) tout seul est incorrect car il ny a pas de methode f dans la classe Application.

Exercice 7 : Champs et methodes de classe

Affichage :

Exercice 8 : Surdefinition de methodes


Les erreurs :
Les deux methodes f ont le meme type de parametres. Le compilateur ne pourra pas decider
quelle methode appeler.
De meme pour les deux methodes h qui ont le meme type de parametres (final na aucune
influence ici). Le compilateur ne pourra pas decider quelle methode appeler.
L2 Informatique Programmation Orientee Objet Dr. Lemia Louail

Exercice 9 : Surdefinition de methodes


a.f(b) ; appel de f(byte).
a.f(p) ; conversion de p en int et appel de f(int).
a.f(q) ; conversion de q en float et appel de f(float).
a.f(x) ; appel de f(float).
a.f(y) ; appel de f(double)
a.f(2.*x) ; 2. est de type doubel donc 2.*x est de type double. Appel de f(double).
a.f(b+1) ; appel de f(int).
a.f(b++) ; b++ est par defaut de type byte donc appel de f(byte).

Exercice 10 : Exercice de synthese

Você também pode gostar