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

Gestion des vols : classes et méthodes Java

Le document décrit la création de classes Java pour modéliser des personnes, des passagers et des pilotes dans un système de gestion de vols. Il inclut des instructions pour l'héritage, la gestion des attributs, ainsi que des méthodes pour ajouter et retirer des passagers, vérifier la présence de bébés à bord, et gérer les vols associés aux pilotes. Des méthodes supplémentaires sont également fournies pour trier les vols et compter ceux effectués par des pilotes expérimentés.

Transféré par

Aymen ladhari
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)
26 vues7 pages

Gestion des vols : classes et méthodes Java

Le document décrit la création de classes Java pour modéliser des personnes, des passagers et des pilotes dans un système de gestion de vols. Il inclut des instructions pour l'héritage, la gestion des attributs, ainsi que des méthodes pour ajouter et retirer des passagers, vérifier la présence de bébés à bord, et gérer les vols associés aux pilotes. Des méthodes supplémentaires sont également fournies pour trier les vols et compter ceux effectués par des pilotes expérimentés.

Transféré par

Aymen ladhari
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

1

2
//TODO 1 (0,5 pt) : Complétez l'entête de la classe Personne pour permettre
l'héritage pour les classes Passenger et Pilot seulement.
// 0,25pt sealed + 0,25pt permits
public sealed class Person permits Passenger, Pilot {
private String name;
private int age;

//TODO 2 (0,5 pt) : Implémentez le constructeur de la classe.


public Person(String name, int age) {
[Link] = name;
[Link] = age;
}
//TODO 3 (1 pt) : Implémentez les getters et setters des attributs name et
age.
// 0,25 par méthode
public String getName() {
return name;
}
public void setName(String name) {
[Link] = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
[Link] = age;
}
}

3
import [Link];

//TODO 4 (1 pt) : Complétez l'entête de la classe Passenger afin qu'elle


hérite de la classe Person et qu'elle puisse être étendue.
// 0,5pt non-sealed 0,5pt extends
public non-sealed class Passenger extends Person {
private int cin;
//TODO 5 (1 pt) : Implémentez le constructeur de la classe.
public Passenger(int cin, String name, int age) {
super(name, age);
[Link] = cin;
}
public int getCin() {
return cin;
}
public void setCin(int cin) {
[Link] = cin;
}
@Override
public String toString() {
return "Passenger{" +
"cin=" + cin +
"} " + [Link]();
}
//TODO 6 (1 pt) : Implémentez la méthode nécessaire pour tester l’égalité
entre 2 passagers selon leurs noms et leurs cin.
// Acceptez toute variation de cette méthode
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Passenger passenger)) return false;
return getCin() == [Link]() && [Link](getName(),
[Link]());
}
//TODO 7 (1 pt) : Implémentez la méthode nécessaire pour garantir
l’unicité des passagers selon leurs noms et leurs cin.
// Acceptez toute variation de cette méthode
@Override
public int hashCode() {
return [Link](getCin(), getName());
}
}

4
//TODO 8 (1 pt) : Complétez l'entête de la classe Pilot pour qu'elle hérite
de la classe Person et ne puisse pas être étendue.
// 0,5pt final + 0,5pt extends
public final class Pilot extends Person {
private int experience;
private int salary;
private int badgeNumber;

public Pilot(String name, int age, int experience, int salary, int
badgeNumber) {
super(name, age);
[Link] = experience;
[Link] = salary;
[Link] = badgeNumber;
}
}

5
public class Flight {
private Set<Passenger> passengers;
private String flightNumber;
private String departureCity;
private String arrivalCity;
private int distance;

public Flight(String flightNumber, String departureCity, String


arrivalCity, int distance) {
[Link] = flightNumber;
[Link] = departureCity;
[Link] = arrivalCity;
[Link] = distance;
passengers = new HashSet<>();
}
//TODO 9 (0,5 pt) : Complétez la méthode « addPassenger » qui permet
d’ajouter un passager au vol.
public void addPassenger(Passenger passenger) {
[Link](passenger);
}

//TODO 10 (0,5 pt) : Complétez la méthode « removePassenger » permet de


retirer un passager du vol.
public void removePassenger(Passenger passenger) {
[Link](passenger);
}

//TODO 11 (1 pt) : Implémenter la méthode « checkIfBabiesOnBoard » qui


permet de vérifier s'il y a des bébés (moins de 2 ans) à bord du vol. (Avec
l’API Stream)
// Acceptez toute variation de cette méthode avec Stream (noneMatch), 0
sinon
public boolean checkIfBabiesOnBoard() {
return [Link]().anyMatch(passenger -> [Link]() < 2);
}
}

6
public class Airport {
private String name;
private Map<Pilot, List<Flight>> flights;

public Airport(String name) {


[Link] = name;
[Link] = new HashMap<>();
}

//TODO 12 (1,5 pt) : Complétez la méthode « addFlight » qui permet d’ajouter un


vol d'un pilote donné à la liste des vols associés à ce pilote.
// Si le pilote n'a pas de vols existants, une nouvelle liste est créée et
associée au pilote avant d'ajouter le nouveau vol à la liste.
public void addFlight(Pilot pilot, Flight flight) {
List<Flight> flights = [Link](pilot); //0,25pt
if (flights == null) { //0,5pt
flights = new ArrayList<>(); //0,25pt
[Link](pilot, flights); //0,25pt
}
[Link](flight); //0,25pt
}
//TODO 13 (1,5 pt) : Complétez la méthode « sortFlightsByPilotName » qui permet
de trier les vols en fonction du nom du pilote, dans l'ordre croissant.
public Map<Pilot, List<Flight>> sortFlightsByPilotName() {
Map<Pilot, List<Flight>> sortedFlights = new TreeMap<>((p1, p2) ->
[Link]().compareTo([Link]())); //0,25pt Instanciation TreeMap + 0,75pt
Comparator
[Link]([Link]); //0,25pt
return sortedFlights; //0,25pt
}

//TODO 14 (2 pt) : Complétez la méthode « printFlightsLongerThan5000KM » qui


permet d’afficher tous les vols d'une longueur supérieure à 5000 kilomètres.
// Acceptez toute variation de cette méthode même avec Stream
public void printFlightsLongerThan5000KM() {
for ([Link]<Pilot, List<Flight>> entry : [Link]()) {
Pilot pilot = [Link]();
List<Flight> flights = [Link]();
for (Flight flight : flights) {
if ([Link]() > 5000) {
[Link](pilot + " " + flight);
}
}
}
}

//TODO 15 (2 pt) : Complétez la méthode « countFlightsWithExperiencedPilots » qui


compte le nombre total de vols dont les pilotes sont expérimentés.
// Un pilote expérimenté a plus de 5 ans d'expérience. (Avec l’API Stream)
// Acceptez toute variation de cette méthode avec Stream, 0 sinon
public int countFlightsWithExperiencedPilots() {
return [Link]().stream().filter(entry -> [Link]()
.getExperience() > 5).mapToInt(entry -> [Link]().size()).sum();
}
}

Vous aimerez peut-être aussi