Vous êtes sur la page 1sur 2

Ministère de l'Enseignement Supérieur et de la Recherche Scientifique

Université M'hamed Bougara de Boumerdès


Faculté des Sciences, Département : Informatique
TD/TP : Rappel en POO Java Spécialités : ISIL/SI Module : GL
(première semaine uniquement)
Année : L3 – S5 Préparation : GACEB

Exercice 1 : Question / réponse

1) Qu’est ce que l’encapsulation ?


2) Indiquer le concept fondamental de la POO qui correspond à la définition suivante : Manipuler des objets
sans en connaître tout à fait le type.
3) Expliquez la (les) différence(s) entre surdéfinition (surcharge, Overloading) et redéfinition(Overriding)
d'une méthode dans une classe.
4) On a une classe Point qui contient un seul constructeur paramétré Point(int x, int y){...}. Je souhaite créer
un tableau de N objets de type Point sans être obligé de renseigner pour chacun la valeur des paramètres x
et y.
a) Indiquer la modification qu'il faut apporter à la classe Point,
b) Donne le code qui permet de créer ce Tableau de points.
5) Qu'elle est la signification de mot clé (ou modificateur) final lorsqu'il est utilisé devant :
a) Un attribut b) Une méthode c) Une classe
6) Qu'elle est la signification de mot clé (ou modificateur) staticlorsqu'il est utilisé devant :
a) Un attribut b) Une méthode

7) Expliquer la différence entre l'agrégation et la composition en java. Donner un exemple de chacune.


8) Indiquer le principe de upcasting (surclassement)et de downcasting (déclassement) en java. Donner un
exemple de chacun. Indiquer ensuite si le downcasting permet de convertir une instance d'une classe mère en
une instance de classe fille.
9) Est-il possible de créer en Java une classe abstraite sans aucune méthode abstraite?
10) Indiquer la modification qu'il faut apporter à la classe Etudiant pour que l'exécution de la méthode
main()affichage le message : "Nom: Benmhidi,Prenom: Larbi, Note: 20.0"

classEtudiant { classGestion{ publicstaticvoid main() {


String nom, prenom; Etudiant et=newEtudiant();
double note; et.nom="Benmhidi"; et.prenom="Larbi";
} et.note=20;
System.out.println(et); }}

Exercice 2 : Rappel encapsulation et héritage

1 ) Ecrire en Java la déclaration et la définition de deux classes A et B telles que:


– La classe B hérite de la classe A,
– la classe A a un attribut réel r visible dans ses classes dérivées seulement, un attribut entier n visible dans
ses classes filles et les classes du même package et un constructeur affectant une valeur à l’attribut r,
– La classe B possède un attribut booléen b visible uniquement dans la classe B, un constructeur affectant
une valeur aux attributs r et b.
2) Répondre par vrai ou faux.
a) B spécialise A
b) B généralise A
c) B possède au moins tous les champs et les méthodes de A
d) A possède au moins tous les champs et les méthodes de B
e) Toute instance de B peut être considérée comme un A
f) Toute instance de A peut être considérée comme un B
3) Si on ajoute dans la classe A la méthode public void m1() qui affiche la valeur de r et dans la classe B la
méthode public void m1() qui affiche la valeur de l’attribut b, Qu’affichera le code suivant ?
A a= new B(0.2,true); a.m1() ;

Exercice 3 :
1)Indiquer le résultat qui sera affiché après exécution de programme suivant ?
public class Data{
private int x ;
public void f1(int x) {System.out.println(x);}
public void f2() {x++; System.out.println(x);}

public static void main(String [] args) {


Data x1 = new Data();
Data x2 = new Data();
x1.f2(); x1.f1(7); x2.f2(); x2.f1(9); x2.f2(); x1 = x2;
for (int i=0;i<4; i++) x1.f2();
x1.f2(); x2.f2();
}
}
2) Modifier la fonction f1 pour pouvoir afficher aussi la valeur de l’attribut x ?
3) Parmi les méthodes suivantes, indiquer celles qui peuvent être ajoutées en surcharge dans la classe Data?
a) void f2(int x) b)int f1(int x) c)int f1(float x) d) int f2() e)int f2(float x)

Exercice 4 :
Qu'affiche le programme suivant? 13 class Test {
1 class A{ 14 public static void main (){
2 public String f (D obj) {return "A et D" ;} 15 A a1 =new A( );
3 public String f (A obj) {return "A et A" ;} 16 A a2 =new B( );
4 } 17 B b = new B( );
5 class B extends A { 18 C c = new C( );
6 public String f (B obj) {return "B et B" ;} 19 D d = new D( );
7 public String f (A obj) {return "B et A" ;} 20 System.out.println(a1.f(b));
8 } 21 System.out.println(a1.f(c));
9 class C extends B { 22 System.out.println(a1.f(d));
10 } 23 System.out.println(a2.f(b));
11 class D extends B { 24 System.out.println(a2.f(c));
12 } 25 System.out.println(a2.f(d));
26 System.out.println(b.f(b));
27 System.out.println(b.f(c));
28 System.out.println(b.f(d));
29 }
30 }

Exercice 5 : Polymorphisme

1) Créer la classe abstraite Animal qui contient une méthode void crier() sans définition.

2) Créer par la suite deux classes Chat et Chien qui héritent de la classe abstraite Animal.
Chaque classe fille définit le comportement de la méthode crier() qui affiche le message
"Miauler !" pour un chat et le message "Aboyer!" pour un chien.

3) Dans la fonction main() d'une classe Test, créer un tableau de 5 animaux (3 chats et 2
chiens), afficher le message de cri de chacun.

Vous aimerez peut-être aussi