Skip to content
This repository was archived by the owner on Jul 2, 2026. It is now read-only.

Commit 236678a

Browse files
committed
exercice 3 terminé
1 parent d882fa5 commit 236678a

2 files changed

Lines changed: 22 additions & 30 deletions

File tree

Lines changed: 20 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
package fr.univ_amu.iut.exercice3;
22

3-
import java.util.ArrayList;
3+
import java.util.Comparator;
44
import java.util.List;
55

66
/// Kata 3 - Gestionnaire d'employés.
77
///
8-
/// Opérations simples sur une collection d'[Employe] : filtrer, agréger, trier. Kata idéal pour
9-
/// pratiquer les collections Java et la pensée "fonctions pures" (les méthodes ne modifient pas la
10-
/// liste initiale).
8+
/// Opérations simples sur une collection d'[Employe] : filtrer, agréger, trier.
9+
/// Kata idéal pour pratiquer les collections Java et la pensée "fonctions pures"
10+
/// (les méthodes ne modifient pas la liste initiale).
1111
public class GestionnaireEmployes {
1212

1313
private final List<Employe> employes;
@@ -16,33 +16,31 @@ public GestionnaireEmployes(List<Employe> employes) {
1616
this.employes = List.copyOf(employes);
1717
}
1818

19-
/// Retourne la liste des employés âgés d'au moins 18 ans, dans l'ordre d'origine.
19+
/// Retourne la liste des employés âgés d'au moins 18 ans, dans
20+
/// l'ordre d'origine.
2021
public List<Employe> getMajeurs() {
21-
List<Employe> majeurs = new ArrayList<>();
22-
// TODO kata 3 : filtrer employes pour ne garder que ceux d'age >= 18.
23-
return majeurs;
22+
return employes.stream().filter(e -> e.age() >= 18).toList();
2423
}
2524

26-
/// Retourne l'âge moyen des employés majeurs, ou `0.0` s'il n'y a aucun majeur (pour éviter une
27-
/// division par zéro).
25+
/// Retourne l'âge moyen des employés majeurs, ou `0.0` s'il n'y a aucun majeur
26+
/// (pour éviter une division par zéro).
2827
public double ageMoyenDesMajeurs() {
29-
double moyenne = 0.0;
30-
// TODO kata 3 : additionner les âges des majeurs puis diviser par leur nombre.
31-
// Attention au cas "aucun majeur" → 0.0 (pas NaN).
32-
return moyenne;
28+
return employes.stream()
29+
.filter(e -> e.age() >= 18)
30+
.mapToInt(Employe::age)
31+
.average()
32+
.orElse(0.0);
3333
}
3434

35-
/// Retourne les employés triés par ordre alphabétique du nom (ne modifie pas la liste).
35+
/// Retourne les employés triés par ordre alphabétique du nom (ne modifie pas
36+
/// la liste).
3637
public List<Employe> parOrdreAlphabetique() {
37-
List<Employe> tries = new ArrayList<>(employes);
38-
// TODO kata 3 : trier tries avec un Comparator sur le nom.
39-
return tries;
38+
return employes.stream().sorted(Comparator.comparing(Employe::nom)).toList();
4039
}
4140

42-
/// Retourne les employés triés par ordre croissant d'âge (ne modifie pas la liste).
41+
/// Retourne les employés triés par ordre croissant d'âge (ne modifie pas
42+
/// la liste).
4343
public List<Employe> parAgeCroissant() {
44-
List<Employe> tries = new ArrayList<>(employes);
45-
// TODO kata 3 : trier tries avec un Comparator sur l'âge.
46-
return tries;
44+
return employes.stream().sorted(Comparator.comparingInt(Employe::age)).toList();
4745
}
4846
}

src/test/java/fr/univ_amu/iut/exercice3/GestionnaireEmployesTest.java

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import static org.assertj.core.api.Assertions.assertThat;
44

55
import java.util.List;
6-
import org.junit.jupiter.api.Disabled;
76
import org.junit.jupiter.api.Test;
87

98
/**
@@ -19,14 +18,14 @@
1918
*/
2019
class GestionnaireEmployesTest {
2120

22-
@Disabled("Retire cette annotation pour activer le test")
21+
// @Disabled("Retire cette annotation pour activer le test")
2322
@Test
2423
void la_liste_vide_n_a_aucun_majeur() {
2524
GestionnaireEmployes g = new GestionnaireEmployes(List.of());
2625
assertThat(g.getMajeurs()).isEmpty();
2726
}
2827

29-
@Disabled("Retire cette annotation pour activer le test")
28+
// @Disabled("Retire cette annotation pour activer le test")
3029
@Test
3130
void le_gestionnaire_filtre_les_majeurs() {
3231
GestionnaireEmployes g =
@@ -35,14 +34,12 @@ void le_gestionnaire_filtre_les_majeurs() {
3534
assertThat(g.getMajeurs()).extracting(Employe::nom).containsExactly("Alice", "Charlie");
3635
}
3736

38-
@Disabled("Retire cette annotation pour activer le test")
3937
@Test
4038
void la_personne_de_18_ans_est_majeure() {
4139
GestionnaireEmployes g = new GestionnaireEmployes(List.of(new Employe("Dana", 18)));
4240
assertThat(g.getMajeurs()).hasSize(1);
4341
}
4442

45-
@Disabled("Retire cette annotation pour activer le test")
4643
@Test
4744
void le_gestionnaire_calcule_l_age_moyen_des_majeurs() {
4845
GestionnaireEmployes g =
@@ -51,15 +48,13 @@ void le_gestionnaire_calcule_l_age_moyen_des_majeurs() {
5148
assertThat(g.ageMoyenDesMajeurs()).isEqualTo(30.0);
5249
}
5350

54-
@Disabled("Retire cette annotation pour activer le test")
5551
@Test
5652
void l_age_moyen_sans_majeur_vaut_0() {
5753
GestionnaireEmployes g =
5854
new GestionnaireEmployes(List.of(new Employe("Alice", 10), new Employe("Bob", 12)));
5955
assertThat(g.ageMoyenDesMajeurs()).isEqualTo(0.0);
6056
}
6157

62-
@Disabled("Retire cette annotation pour activer le test")
6358
@Test
6459
void le_gestionnaire_trie_alphabetiquement() {
6560
GestionnaireEmployes g =
@@ -70,7 +65,6 @@ void le_gestionnaire_trie_alphabetiquement() {
7065
.containsExactly("Alice", "Bob", "Charlie");
7166
}
7267

73-
@Disabled("Retire cette annotation pour activer le test")
7468
@Test
7569
void le_gestionnaire_trie_par_age_croissant() {
7670
GestionnaireEmployes g =

0 commit comments

Comments
 (0)