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

Commit c7b8769

Browse files
committed
Exercice 3 terminé
1 parent dc70cd3 commit c7b8769

2 files changed

Lines changed: 16 additions & 16 deletions

File tree

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

33
import java.util.ArrayList;
4+
import java.util.Comparator;
45
import java.util.List;
56

67
/// Kata 3 - Gestionnaire d'employés.
78
///
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).
9+
/// Opérations simples sur une collection d'[Employe] : filtrer, agréger, trier.
10+
/// Kata idéal pour pratiquer les collections Java et la pensée "fonctions pures"
11+
/// (les méthodes ne modifient pas la liste initiale).
1112
public class GestionnaireEmployes {
1213

1314
private final List<Employe> employes;
@@ -16,33 +17,40 @@ public GestionnaireEmployes(List<Employe> employes) {
1617
this.employes = List.copyOf(employes);
1718
}
1819

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

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).
29+
/// Retourne l'âge moyen des employés majeurs, ou `0.0` s'il n'y a aucun majeur
30+
/// (pour éviter une division par zéro).
2831
public double ageMoyenDesMajeurs() {
2932
double moyenne = 0.0;
3033
// TODO kata 3 : additionner les âges des majeurs puis diviser par leur nombre.
3134
// Attention au cas "aucun majeur" → 0.0 (pas NaN).
35+
moyenne = getMajeurs().stream().mapToInt(Employe::age).average().orElse(0.0);
3236
return moyenne;
3337
}
3438

35-
/// Retourne les employés triés par ordre alphabétique du nom (ne modifie pas la liste).
39+
/// Retourne les employés triés par ordre alphabétique du nom (ne modifie pas
40+
/// la liste).
3641
public List<Employe> parOrdreAlphabetique() {
3742
List<Employe> tries = new ArrayList<>(employes);
3843
// TODO kata 3 : trier tries avec un Comparator sur le nom.
44+
tries = employes.stream().sorted(Comparator.comparing(Employe::nom)).toList();
3945
return tries;
4046
}
4147

42-
/// Retourne les employés triés par ordre croissant d'âge (ne modifie pas la liste).
48+
/// Retourne les employés triés par ordre croissant d'âge (ne modifie pas
49+
/// la liste).
4350
public List<Employe> parAgeCroissant() {
4451
List<Employe> tries = new ArrayList<>(employes);
4552
// TODO kata 3 : trier tries avec un Comparator sur l'âge.
53+
tries = employes.stream().sorted(Comparator.comparingInt(Employe::age)).toList();
4654
return tries;
4755
}
4856
}

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

Lines changed: 0 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,12 @@
1918
*/
2019
class GestionnaireEmployesTest {
2120

22-
@Disabled("Retire cette annotation pour activer le test")
2321
@Test
2422
void la_liste_vide_n_a_aucun_majeur() {
2523
GestionnaireEmployes g = new GestionnaireEmployes(List.of());
2624
assertThat(g.getMajeurs()).isEmpty();
2725
}
2826

29-
@Disabled("Retire cette annotation pour activer le test")
3027
@Test
3128
void le_gestionnaire_filtre_les_majeurs() {
3229
GestionnaireEmployes g =
@@ -35,14 +32,12 @@ void le_gestionnaire_filtre_les_majeurs() {
3532
assertThat(g.getMajeurs()).extracting(Employe::nom).containsExactly("Alice", "Charlie");
3633
}
3734

38-
@Disabled("Retire cette annotation pour activer le test")
3935
@Test
4036
void la_personne_de_18_ans_est_majeure() {
4137
GestionnaireEmployes g = new GestionnaireEmployes(List.of(new Employe("Dana", 18)));
4238
assertThat(g.getMajeurs()).hasSize(1);
4339
}
4440

45-
@Disabled("Retire cette annotation pour activer le test")
4641
@Test
4742
void le_gestionnaire_calcule_l_age_moyen_des_majeurs() {
4843
GestionnaireEmployes g =
@@ -51,15 +46,13 @@ void le_gestionnaire_calcule_l_age_moyen_des_majeurs() {
5146
assertThat(g.ageMoyenDesMajeurs()).isEqualTo(30.0);
5247
}
5348

54-
@Disabled("Retire cette annotation pour activer le test")
5549
@Test
5650
void l_age_moyen_sans_majeur_vaut_0() {
5751
GestionnaireEmployes g =
5852
new GestionnaireEmployes(List.of(new Employe("Alice", 10), new Employe("Bob", 12)));
5953
assertThat(g.ageMoyenDesMajeurs()).isEqualTo(0.0);
6054
}
6155

62-
@Disabled("Retire cette annotation pour activer le test")
6356
@Test
6457
void le_gestionnaire_trie_alphabetiquement() {
6558
GestionnaireEmployes g =
@@ -70,7 +63,6 @@ void le_gestionnaire_trie_alphabetiquement() {
7063
.containsExactly("Alice", "Bob", "Charlie");
7164
}
7265

73-
@Disabled("Retire cette annotation pour activer le test")
7466
@Test
7567
void le_gestionnaire_trie_par_age_croissant() {
7668
GestionnaireEmployes g =

0 commit comments

Comments
 (0)