Filière : IIR Niveau : 3ème Année
Session normale : Juin 2025 Date : 16/06/2025
Sujet d’Examen Durée : 2H
Matière : POO2 (Java)
Enseignant/e(s) : [Link], [Link], [Link], [Link], [Link], [Link], [Link], [Link]
Exercice1 : Quel sera l’affichage après exécution des codes suivants ?
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
L'usage des téléphones portables et de tout objet connecté (montre intelligente, etc.) est strictement interdit.
Aucun document n'est autorisé.
Calculatrice non autorisée.
Page 1 / 6
Filière : IIR Niveau : 3ème Année
Session normale : Juin 2025 Date : 16/06/2025
Sujet d’Examen Durée : 2H
Exercice 2 : Problème
Une médiathèque souhaite créer une application Java permettant de gérer les usagers, leurs abonnements, ainsi que les
réservations de livres. Chaque usager dispose d’un abonnement qui limite le nombre de réservations qu’il peut
effectuer.
Comme les usagers font partie des personnes ayant accès à la médiathèque, on propose de représenter toutes ces
personnes à l’aide d’une classe abstraite Personne.
Une personne est caractérisée par un numéro (int), un nom (String) et un âge (int).
La médiathèque souhaite aussi que les personnes puissent être comparées en fonction de leur nom.
1. Complétez la classe Personne avec le constructeur demandé, la méthode toString pour afficher les
informations d’une personne et la méthode compareTo pour permettre la comparaison de deux personnes
selon leur nom.
public abstract class Personne…………………………………………………………………………………………… {
private int num ;
private String nom;
private int age ;
public Personne(…………………………………………………………………………………………………………………………){
[Link]= ………………………………………………;
[Link] = ……………………………………………;
[Link] = ……………………………………………;
}
@Override
public String toString() {
return ……………………………………………………………………………………………………………………………… ;
}
@Override
public int compareTo(Personne P) {
return ……………………………………………………………………………………………………………………;
L'usage des téléphones portables et de tout objet connecté (montre intelligente, etc.) est strictement interdit.
Aucun document n'est autorisé.
Calculatrice non autorisée.
Page 2 / 6
Filière : IIR Niveau : 3ème Année
Session normale : Juin 2025 Date : 16/06/2025
Sujet d’Examen Durée : 2H
Un abonnement est caractérisé par un code (String), un prix (double), un type (par exemple, : "Mensuel",
"Annuel", etc.) et un nombre maximum(int) de livres pouvant être réservés.
2. Complétez la classe Abonnement avec le constructeur demandé et un getter getMaximum() permettant
de récupérer le nombre maximum de livres à réserver.
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 ){
// on suppose que ce constructeur est implémenté
public Abonnement(Abonnement abonnement){
……………………………………………………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………………
public ……………………………………………getMaximum() {
…………………………………………………………………………………………………………………;
// Remarque : La méthode toString ainsi que les getters des autres attributs privés sont supposés déjà implémentés.
La médiathèque souhaite pouvoir trier les abonnements en fonction de leur prix. Pour cela, on lui propose
d’utiliser une classe TriParPrixComparator implémentant l’interface Comparator, et permettant de trier
les abonnements par ordre croissant de prix.
3. Complétez cette classe par le code manquant :
public class TriParPrixComparator ……………………………………………………………………………………………………………………… {
@Override
public int compare(……………………………………………………………… A1, …………………………………………………… A2) {
return ………………………………………………………………………………………………………………………………………………………;
}}
L'usage des téléphones portables et de tout objet connecté (montre intelligente, etc.) est strictement interdit.
Aucun document n'est autorisé.
Calculatrice non autorisée.
Page 3 / 6
Filière : IIR Niveau : 3ème Année
Session normale : Juin 2025 Date : 16/06/2025
Sujet d’Examen Durée : 2H
Un usager est une personne disposant d’un abonnement. Il peut effectuer des réservations de livres, les annuler
et les consulter.
Pour représenter ces fonctionnalités, on propose l’interface IReservable, qui définit ces différentes capacités.
interface IReservable
void reserverLivre(String titre) throws ReservationException;
void annulerReservation(String titre);
void afficherReservations();
4. Complétez la classe Usager par le code nécessaire afin d’associer ces capacités aux usagers.
public class Usager ……………………………………………………………………………………………………………………………………
private Abonnement abonnement; // un usager possède un abonnement
private List<String> reservations; // Liste des titres des livres réservés par l’usager
// constructeur pour initialiser les données d’un usager
public Usager(int num, String nom, int age, Abonnement A) {
……………………………………………………………………………………………………………………………………………… ;
[Link] = ……………………………………………………………………………………………… ;
[Link] = …………………………………………………………………………………………… ;
// Remarque : Pour enregistrer les titres des livres réservés, utilisez un ArrayList
/*
* La réservation d’un livre consiste à ajouter le titre du livre réservé à la liste des livres des réservations
* Si l’usager a atteint le nombre maximum de livres à réserver, levez l’exception ReservationException
*/
@Override
public void reserverLivre(String titre) throws ReservationException {
…………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………
L'usage des téléphones portables et de tout objet connecté (montre intelligente, etc.) est strictement interdit.
Aucun document n'est autorisé.
Calculatrice non autorisée.
Page 4 / 6
Filière : IIR Niveau : 3ème Année
Session normale : Juin 2025 Date : 16/06/2025
Sujet d’Examen Durée : 2H
/*
* L’annulation d’une réservation consiste à retirer le livre de la liste des réservations.
*/
@Override
public void annulerReservation(String titre) {
.................................................................................................................................................................
}
/*
* L’affichage des réservations consiste à afficher les livres réservés.
*/
@Override
public void afficherReservations() {
……………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………..
…………………………………………………………………………………………………………………………………………………………..
Pour gérer le cas où un usager atteint le nombre maximal de réservations autorisées, on propose de
définir une exception surveillée (vérifiée), nommée ReservationException.
5. Complétez la classe ReservationException par le code manquant :
public class ReservationException …………………………………………………………………………………………………… {
public ReservationException(String message){
……………………………………………………………………………………………………………………………………………………………
L'usage des téléphones portables et de tout objet connecté (montre intelligente, etc.) est strictement interdit.
Aucun document n'est autorisé.
Calculatrice non autorisée.
Page 5 / 6
Filière : IIR Niveau : 3ème Année
Session normale : Juin 2025 Date : 16/06/2025
Sujet d’Examen Durée : 2H
6. Complétez le programme suivant par ce qui est demandé :
public class Main {
public static void main(String[] args) {
a) Créez l’abonnement dont le code est "AB123", le prix : 99.99, le type : "Mensuel" et le nombre maximum
de réservations est 3.
……………………………………………………………………………………………………………………………………………………………………………………………………………………………
b) Créez l’usager de nom "Moumni" ayant cet abonnement. "Moumni" a le numéro 101 et il a 35 ans.
…………………………………………………………………………………………………………………………………………………………………………………………………………………………
c) "Moumni" a réservé les livres dont les titres sont respectivement "Java", "C++" et "Python".
Ecrire le code java correspondant.
Remarque : Votre code doit rester fiable, même dans le cas où l’usager aurait atteint le nombre maximal de
réservations autorisées.
…………………………………………………………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………………………………………………………
d) Affichez les réservations effectuées par l’usager " Moumni"
……………………………………………………………………………………………………………………………………………………………………………………………………………
L'usage des téléphones portables et de tout objet connecté (montre intelligente, etc.) est strictement interdit.
Aucun document n'est autorisé.
Calculatrice non autorisée.
Page 6 / 6