0% ont trouvé ce document utile (0 vote)
0 vues7 pages

Correction Java Avec Explication

Le document présente la correction d'un examen Java de juin 2025, comprenant des exercices sur l'héritage, les ArrayLists, la comparaison de chaînes, et des classes abstraites. Il explique également la création de classes comme Personne et Abonnement, ainsi que l'utilisation de comparateurs et de gestion d'exceptions. Enfin, un programme principal illustre la réservation de livres avec gestion des exceptions pour les réservations dépassant un maximum autorisé.

Transféré par

winky.info1
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
0 vues7 pages

Correction Java Avec Explication

Le document présente la correction d'un examen Java de juin 2025, comprenant des exercices sur l'héritage, les ArrayLists, la comparaison de chaînes, et des classes abstraites. Il explique également la création de classes comme Personne et Abonnement, ainsi que l'utilisation de comparateurs et de gestion d'exceptions. Enfin, un programme principal illustre la réservation de livres avec gestion des exceptions pour les réservations dépassant un maximum autorisé.

Transféré par

winky.info1
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

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.

Vous aimerez peut-être aussi