Vous êtes sur la page 1sur 10

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

Vous aimerez peut-être aussi