Partager
Examen Java Juin-2025…
PDF
Fait la corrzction avec ecplication svvvvvvp
Réflexion durant quelques secondes
Voici la correction complète avec explication simple de l’examen Java.
Examen Java Juin-2025 (1)
Exercice 1 — Affichage
1) Héritage + redéfinition
Java
A obj = new B();
[Link]();
Affichage :
Classe B
Pourquoi ?
Même si la variable est de type A , l’objet réel créé est new B() . En Java, quand une
méthode est redéfinie, Java exécute la version de la vraie classe de l’objet : ici B .
2) ArrayList
Java
[Link]("Java");
[Link]("Python");
[Link](1, "C++");
[Link]([Link](0));
[Link]([Link]());
La liste devient :
[Java, C++, Python]
Affichage :
Java
3
Pourquoi ?
add(1, "C++") ajoute "C++" à l’indice 1, donc entre "Java" et "Python" .
3) Comparaison String
Java
String a = "Java";
String b = new String("Java");
[Link](a == b);
[Link]([Link](b));
Affichage :
false
true
Pourquoi ?
== compare les adresses mémoire.
equals() compare le contenu.
Exercice 2 — Correction
1) Classe Personne
Java
public abstract class Personne implements Comparable<Personne> {
private int num;
private String nom;
private int age;
public Personne(int num, String nom, int age) {
[Link] = num;
[Link] = nom;
[Link] = age;
}
@Override
public String toString() {
return "Numéro : " + num + ", Nom : " + nom + ", Age : " + age;
}
@Override
public int compareTo(Personne P) {
return [Link]([Link]);
}
}
Explication :
abstract veut dire qu’on ne peut pas créer directement une Personne .
implements Comparable<Personne> permet de comparer deux personnes.
compareTo compare ici les noms alphabétiquement.
2) Classe Abonnement
Java
public class Abonnement {
private String code;
private double prix;
private String type;
private int nbMax;
public Abonnement(String code, double prix, String type, int nbMax) {
[Link] = code;
[Link] = prix;
[Link] = type;
[Link] = nbMax;
}
public Abonnement(Abonnement abonnement) {
[Link] = [Link];
[Link] = [Link];
[Link] = [Link];
[Link] = [Link];
}
public int getMaximum() {
return [Link];
}
public double getPrix() {
return [Link];
}
}
Explication :
Le deuxième constructeur est un constructeur de copie.
Il copie les informations d’un autre abonnement.
getMaximum() retourne le nombre maximum de livres réservables.
J’ai ajouté getPrix() parce qu’on en a besoin dans le tri par prix.
3) Comparator par prix
Java
import [Link];
public class TriParPrixComparator implements Comparator<Abonnement> {
@Override
public int compare(Abonnement A1, Abonnement A2) {
return [Link]([Link](), [Link]());
}
}
Explication :
Comparator<Abonnement> sert à comparer deux abonnements.
[Link](...) compare deux prix :
Java
[Link]()
[Link]()
Ordre croissant : du moins cher vers le plus cher.
4) Classe Usager
Java
import [Link];
import [Link];
public class Usager extends Personne implements IReservable {
private Abonnement abonnement;
private List<String> reservations;
public Usager(int num, String nom, int age, Abonnement A) {
super(num, nom, age);
[Link] = A;
[Link] = new ArrayList<>();
}
@Override
public void reserverLivre(String titre) throws ReservationException {
if ([Link]() >= [Link]()) {
throw new ReservationException("Nombre maximum de réservations atteint.");
}
[Link](titre);
}
@Override
public void annulerReservation(String titre) {
[Link](titre);
}
@Override
public void afficherReservations() {
for (String titre : reservations) {
[Link](titre);
}
}
}
Explication :
extends Personne car un usager est une personne.
implements IReservable car un usager peut réserver, annuler et afficher ses
réservations.
Java
super(num, nom, age);
appelle le constructeur de la classe mère Personne .
Java
new ArrayList<>();
crée une liste vide pour stocker les livres réservés.
5) Exception ReservationException
Java
public class ReservationException extends Exception {
public ReservationException(String message) {
super(message);
}
}
Explication :
extends Exception veut dire que c’est une exception surveillée.
Donc on doit utiliser throws ou try/catch .
super(message) envoie le message à la classe mère Exception .
6) Programme principal Main
Java
public class Main {
public static void main(String[] args) {
Abonnement A = new Abonnement("AB123", 99.99, "Mensuel", 3);
Usager U = new Usager(101, "Moumni", 35, A);
try {
[Link]("Java");
[Link]("C++");
[Link]("Python");
} catch (ReservationException e) {
[Link]([Link]());
}
[Link]();
}
}
Affichage attendu :
Java
C++
Python
Pourquoi try/catch ?
Parce que reserverLivre() peut lancer une ReservationException si l’usager dépasse
le nombre maximum de réservations.