SlideShare une entreprise Scribd logo
1  sur  2
Télécharger pour lire hors ligne
A U 2023-2024 Page 1
Université de Carthage - Ecole Nationale d’Ingénieurs de Carthage
Travaux Pratiques en Programmation Java
Niveau : deuxième année ingénieur en Génie Informatique
TP 4 : Collections et Streams
Objectifs du TP :
Les objectifs de ce TP sont :
 Maitriser les différentes collections
 Connaitre comment utiliser des comparateurs et effectuer des tris
 S’initier aux streams
I. Travail en classe
On se propose de développer une application Java destinée à un comité d’organisation d’un
tournoi sportif afin de permettre la gestion des équipes. Dans ce contexte et après une brève
analyse il apparait que :
 Un joueur est caractérisé par son nom-prénom, son âge, sa taille, son poids, le nombre
de matchs joués, et son rôle dans l’équipe affecté à partir de cet ensemble statique
{Gardien, Défense, Centre, Attaque}
 Une équipe est composée par une liste de joueurs, et possède un ensemble de titres
 Un tournoi est caractérisé par un lieu et un ensemble des équipes. A chaque équipe on
attribue un identifiant numérique unique lors du tournoi.
1) Implémenter les classes Joueur et Titre ainsi que les méthodes que vous jugez
nécessaires pour chaque classe.
2) Implémenter la classe Equipe. Il est à noter qu’on doit avoir ces méthodes :
 ajouterJoueur(Joueur)
 ajouterTitre(Titre)
 getJoueur(int)
 getJoueurs()
 affichJoueurs() avec méthode forEach()
 afficherTitres() avec méthode forEach()
 afficher() : affichage de toutes les données
 redéfinition de toString() : utiliser StringBuffer et une boucle forEach
3) Implémenter une classe Test possédant une méthode main() afin de créer une
équipe, d’ajouter des joueurs et des titres et de tester les affichages.
4) Implémenter l’interface fonctionnelle Comparable afin de comparer les âges des
joueurs.
5) Effectuer dans la classe principale:
 Le tri par ordre croissant des matchs joués avec affichage.
 Le tri par taille croissante des joueurs. Utiliser un stream pour l’affichage.
Utiliser la méthode sort() pour les listes et une expression Lambda
A U 2023-2024 Page 2
II. Travail à domicile
Continuer sur la même application :
6) Filtrer les joueurs de taille plus de 180 cm, puis les trier par ordre de taille
croissante, et finalement afficher une seule ligne du type
180 : Ali, 183 : Fred, 195 : Bob
7) Ajouter dans la classe Joueur les méthodes suivantes :
public Object valeur(int i) {
switch (i) {
case 0: return this.getNomPrenom();
case 1: return this.getTaille();
case 2: return this.getPoids();
case 3: return this.getNbrMatch();
case 4: return this.getRole();
default: throw new RuntimeException("pas de champ pour cet indice");}}
public Stream<Object> valeurs(){
return Stream.iterate(0, n->n+1).limit(5).map(n -> this.valeur(n));}
Expliquer-les et tester dans la classe principale.
8) Implémenter la classe Tournoi ainsi que les méthodes que vous jugez
nécessaires pour cette classe.

Contenu connexe

En vedette

Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 

En vedette (20)

PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
 
Barbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy Presentation
 

TP4Java.pdf

  • 1. A U 2023-2024 Page 1 Université de Carthage - Ecole Nationale d’Ingénieurs de Carthage Travaux Pratiques en Programmation Java Niveau : deuxième année ingénieur en Génie Informatique TP 4 : Collections et Streams Objectifs du TP : Les objectifs de ce TP sont :  Maitriser les différentes collections  Connaitre comment utiliser des comparateurs et effectuer des tris  S’initier aux streams I. Travail en classe On se propose de développer une application Java destinée à un comité d’organisation d’un tournoi sportif afin de permettre la gestion des équipes. Dans ce contexte et après une brève analyse il apparait que :  Un joueur est caractérisé par son nom-prénom, son âge, sa taille, son poids, le nombre de matchs joués, et son rôle dans l’équipe affecté à partir de cet ensemble statique {Gardien, Défense, Centre, Attaque}  Une équipe est composée par une liste de joueurs, et possède un ensemble de titres  Un tournoi est caractérisé par un lieu et un ensemble des équipes. A chaque équipe on attribue un identifiant numérique unique lors du tournoi. 1) Implémenter les classes Joueur et Titre ainsi que les méthodes que vous jugez nécessaires pour chaque classe. 2) Implémenter la classe Equipe. Il est à noter qu’on doit avoir ces méthodes :  ajouterJoueur(Joueur)  ajouterTitre(Titre)  getJoueur(int)  getJoueurs()  affichJoueurs() avec méthode forEach()  afficherTitres() avec méthode forEach()  afficher() : affichage de toutes les données  redéfinition de toString() : utiliser StringBuffer et une boucle forEach 3) Implémenter une classe Test possédant une méthode main() afin de créer une équipe, d’ajouter des joueurs et des titres et de tester les affichages. 4) Implémenter l’interface fonctionnelle Comparable afin de comparer les âges des joueurs. 5) Effectuer dans la classe principale:  Le tri par ordre croissant des matchs joués avec affichage.  Le tri par taille croissante des joueurs. Utiliser un stream pour l’affichage. Utiliser la méthode sort() pour les listes et une expression Lambda
  • 2. A U 2023-2024 Page 2 II. Travail à domicile Continuer sur la même application : 6) Filtrer les joueurs de taille plus de 180 cm, puis les trier par ordre de taille croissante, et finalement afficher une seule ligne du type 180 : Ali, 183 : Fred, 195 : Bob 7) Ajouter dans la classe Joueur les méthodes suivantes : public Object valeur(int i) { switch (i) { case 0: return this.getNomPrenom(); case 1: return this.getTaille(); case 2: return this.getPoids(); case 3: return this.getNbrMatch(); case 4: return this.getRole(); default: throw new RuntimeException("pas de champ pour cet indice");}} public Stream<Object> valeurs(){ return Stream.iterate(0, n->n+1).limit(5).map(n -> this.valeur(n));} Expliquer-les et tester dans la classe principale. 8) Implémenter la classe Tournoi ainsi que les méthodes que vous jugez nécessaires pour cette classe.