TP3 : JAVA AVANCÉE
4 EME ANNÉE CYCLE D’INGÉNIEURE
INGÉNIERIE INFORMATIQUE ET RÉSEAU JAVA
TP3 : Acquis visés
Comprendre les principes des Maps
Manipulation des Maps de types prédéfinis.
Modélisation d’un problème et le résoudre en utilisant les Maps
TP4 : Acquis visés
Modélisation d’un problème et le résoudre en utilisant les Maps
Comprendre les principes des Streams en Java
Créer des Steams selon des objectifs
Maitriser les operation : filter, map , collect et forEach
Sidi el khir Ayat 23/11/2023
Diagramme de classe avec dictionnaire des données
Dictionnaire des données
Membre
ID : identifiant du membre
Nom : nom du membre
Groupe : groupe auquel appartient le membre
Projet : projet sur lequel travaille le membre
Groupe
ID : identifiant du groupe
Membres : ensemble des membres du groupe
Partenariat
Groupe1 : groupe participant au partenariat
Groupe2 : groupe participant au partenariat
Laboratoire
Membres : liste des membres du laboratoire
Groupes : liste des groupes du laboratoire
Partenariat : liste des partenariats du laboratoire
Code source
classe membre :
package Tp3 ; public class Membre
{ private int ID; private String nom;
private Groupe groupe; private String
projet_en_cours;
// Constructeur
public Membre(int ID, String nom, Groupe groupe, String projet_en_cours) { this.ID = ID;
this.nom = nom; this.groupe = groupe;
this.projet_en_cours = projet_en_cours;
}
// Getters et Setters public int
getID() {
return ID;
}
public String getNom() { return nom;
}
public Groupe getGroupe() { return groupe;
}
public void setGroupe(Groupe groupe) { this.groupe = groupe;
}
public String getProjet_en_cours() { return
projet_en_cours;
}
public void setProjet_en_cours(String projet_en_cours) { this.projet_en_cours =
projet_en_cours;
}
// Méthode pour afficher les détails d'un membre
public void afficherDetails() {
System.out.println("ID: " + ID);
System.out.println("Nom: " + nom);
System.out.println("Groupe: " + groupe.getID());
System.out.println("Projet en cours: " + projet_en_cours);
}
}
classe Groupe :
package Tp3; import
java.util.HashSet; import
java.util.Set;
public class Groupe {
private int ID;
private Set<Membre> membres;
// Constructeur public
Groupe(int ID) {
this.ID = ID;
this.membres = new HashSet<>();
}
// Getters et Setters public int
getID() { return ID;
}
public Set<Membre> getMembres() { return
membres;
}
public void addMembre(Membre membre)
{ membres.add(membre);
}
public void removeMembre(Membre membre)
{ membres.remove(membre);
}
// Méthode pour afficher les membres du groupe public void
afficherMembres() { for (Membre membre : membres) {
System.out.println("Membre ID: " + membre.getID() + ", Nom: " + membre.getNom());
}
}
}
classe Partenariat :
package Tp3; public class Partenariat
{ private Groupe groupe1; private
Groupe groupe2;
// Constructeur
public Partenariat(Groupe groupe1, Groupe groupe2) { this.groupe1 =
groupe1; this.groupe2 = groupe2;
}
// Getters et Setters public Groupe
getGroupe1() { return groupe1;
}
public Groupe getGroupe2() { return groupe2;
}
// Méthode pour afficher les détails du partenariat
public void afficherDetails() {
System.out.println("Partenariat entre les groupes " + groupe1.getID() + " et " + groupe2.getID());
}
}
classe Projet : package Tp3;
public class Projet {
// Définissez les détails du projet String nom;
// Constructeur public Projet(String
nom) { this.nom = nom;
}
// Méthode pour afficher les détails du projet
@Override
public String toString() {
return "Projet[nom='" + nom + "']";
}
}
classe Laboratoire :
package Tp3; import
java.util.ArrayList; import
java.util.List;
public class Laboratoire {
private List<Membre> membres = new ArrayList<>(); private
List<Groupe> groupes = new ArrayList<>(); private List<Partenariat>
partenariats = new ArrayList<>();
public void creerGroupesEtPartenariats() { for (Membre
membre : membres) {
Groupe groupe = new Groupe(membre.getGroupe().getID());
groupe.addMembre(membre);
groupes.add(groupe);
}
// Ajouter des partenariats
if (groupes.size() >= 2) {
Partenariat partenariat = new Partenariat(groupes.get(0),
groupes.get(1)); partenariats.add(partenariat);
}
}
public void afficherStructureDeRecherche()
{ System.out.println("Membres : "); for (Membre membre
: membres) {
membre.afficherDetails();
}
System.out.println("\nGroupes : "); for (Groupe
groupe : groupes) {
groupe.afficherMembres();
}
System.out.println("\nPartenariats : "); for (Partenariat
partenariat : partenariats) { partenariat.afficherDetails();
}
}
public void supprimerMembre(int membreID) { Membre
membreASupprimer = null; for (Membre membre :
membres) {
if (membre.getID() == membreID) {
membreASupprimer = membre; break;
}
}
if (membreASupprimer != null) {
membres.remove(membreASupprimer);
}
}
public void ajouterModifierProjetMembre(int membreID, String nouveauProjet) { for (Membre
membre : membres) { if (membre.getID() == membreID)
{ membre.setProjet_en_cours(nouveauProjet); break;
}
}
}
public static void main(String[] args) {
Laboratoire laboratoire = new Laboratoire();
// Ajouter seulement les membres à partir du fichier joint (CSV ou JSON)
// Implémentez la logique pour lire le fichier CSV ou JSON et ajouter les membres au laboratoire.
Groupe groupe1 = new Groupe(1);
Groupe groupe2 = new Groupe(2);
Membre membre1 = new Membre(1, "John Doe", groupe1, "Projet A"); Membre membre2 = new
Membre(2, "Jane Doe", groupe2, "Projet B");
laboratoire.membres.add(membre1); laboratoire.membres.add(membre2);
// Après l'ajout des membres, l’appel des méthodes nécessaires.
laboratoire.creerGroupesEtPartenariats(); laboratoire.afficherStructureDeRecherche();
laboratoire.supprimerMembre(1);
laboratoire.ajouterModifierProjetMembre(2, "Nouveau Projet");
laboratoire.afficherStructureDeRecherche();
}
}
Classe Produit :
package Tp4;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
public class ProduitEx3 {
public String id;
public String nom;
public String categorie;
public double prix;
public int anneFabric;
public List<Integer> evaluations ;
public ProduitEx3(String id ,String nom ,double prix,String categorie ,int anneFabric, Set<Integer>
set ) {
this.id = id;
this.nom = nom;
this.prix = prix;
this.categorie = categorie;
this.anneFabric = anneFabric;
this.evaluations.addAll(set);
}
@Override
public String toString() {
return "Produit [id=" + id + ", nom = " + nom + ", prix = " + prix + ", anneFabric = " +
anneFabric + "]";
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getNom() {
return nom;
}
public void setNom(String nom) {
this.nom = nom;
}
public double getPrix() {
return prix;
}
public void setPrix(double prix) {
this.prix = prix;
}
public int getAnneFabric() {
return anneFabric;
}
public void setAnneFabric(int anneFabric) {
this.anneFabric = anneFabric;
}
public List<Integer> getEvaluations() {
return evaluations;
}
public void setEvaluations(List<Integer> evaluations) {
this.evaluations = evaluations;
}
public String getCategorie() {
return categorie;
}
public void setCategorie(String categorie) {
this.categorie = categorie;
}
}
Fonction main :
package Tp4;
import java.util.HashSet;
import java.util.Set;
import java.util.stream.Collectors;
public class MainEx3 {
public static void main(String[] args) {
Set<ProduitEx3> produits = new HashSet<>();
// Création d'objets Produit pour le test
ProduitEx3 produit1 = new ProduitEx3("001", "Ordinateur", 999.99, "Electronique", 2022,
Set.of(4, 5, 3));
ProduitEx3 produit2 = new ProduitEx3("002", "Chaise", 49.99, "Meuble", 2020, Set.of(4, 4, 5));
ProduitEx3 produit3 = new ProduitEx3("003", "Livre", 14.99, "Librairie", 2021, Set.of(5, 5, 4));
produits.add(produit1);
produits.add(produit2);
produits.add(produit3);
// Stream 1
Set<ProduitEx3> produitsFiltres = produits.stream()
.filter(p -> p.getAnneFabric() > 2021)
.map(p -> {
// Modification de la forme des id
String newId = p.getCategorie().substring(0, 3).toUpperCase() + "-" + p.getId();
return new ProduitEx3(newId, p.getNom(), p.getPrix(), p.getCategorie(), p.getAnneFabric(),
(Set<Integer>) p.getEvaluations());
})
.collect(Collectors.toSet());
// Affichage des résultats
produitsFiltres.forEach(produit -> {System.out.println(produit);
// Stream 2
Set<ProduitEx3> produitsRemises = produitsFiltres.stream()
.filter(p -> p.getPrix() <= 2000 && p.getCategorie().equals("Electronique"))
.map(p -> {
double prixRemise = p.getPrix() * 0.85; // Remise de 15%
return new ProduitEx3(p.getId(), p.getNom(), prixRemise, p.getCategorie(),
p.getAnneFabric(), (Set<Integer>) p.getEvaluations());
})
.filter(p -> p.getCategorie().equals("Librairie"))
.collect(Collectors.toSet());
// Affichage des résultats
produitsFiltres.forEach(produit -> System.out.println(produit));
// Stream 3