class
VolCompletException
extends Exception {
public
VolCompletException(
String message)
{ super(message); }
}
class
SiegeOccupeExceptio
n extends Exception {
public
SiegeOccupeExceptio
n(String message)
{ super(message); }
}
// Classe de test pour
les exceptions
public class
SystemeExceptions {
public static void
main(String[] args) {
[Link]("Ge
stionnaire
d'exceptions chargé.");
}
}
import
[Link];
public class Passager
{
private String nom,
prenom,
numeroPasseport;
private LocalDate
dateNaissance;
public
Passager(String nom,
String prenom, String
numeroPasseport,
LocalDate
dateNaissance) {
[Link] = nom;
[Link] =
prenom;
[Link]
= numeroPasseport;
[Link] =
dateNaissance;
}
public int getAge() {
return
[Link]().getYe
ar() -
[Link]
r();
}
@Override
public String
toString() {
return prenom + "
" + nom + "
(Passeport: " +
numeroPasseport +
")";
}
// MAIN POUR
TESTER LE
PASSAGER
public static void
main(String[] args) {
Passager p =
new
Passager("Dupont",
"Jean", "AB123456",
[Link](1990, 5,
15));
[Link]("Te
st Passager: " +
[Link]());
[Link]("Âg
e: " + [Link]() + "
ans");
}
}
import [Link].*;
import
[Link];
public class Vol {
private String
numero, destination;
private LocalDate
date;
private int
placesTotales,
placesReservees;
private Set<String>
siegesOccupes = new
HashSet<>();
private double
prixBase;
public Vol(String
numero, String
destination, LocalDate
date, int
placesTotales, double
prixBase) {
[Link] =
numero;
[Link] =
destination;
[Link] = date;
[Link]
= placesTotales;
[Link] =
prixBase;
[Link]
= 0;
}
public boolean
estComplet() { return
placesReservees >=
placesTotales; }
public double
getPrixSelonClasse(St
ring classe) {
if
([Link]
ase("premiere"))
return prixBase * 3;
if
([Link]
ase("affaires")) return
prixBase * 2;
return prixBase;
}
public String
reserverSiege(String
siege) throws
SiegeOccupeExceptio
n{
if
([Link]
ns(sie
ge)) throw new
SiegeOccupeExceptio
n("Siège déjà
occupé");
[Link](si
ege);
placesReservees++;
return siege;
}
public void
libererSiege(String
siege) {
if
([Link]
ve(siege))
placesReservees--;
}
@Override
public String
toString() {
return "Vol " +
numero + " vers " +
destination + " le " +
date;
}
// MAIN POUR
TESTER LE VOL
public static void
main(String[] args) {
Vol v = new
Vol("AF123",
"Paris",
[Link]().plusD
ays(1), 2, 300.0);
[Link]("Te
st Vol: " + [Link]());
[Link]("Pri
x Affaires: " +
[Link]("
affaires") + "€");
}
}
import
[Link];
enum ClasseVol
{ ECONOMIQUE,
AFFAIRES,
PREMIERE }
public class
Reservation {
private static int
compteur = 1;
private int id;
private Vol vol;
private Passager
passager;
private String siege;
private ClasseVol
classe;
private boolean
confirmee = true;
public
Reservation(Vol vol,
Passager passager,
String siege,
ClasseVol classe)
throws
VolCompletException,
SiegeOccupeExceptio
n{
if
([Link]())
throw new
VolCompletException(
"Vol plein");
[Link] =
compteur++;
[Link] = vol;
[Link] =
passager;
[Link] =
classe;
[Link] =
[Link](sieg
e);
}
public void annuler()
{
[Link] =
false;
[Link](siege)
;
}
public void
afficherDetails() {
[Link]("Ré
servation #" + id + " ["
+ (confirmee ? "OK" :
"ANNULÉE") + "]");
[Link]("Pa
ssager: " + passager);
[Link]("Vol
:
" + vol + " | Siège: " +
siege + " | Classe: " +
classe);
}
// MAIN POUR
TESTER LA
RÉSERVATION
public static void
main(String[] args) {
try {
Vol v = new
Vol("AF123", "Paris",
[Link](), 150,
200.0);
Passager p =
new
Passager("Martin",
"Sophie",
"P999",
[Link](1985, 1,
1));
Reservation
res = new
Reservation(v, p,
"12A",
[Link]
QUE);
[Link]();
} catch
(Exception e)
{ [Link](e.
getMessage()); }
}
}
import [Link].*;
public class
GestionnaireVols {
private static
GestionnaireVols
instance;
private List<Vol>
vols = new
ArrayList<>();
private
List<Reservation>
reservations = new
ArrayList<>();
private
GestionnaireVols() {}
public static
synchronized
GestionnaireVols
getInstance() {
if (instance ==
null) instance = new
GestionnaireVols();
return instance;
}
public void
ajouterVol(Vol v)
{ [Link](v); }
public void
reserver(Vol v,
Passager p, String s,
ClasseVol c) {
try {
Reservation r
= new Reservation(v,
p, s, c);
[Link](r);
[Link]("Ré
servation réussie.");
} catch
(Exception e) {
[Link]("Err
eur: " +
[Link]()); }
}
// MAIN POUR
TESTER LE
SINGLETON
public static void
main(String[] args) {
GestionnaireVols
g1 =
[Link]
stance();
GestionnaireVols
g2 =
[Link]
stance();
[Link]("Mê
me instance ? " + (g1
== g2));
}
}
import
[Link];
public class
SystemeReservationV
ols {
public static void
main(String[] args) {
[Link]("==
= DÉMARRAGE DU
SYSTÈME ===\n");
GestionnaireVols
gestion =
[Link]
stance();
// 1. Création des
dates
LocalDate
demain =
[Link]().plusD
ays(1);
// 2. Création d'un
vol
Vol v1 = new
Vol("AF123", "Douala",
demain, 150, 400.0);
[Link](v1);
// 3. Création d'un
passager
Passager p1 =
new Passager("Eto'o",
"Samuel",
"P237",
[Link](1981, 3,
10));
// 4. Réservation
[Link](v1,
p1, "1A",
[Link]
);
[Link]("\
n=== FIN DE LA
DÉMONSTRATION
===");
}
}