Université d’Ain Témouchent - Belhadj Bouchaib
Faculté des Sciences et de la Technologie
Département Mathématique et Informatique
2eme Année Informatique Programmation Orientée Objet Année universitaire 2023/2024
Questions de cours (6 pts)
o Qu’est-ce que l’état d’un objet ? ........................................................................... 1 pt
o A quel moment s’exécute le constructeur d’une classe ? ..................................... 1 pt
o En java, le mot "final" peut être appliqué à une classe ainsi qu'à une méthode. Quel est son rôle
dans chaque cas ? .................................................................................................. 2 pts
o Expliquer le clonage des objets et donner ses avantages. ..................................... 2 pts
Exercice 1 (4 pts)
1) La commande [Link]([Link]()) affiche 0 car dans le constructeur de la classe 1 pts
« Test », l’affectation est inversée. Il affecte l’attribut au paramètre ; la correction est comme suit :
Existant Correction
public Test(int v) { public Test(int v) {
v = value ; value = v ;
} }
2) Explication des deux erreurs :
a- Dans "Fichier1", la commande <Test2 s = new Test2();> génère une erreur car le 0.5 pt
constructeur de la classe Test2 exige un seul paramètre, tandis que cette commande
ne fournit aucun paramètre.
Solution : <Test2 s = new Test2(5);> 0.5 pt
b – L’attribut « value » dans la classe Test est déclaré privé. Alors, à l’extérieur de
0.5 pt
cette classe, cet attribut ne peut pas être manipulé directement.
Solution : dans le constructeur de Test2 mettre super(v) au lieu de value = v ; 0.5 pt
3) Aucune forme de polymorphisme n’existe dans cette classe. 1 pt
Université d’Ain Témouchent - Belhadj Bouchaib
Faculté des Sciences et de la Technologie
Département Mathématique et Informatique
2eme Année Informatique Programmation Orientée Objet Année universitaire 2023/2024
Exercice 2 (10 pts)
Personnage Arme
package examen23_24; package examen23_24;
public class Personnage { import [Link];
private String name; 1.5 pt
private int x, y, pointVie; (0.25/attribut) public class Arme {
private double precision; private int puissance, nbr_balles; 0.5 pt
private Arme A; (0.25/attribut)
public Personnage(String n, int x, int y){ public Arme(int puis){ Signature : 0.25
name = n; puissance = puis; Corp : 0.25
Signature : 0.5 pt
this.x = x; nbr_balles = 200;
this.y = y;
precision = 20; Corp : 1.25 pt }
pointVie = 50; (0.25/affectation)
} public int getNbrBalles(){
return nbr_balles; 0.5 pt
public void lancer(){ }
if (A != null){
if ([Link]()) { public boolean tirer(){
precision = precision + 1.5; boolean value = false;
} Random randomNumbers = new Random();
else { String msg;
precision = precision - 1; if (nbr_balles > 0){
} value = [Link]();
Corp : 1.5 pt if (value) msg = "touchée";
if (precision < 0){ (0.25/test A null, else msg = "ratée";
precision = 0; 0.75/precision, [Link]("tirer, cible " + msg);
} 0.25/max precis, nbr_balles = nbr_balles - 1;
else { 0.25/min precis) }
if (precision > 100) { Corp : 0.75
precision = 100; return value; Test nbr_balles 0.25
} } Random 0.25
} Décrément nbr_balles 0.25
}
} public void remplir(){
nbr_balles = 200; 0.25 pt
public void setArme(Arme e){ }
A = e;
} Signature : 0.25
Corp : 0.25
public Arme getArme(){ }
return A;
}
public void charger(){
if (A != null) { 0.25 pt
[Link]();
}
}
Université d’Ain Témouchent - Belhadj Bouchaib
Faculté des Sciences et de la Technologie
Département Mathématique et Informatique
2eme Année Informatique Programmation Orientée Objet Année universitaire 2023/2024
package examen23_24;
public class Examen23_24 {
public static void main(String[] args) {
Personnage pers1 = new Personnage("Momo", 5, 8); 0.5 pt
Arme arm1 = new Arme(10); 0.5 pt
[Link](arm1); 0.25 pt
[Link](); 0.25 pt
[Link]([Link]().getNbrBalles()); 0.5 pt
}