From 738be287998dbca8a44941126fea0dd14d1a01eb Mon Sep 17 00:00:00 2001
From: sayebabu <simonsayebabu@gmail.com>
Date: Wed, 29 Nov 2023 15:05:29 +0100
Subject: [PATCH] oups

---
 DEV3.2/Arbre/Repertoires/build/Noeud.class    | Bin 0 -> 740 bytes
 .../Arbre/Repertoires/build/repertoires.class | Bin 0 -> 2171 bytes
 DEV3.2/Arbre/Repertoires/src/Noeud.java       |  50 ++++++++++
 DEV3.2/Arbre/Repertoires/src/repertoires.java |  52 ++++++++++
 DEV3.2/Florent/TD5/stub/exo3/Chef.java        |  75 +++++++++++++++
 DEV3.2/Florent/TD5/stub/exo3/Exemple.java     |  36 +++++++
 DEV3.2/Florent/TD5/stub/exo3/Exemple2.java    |  33 +++++++
 DEV3.2/Florent/TD5/stub/exo3/Exemple3.java    |  43 +++++++++
 DEV3.2/Florent/TD5/stub/exo3/Person.java      |  44 +++++++++
 DEV3.2/Florent/TD5/stub/exo3/Travailleur.java |  31 ++++++
 DEV3.2/Florent/TD5/stub/exo4/Chef.java        |  89 ++++++++++++++++++
 DEV3.2/Florent/TD5/stub/exo4/Exemple.java     |  36 +++++++
 DEV3.2/Florent/TD5/stub/exo4/Exemple2.java    |  33 +++++++
 DEV3.2/Florent/TD5/stub/exo4/Exemple3.java    |  43 +++++++++
 DEV3.2/Florent/TD5/stub/exo4/Person.java      |  44 +++++++++
 DEV3.2/Florent/TD5/stub/exo4/Travailleur.java |  31 ++++++
 DEV3.2/Florent/TD5/stub/exo5/Chef.java        |  48 ++++++++++
 DEV3.2/Florent/TD5/stub/exo5/Exemple.java     |  36 +++++++
 DEV3.2/Florent/TD5/stub/exo5/Exemple2.java    |  33 +++++++
 DEV3.2/Florent/TD5/stub/exo5/Exemple3.java    |  43 +++++++++
 DEV3.2/Florent/TD5/stub/exo5/Person.java      |  44 +++++++++
 DEV3.2/Florent/TD5/stub/exo5/Travailleur.java |  31 ++++++
 22 files changed, 875 insertions(+)
 create mode 100644 DEV3.2/Arbre/Repertoires/build/Noeud.class
 create mode 100644 DEV3.2/Arbre/Repertoires/build/repertoires.class
 create mode 100644 DEV3.2/Arbre/Repertoires/src/Noeud.java
 create mode 100644 DEV3.2/Arbre/Repertoires/src/repertoires.java
 create mode 100644 DEV3.2/Florent/TD5/stub/exo3/Chef.java
 create mode 100644 DEV3.2/Florent/TD5/stub/exo3/Exemple.java
 create mode 100644 DEV3.2/Florent/TD5/stub/exo3/Exemple2.java
 create mode 100644 DEV3.2/Florent/TD5/stub/exo3/Exemple3.java
 create mode 100644 DEV3.2/Florent/TD5/stub/exo3/Person.java
 create mode 100644 DEV3.2/Florent/TD5/stub/exo3/Travailleur.java
 create mode 100644 DEV3.2/Florent/TD5/stub/exo4/Chef.java
 create mode 100644 DEV3.2/Florent/TD5/stub/exo4/Exemple.java
 create mode 100644 DEV3.2/Florent/TD5/stub/exo4/Exemple2.java
 create mode 100644 DEV3.2/Florent/TD5/stub/exo4/Exemple3.java
 create mode 100644 DEV3.2/Florent/TD5/stub/exo4/Person.java
 create mode 100644 DEV3.2/Florent/TD5/stub/exo4/Travailleur.java
 create mode 100644 DEV3.2/Florent/TD5/stub/exo5/Chef.java
 create mode 100644 DEV3.2/Florent/TD5/stub/exo5/Exemple.java
 create mode 100644 DEV3.2/Florent/TD5/stub/exo5/Exemple2.java
 create mode 100644 DEV3.2/Florent/TD5/stub/exo5/Exemple3.java
 create mode 100644 DEV3.2/Florent/TD5/stub/exo5/Person.java
 create mode 100644 DEV3.2/Florent/TD5/stub/exo5/Travailleur.java

diff --git a/DEV3.2/Arbre/Repertoires/build/Noeud.class b/DEV3.2/Arbre/Repertoires/build/Noeud.class
new file mode 100644
index 0000000000000000000000000000000000000000..4dde9f5887828e16c6415cea80791c710dd21d27
GIT binary patch
literal 740
zcmZuvTWb?R6#h<b+pHU#=3>3HwbiyHDHva6OHo9hLVbu-?AxRn!-jMhwzCEQm4daP
z;1BReiQi0CT0>Ykd*;mfE;DC-|M~F?z)S4=D4^(}6rhZXpgvWXsy|clr2lR-)n`Uf
zIgH}S90`h@?nxCZsCw`N+(95HA168+3rev%*Mi3220k=t6i-4AcLhyX&P+7xze-c}
zc@SL~A2k#$-CBSKngUP9pHyrv1noJ^|NWr_v;*A3I<2TNRok6gdULyB_f$|FMw3{X
zETyHbWn6~?=Q}(K7f5o`-4h<^buuP?br8k+I6EKd^t~F*SgEOLk{O-8adriMCug%L
zf1=HNgXdW9beE}9bbI;EZC@)UnY$6R{&l;#<Q}OtOtSP$zm2Rb-<{~0y=d(4Rtp?&
z0b<9*jH5x5@xH4*K#6%74;de^@&ZNI-|k&QdIwkVdOuP7c#YL7)W16T24jOTV2!bX
zD(PDM1e@5(Y4%BCW&Pea)DOO+_2C9<pBb=0+$OspW1DL$ZCAp7*<!vh5jFu8SKQ0}
W?r`-4PZ<{>-Xi2Vn|4W1z}{cR^pm6j

literal 0
HcmV?d00001

diff --git a/DEV3.2/Arbre/Repertoires/build/repertoires.class b/DEV3.2/Arbre/Repertoires/build/repertoires.class
new file mode 100644
index 0000000000000000000000000000000000000000..36a1225fdeb98a9da39af6f23f56ee55cceb0653
GIT binary patch
literal 2171
zcmaJ?TUQfT7~O|l28K~C8Zm-O5iPl3P+O~nT9s<0Cebz)iq`6o9AF@sNoOV$dVBIm
zw6DI{)u-AAq`H=?PkrcX|3d#j-@06F?LL#BL0DxiPR^Y9zJ2!I-*?XZ_V44T0M6qZ
z9c>6{2pfnXD$u=Tu9%sMX)k21%`M52FA$xuY|B3<5E@BLYiJiRf*{MuT(&AwhX!3`
zcM8Ntaxe3XzH8YF*~D}Qc44=ME(6`@*|J4(&GTiI$WEOb#Tv=Pz0ORZ`O>Ur+p$ML
zS37xwrYpyF#IR38pMm{q%RQT1T5<%mnnI}9Iu4*;!+?Q<I3&>N%9?b2$8x175Rt33
ziX+h1WZe{$P2>uWte3MYdC<UX7!ufJ&d*z=Md@B}=UhobBh4UX$?ztPz_&}QC0X+=
z$5y(J8F*cZ4oTP5aRdniNu-#+ApN}bJad6ydq)!6eN(=U8aR%OKu5*${J;W%o{_|@
z7e=YItcDX56L3~ZrwqKIw$Qjm!K|`CW6;&`mVq-3Elc!Ux|i&E)Ap6haiua#e>PQ3
zDOqpRnpewtv2In$l2RrRYR7qjw!uO5aM8dd-et3xwVJfc0;4;%!ZwvnI9fe{%Ld+4
zyxV=J(K<S&@V<tt26D)6?VF&rC~?KC)aA8#fn%-PH9D7de3gB+mrZ}oz;%2;ZB=tw
zPC9nU^k*!8ku%SyA8d>>tzgYI-j1~cymGl{;08WwRJh?V5&JePT=%U?=7Q^*YdMyb
zx@YjQhFJqQaci@Sw#Lv9i^Vd1#}(MO1!t<cp6$eKe5&D&fx9pTdIQ}7%w`C^S~R_a
zT;)0AIliefN(Rbc`-Sabd21IoJ>=U-r_7+PoMp>Gy*ek|8|GX^rBzMKR+O6U7&QNj
zL(d~q^v%+8-mC@j8Y%>NrE}?0(W$#7srr}|ZaJREl?E<dbR6IFU9*;#{-RU%x}x|@
zhYL@GuL@Zg7=Br1%U*GoWv0QRQQOOAiPo(NeA`;pW?%#KifNa5y$t6ZXSrU>ZZCDq
z%9g|%Yc;t;c&i~h^kNfY(yUa9EG=)i&v}l7;Ke#++tQt^n4Tvo@C$*X+qCUOS;JQX
zhyFj5XS1P?NBsaVef1XsFAhXG&hzOYe}!62K7x42iNFF!^%@AF1B<XYSD`+_Tme!~
zpv@*jCm*3B_Y;iX-gWFvZ6KacZ{Y9)?B?Rp)H+7E{4jtSz+v8kZ2|BQ+6mEtPUzSJ
zb)WCT0D2hFg+YERlIX<}BQ&(#(Qrg(7;o_=gYUV&O23|5M>_WeW3!x)$D8@oub4;`
zMxUMzhfYUgky!XX(xb7+$?>R)iboq^<62ycM@e-Zr_*T;_afrK^WW1y60<??7^wmK
zXiy(X?dNAFjufpsi+<j91GvKH0*NY$H1s*CMKx#|mNkrVWIgd0GDP7Qq{(`S*vidl
zGPHrSFFjUYVPKeh9i>X%#m)F1s4~JgGfyxv`v~Xqp>qfO@1r~2`_4Kp%-jo+^Pe=H
z0xl&taOE)>fo9W-57#kW82uTa2z-Y)CvyV7U~D`b5BG=fa`y+%|4;;4#U^NJlJ2J{
zJ4uP7q(6qMIDsNgVj8Ccu`z`Ifv#afJVVdlIH2M7Gl~zP8o=3b_}fkeHU6()l}|cn
KYxojhBmN(5IR_X3

literal 0
HcmV?d00001

diff --git a/DEV3.2/Arbre/Repertoires/src/Noeud.java b/DEV3.2/Arbre/Repertoires/src/Noeud.java
new file mode 100644
index 0000000..a4455a7
--- /dev/null
+++ b/DEV3.2/Arbre/Repertoires/src/Noeud.java
@@ -0,0 +1,50 @@
+import java.util.ArrayList;
+
+/**
+ * La classe Noeud représente un nœud dans une structure d'arbre.
+ * Chaque nœud possède un identifiant unique (ID), un nom, un rang, et une liste d'enfants.
+ */
+public class Noeud {
+
+
+    /** Le nom du nœud */
+    public String name;
+
+    /** La liste des enfants du nœud */
+    public ArrayList<Noeud> enfants;
+
+   
+    public Noeud(String nom) {
+        this.name = nom;
+        this.enfants = new ArrayList<>();
+    }
+
+    /**
+     * Ajoute un nœud en tant qu'enfant du nœud actuel.
+     *
+     * @param enfant Le nœud à ajouter en tant qu'enfant.
+     */
+    public void ajouterEnfant(Noeud enfant) {
+        this.enfants.add(enfant);
+    }
+
+    /**
+     * Obtient la liste des enfants du nœud.
+     *
+     * @return La liste des enfants du nœud.
+     */
+    public ArrayList<Noeud> getEnfants() {
+        return enfants;
+    }
+
+
+    /**
+     * Obtient une représentation textuelle du nœud (son nom).
+     *
+     * @return Le nom du nœud.
+     */
+    @Override
+    public String toString() {
+        return name;
+    }
+}
\ No newline at end of file
diff --git a/DEV3.2/Arbre/Repertoires/src/repertoires.java b/DEV3.2/Arbre/Repertoires/src/repertoires.java
new file mode 100644
index 0000000..9ea36b9
--- /dev/null
+++ b/DEV3.2/Arbre/Repertoires/src/repertoires.java
@@ -0,0 +1,52 @@
+import java.io.*; 
+  
+public class repertoires { 
+    public static void main(String args[]) 
+    { 
+  
+        try { 
+  
+            File f = new File(args[0]); 
+            System.out.println("Files are:"); 
+  
+            Noeud test = explo(f);
+            afficherArbre(test);
+        } 
+        catch (Exception e) { 
+            System.err.println(e.getMessage()); 
+        } 
+    } 
+
+    private static Noeud explo(File f)
+    {
+        File[] files = f.listFiles();
+        Noeud root = new Noeud(f.getName());
+        if (files != null) {
+            for (File fi : files) {
+                Noeud node = new Noeud(fi.getName());
+                node.ajouterEnfant(explo(fi));
+                root.ajouterEnfant(root);
+            }
+        }
+        
+        return root;
+    }
+
+    public static void afficherArbre(Noeud racine) {
+        afficherArbre(racine, 0);
+    }
+
+    private static void afficherArbre(Noeud noeud, int niveau) {
+        // Affiche le nœud actuel avec une indentation basée sur le niveau
+        StringBuilder indentation = new StringBuilder();
+        for (int i = 0; i < niveau; i++) {
+            indentation.append("  "); // Deux espaces par niveau pour l'indentation
+        }
+        System.out.println(indentation.toString() + noeud);
+
+        // Appelle récursivement la méthode pour chaque enfant du nœud actuel
+        for (Noeud enfant : noeud.getEnfants()) {
+            afficherArbre(enfant, niveau + 1);
+        }
+    }
+} 
\ No newline at end of file
diff --git a/DEV3.2/Florent/TD5/stub/exo3/Chef.java b/DEV3.2/Florent/TD5/stub/exo3/Chef.java
new file mode 100644
index 0000000..c690b36
--- /dev/null
+++ b/DEV3.2/Florent/TD5/stub/exo3/Chef.java
@@ -0,0 +1,75 @@
+import java.util.ArrayList;
+import java.util.List;
+
+/** feuille du motif composite */
+public class Chef extends Person {
+
+    private List<Person> subalternes = new ArrayList<Person>(); 
+
+    public boolean addSubalterne(Person p){
+        return subalternes.add(p);
+    }
+
+
+    
+    /** constructeur
+     *
+     * @param n fun factor
+     *
+     */ 
+    public Chef(int n){
+        super(n);
+        // d'autres choses peut-être.
+    }
+
+    
+    /** 
+     * La meilleure fête avec moi, c'est la meilleure fête sans mes subalternes pour eux plus moi. 
+     *
+     * @return retourne la valeur de la meilleure fête en invitant seulement les gens dont cette personne est le ou la supérieure hiérarchique, mais pas elle.
+     *
+     */ 
+    public int bestPartyWithoutMe(){
+        int output = 0;
+        for (Person person : subalternes) {
+            output += person.bestParty();
+        }
+        return output;
+    }
+
+    /** 
+     * La meilleure fête avec moi, c'est la meilleure fête sans mes subalternes pour eux plus moi. 
+     *
+     * @return retourne la valeur de la meilleure fête en invitant seulement les gens dont cette personne est le ou la supérieure hiérarchique, mais pas elle.
+     *
+     */ 
+    private int bestPartyWithMe(){
+        int output = getFunFactor();
+        for (Person person : subalternes) {
+            output += person.bestPartyWithoutMe();
+        }
+        return output; 
+    }
+
+    /**
+     *  La meilleure fête est soit sans moi (c'est l'union des meilleures fêtes de mes subalternes). 
+     *  soit c'est la meilleure fête avec moi.
+     *
+     * @return la valeur de la meilleure fête en invitant seulement les gens dont cette personne est le ou la supérieure hiérarchique (peut-être avec elle).
+     *
+     */ 
+    public int bestParty(){
+        int avec,sans;
+        avec = this.bestPartyWithMe();
+        sans = this.bestPartyWithoutMe();
+        System.err.println("avec:"+avec+"\nsans:"+sans);
+        if (avec > sans) {
+            return avec;
+        } else {
+            return sans;
+        }
+    }
+    
+}
+
+
diff --git a/DEV3.2/Florent/TD5/stub/exo3/Exemple.java b/DEV3.2/Florent/TD5/stub/exo3/Exemple.java
new file mode 100644
index 0000000..9a23013
--- /dev/null
+++ b/DEV3.2/Florent/TD5/stub/exo3/Exemple.java
@@ -0,0 +1,36 @@
+public class Exemple {
+     public static void main(String[] args) {
+         // bar 2
+         //   foo 5
+         //     titi 4
+         //     tata 4
+         //     toto 6
+         //   tete 6
+
+         Travailleur titi = new Travailleur(4);
+         Travailleur tata = new Travailleur(4);
+         Travailleur toto = new Travailleur(6);
+
+         Chef foo = new Chef(5);
+         foo.addSubalterne(titi);
+         foo.addSubalterne(tata);
+         foo.addSubalterne(toto);
+         System.out.println(foo.bestParty());
+         System.out.println(foo.bestPartyWithoutMe());
+         
+         Travailleur tete = new Travailleur(6);
+         // System.out.println(tete.bestParty());
+         // System.out.println(tete.bestPartyWithoutMe());
+
+         Chef bar = new Chef(2);
+         bar.addSubalterne(foo);
+         bar.addSubalterne(tete);
+         System.out.println(bar.bestParty());
+         //System.out.println(bar.bestPartyWithoutMe());
+     }
+    
+}
+
+
+
+
diff --git a/DEV3.2/Florent/TD5/stub/exo3/Exemple2.java b/DEV3.2/Florent/TD5/stub/exo3/Exemple2.java
new file mode 100644
index 0000000..808a518
--- /dev/null
+++ b/DEV3.2/Florent/TD5/stub/exo3/Exemple2.java
@@ -0,0 +1,33 @@
+public class Exemple2 {
+     public static void main(String[] args) {
+         // Exemple inspiré question Thibault B.
+         // 1
+         //   10
+         //       1
+         //         1
+         //           10
+         //              3
+         //              4
+
+         Travailleur a = new Travailleur(3);
+         Travailleur b = new Travailleur(4);
+         Chef c = new Chef(10);
+         c.addSubalterne(a);
+         c.addSubalterne(b);
+         Chef d = new Chef(1);
+         d.addSubalterne(c);
+         Chef e = new Chef(1);
+         e.addSubalterne(d);
+         Chef f = new Chef(10);
+         f.addSubalterne(e);
+         Chef g = new Chef(1);
+         g.addSubalterne(f);
+         
+         System.out.println(g.bestParty());
+     }
+    
+}
+
+
+
+
diff --git a/DEV3.2/Florent/TD5/stub/exo3/Exemple3.java b/DEV3.2/Florent/TD5/stub/exo3/Exemple3.java
new file mode 100644
index 0000000..55651c9
--- /dev/null
+++ b/DEV3.2/Florent/TD5/stub/exo3/Exemple3.java
@@ -0,0 +1,43 @@
+public class Exemple3 {
+     public static void main(String[] args) {
+
+         Travailleur a = new Travailleur(3);
+         Travailleur b = new Travailleur(4);
+         Chef c = new Chef(10);
+         c.addSubalterne(a);
+         c.addSubalterne(b);
+         Chef d = new Chef(1);
+         d.addSubalterne(c);
+         Chef e = new Chef(1);
+         e.addSubalterne(d);
+         Chef f = new Chef(10);
+         f.addSubalterne(e);
+         Chef g = new Chef(1);
+         g.addSubalterne(f);
+
+         Travailleur titi = new Travailleur(4);
+         Travailleur tata = new Travailleur(4);
+         Travailleur toto = new Travailleur(6);
+         Chef foo = new Chef(5);
+         foo.addSubalterne(titi);
+         foo.addSubalterne(tata);
+         foo.addSubalterne(toto);
+         Chef bar = new Chef(2);
+         bar.addSubalterne(foo);
+         Travailleur tete = new Travailleur(6);
+         bar.addSubalterne(tete);
+         
+         Chef x = new Chef(2);
+         x.addSubalterne(g);
+         x.addSubalterne(bar);
+         Chef y = new Chef(39);
+         y.addSubalterne(x);
+         
+         System.out.println(y.bestParty());
+     }
+    
+}
+
+
+
+
diff --git a/DEV3.2/Florent/TD5/stub/exo3/Person.java b/DEV3.2/Florent/TD5/stub/exo3/Person.java
new file mode 100644
index 0000000..b4f1951
--- /dev/null
+++ b/DEV3.2/Florent/TD5/stub/exo3/Person.java
@@ -0,0 +1,44 @@
+
+/** "Les personnes sont soit des chefs, soit des travailleurs" */
+public abstract class  Person{
+    /**
+    * valeur indiquant le niveau de coolitude de la personne
+    */
+    private int funFactor;
+
+    /**
+     * @return  la valeur indiquant le niveau de coolitude de la personne. plus cete valeur est grande, plus la personne contribue à améliorer l'ambiance dans une fête.
+     *
+     */
+    public int getFunFactor(){
+        return this.funFactor;
+    }
+
+    /**
+     * constructeur 
+     *
+     * <b>NB</b>. Cette méthode ne peut pas être appelé directement pour instancier un objet car la classe est abstraite, mais sert dans les constructeurs de classes dérivées.
+     *
+     * @see Travailleur, Chef
+     */
+    // 
+    public Person(int n){
+        if (n < 0)
+            throw new IllegalArgumentException("Le fun facteur est positif ou nul, vous avez proposé " + n);
+        this.funFactor = n;
+    }
+        
+    /** 
+     *
+     * @return retourne la valeur de la meilleure fête en invitant seulement les gens dont cette personne est le ou la supérieure hiérarchique, mais pas elle.
+     */ 
+    public abstract int bestPartyWithoutMe();
+
+
+    /** 
+     *
+     * @return la valeur de la meilleure fête en invitant seulement les gens dont cette personne est le ou la supérieure hiérarchique (peut-être avec elle).
+     */ 
+    public abstract int bestParty();
+}
+
diff --git a/DEV3.2/Florent/TD5/stub/exo3/Travailleur.java b/DEV3.2/Florent/TD5/stub/exo3/Travailleur.java
new file mode 100644
index 0000000..b042242
--- /dev/null
+++ b/DEV3.2/Florent/TD5/stub/exo3/Travailleur.java
@@ -0,0 +1,31 @@
+/** feuille du motif composite */
+public class Travailleur extends Person {
+
+    /** constructeur
+     *
+     * @param n fun factor
+     *
+     */ 
+    public Travailleur(int n){
+        super(n);
+    }
+    
+    /** 
+     *
+     * @return fête sans le travailleur
+     */ 
+    public int bestPartyWithoutMe(){
+        return 0;
+    }
+    
+    /**
+     * @return fête avec le travailleur
+     */
+    public int bestParty(){
+        return getFunFactor();
+    }
+    
+    
+}
+
+
diff --git a/DEV3.2/Florent/TD5/stub/exo4/Chef.java b/DEV3.2/Florent/TD5/stub/exo4/Chef.java
new file mode 100644
index 0000000..6ef3dbb
--- /dev/null
+++ b/DEV3.2/Florent/TD5/stub/exo4/Chef.java
@@ -0,0 +1,89 @@
+import java.util.ArrayList;
+import java.util.List;
+
+/** feuille du motif composite */
+public class Chef extends Person {
+
+    private List<Person> subalternes = new ArrayList<Person>(); 
+    private Integer avec,sans = null;
+
+    public boolean addSubalterne(Person p){
+        return subalternes.add(p);
+    }
+
+
+    
+    /** constructeur
+     *
+     * @param n fun factor
+     *
+     */ 
+    public Chef(int n){
+        super(n);
+        // d'autres choses peut-être.
+    }
+
+    
+    /** 
+     * La meilleure fête avec moi, c'est la meilleure fête sans mes subalternes pour eux plus moi. 
+     *
+     * @return retourne la valeur de la meilleure fête en invitant seulement les gens dont cette personne est le ou la supérieure hiérarchique, mais pas elle.
+     *
+     */ 
+    public int bestPartyWithoutMe(){
+        if (this.sans != null) {
+            return this.sans;
+        }
+        int output = 0;
+        for (Person person : subalternes) {
+            output += person.bestParty();
+        }
+        this.sans = output;
+        return output;
+    }
+
+    /** 
+     * La meilleure fête avec moi, c'est la meilleure fête sans mes subalternes pour eux plus moi. 
+     *
+     * @return retourne la valeur de la meilleure fête en invitant seulement les gens dont cette personne est le ou la supérieure hiérarchique, mais pas elle.
+     *
+     */ 
+    private int bestPartyWithMe(){
+        if (this.avec != null) {
+            return this.avec;
+        }
+        int output = getFunFactor();
+        for (Person person : subalternes) {
+            output += person.bestPartyWithoutMe();
+        }
+        this.avec = output;
+        return output; 
+    }
+
+    /**
+     *  La meilleure fête est soit sans moi (c'est l'union des meilleures fêtes de mes subalternes). 
+     *  soit c'est la meilleure fête avec moi.
+     *
+     * @return la valeur de la meilleure fête en invitant seulement les gens dont cette personne est le ou la supérieure hiérarchique (peut-être avec elle).
+     *
+     */ 
+    public int bestParty(){
+        if (this.avec != null && this.sans != null) {
+            if (this.avec > sans) {
+                return this.avec;
+            } else {
+                return this.sans;
+            }
+        }
+        this.avec = this.bestPartyWithMe();
+        this.sans = this.bestPartyWithoutMe();
+        if (this.avec > this.sans) {
+            return this.avec;
+        } else {
+            return this.sans;
+        }
+        
+    }
+}
+
+
diff --git a/DEV3.2/Florent/TD5/stub/exo4/Exemple.java b/DEV3.2/Florent/TD5/stub/exo4/Exemple.java
new file mode 100644
index 0000000..9a23013
--- /dev/null
+++ b/DEV3.2/Florent/TD5/stub/exo4/Exemple.java
@@ -0,0 +1,36 @@
+public class Exemple {
+     public static void main(String[] args) {
+         // bar 2
+         //   foo 5
+         //     titi 4
+         //     tata 4
+         //     toto 6
+         //   tete 6
+
+         Travailleur titi = new Travailleur(4);
+         Travailleur tata = new Travailleur(4);
+         Travailleur toto = new Travailleur(6);
+
+         Chef foo = new Chef(5);
+         foo.addSubalterne(titi);
+         foo.addSubalterne(tata);
+         foo.addSubalterne(toto);
+         System.out.println(foo.bestParty());
+         System.out.println(foo.bestPartyWithoutMe());
+         
+         Travailleur tete = new Travailleur(6);
+         // System.out.println(tete.bestParty());
+         // System.out.println(tete.bestPartyWithoutMe());
+
+         Chef bar = new Chef(2);
+         bar.addSubalterne(foo);
+         bar.addSubalterne(tete);
+         System.out.println(bar.bestParty());
+         //System.out.println(bar.bestPartyWithoutMe());
+     }
+    
+}
+
+
+
+
diff --git a/DEV3.2/Florent/TD5/stub/exo4/Exemple2.java b/DEV3.2/Florent/TD5/stub/exo4/Exemple2.java
new file mode 100644
index 0000000..808a518
--- /dev/null
+++ b/DEV3.2/Florent/TD5/stub/exo4/Exemple2.java
@@ -0,0 +1,33 @@
+public class Exemple2 {
+     public static void main(String[] args) {
+         // Exemple inspiré question Thibault B.
+         // 1
+         //   10
+         //       1
+         //         1
+         //           10
+         //              3
+         //              4
+
+         Travailleur a = new Travailleur(3);
+         Travailleur b = new Travailleur(4);
+         Chef c = new Chef(10);
+         c.addSubalterne(a);
+         c.addSubalterne(b);
+         Chef d = new Chef(1);
+         d.addSubalterne(c);
+         Chef e = new Chef(1);
+         e.addSubalterne(d);
+         Chef f = new Chef(10);
+         f.addSubalterne(e);
+         Chef g = new Chef(1);
+         g.addSubalterne(f);
+         
+         System.out.println(g.bestParty());
+     }
+    
+}
+
+
+
+
diff --git a/DEV3.2/Florent/TD5/stub/exo4/Exemple3.java b/DEV3.2/Florent/TD5/stub/exo4/Exemple3.java
new file mode 100644
index 0000000..55651c9
--- /dev/null
+++ b/DEV3.2/Florent/TD5/stub/exo4/Exemple3.java
@@ -0,0 +1,43 @@
+public class Exemple3 {
+     public static void main(String[] args) {
+
+         Travailleur a = new Travailleur(3);
+         Travailleur b = new Travailleur(4);
+         Chef c = new Chef(10);
+         c.addSubalterne(a);
+         c.addSubalterne(b);
+         Chef d = new Chef(1);
+         d.addSubalterne(c);
+         Chef e = new Chef(1);
+         e.addSubalterne(d);
+         Chef f = new Chef(10);
+         f.addSubalterne(e);
+         Chef g = new Chef(1);
+         g.addSubalterne(f);
+
+         Travailleur titi = new Travailleur(4);
+         Travailleur tata = new Travailleur(4);
+         Travailleur toto = new Travailleur(6);
+         Chef foo = new Chef(5);
+         foo.addSubalterne(titi);
+         foo.addSubalterne(tata);
+         foo.addSubalterne(toto);
+         Chef bar = new Chef(2);
+         bar.addSubalterne(foo);
+         Travailleur tete = new Travailleur(6);
+         bar.addSubalterne(tete);
+         
+         Chef x = new Chef(2);
+         x.addSubalterne(g);
+         x.addSubalterne(bar);
+         Chef y = new Chef(39);
+         y.addSubalterne(x);
+         
+         System.out.println(y.bestParty());
+     }
+    
+}
+
+
+
+
diff --git a/DEV3.2/Florent/TD5/stub/exo4/Person.java b/DEV3.2/Florent/TD5/stub/exo4/Person.java
new file mode 100644
index 0000000..b4f1951
--- /dev/null
+++ b/DEV3.2/Florent/TD5/stub/exo4/Person.java
@@ -0,0 +1,44 @@
+
+/** "Les personnes sont soit des chefs, soit des travailleurs" */
+public abstract class  Person{
+    /**
+    * valeur indiquant le niveau de coolitude de la personne
+    */
+    private int funFactor;
+
+    /**
+     * @return  la valeur indiquant le niveau de coolitude de la personne. plus cete valeur est grande, plus la personne contribue à améliorer l'ambiance dans une fête.
+     *
+     */
+    public int getFunFactor(){
+        return this.funFactor;
+    }
+
+    /**
+     * constructeur 
+     *
+     * <b>NB</b>. Cette méthode ne peut pas être appelé directement pour instancier un objet car la classe est abstraite, mais sert dans les constructeurs de classes dérivées.
+     *
+     * @see Travailleur, Chef
+     */
+    // 
+    public Person(int n){
+        if (n < 0)
+            throw new IllegalArgumentException("Le fun facteur est positif ou nul, vous avez proposé " + n);
+        this.funFactor = n;
+    }
+        
+    /** 
+     *
+     * @return retourne la valeur de la meilleure fête en invitant seulement les gens dont cette personne est le ou la supérieure hiérarchique, mais pas elle.
+     */ 
+    public abstract int bestPartyWithoutMe();
+
+
+    /** 
+     *
+     * @return la valeur de la meilleure fête en invitant seulement les gens dont cette personne est le ou la supérieure hiérarchique (peut-être avec elle).
+     */ 
+    public abstract int bestParty();
+}
+
diff --git a/DEV3.2/Florent/TD5/stub/exo4/Travailleur.java b/DEV3.2/Florent/TD5/stub/exo4/Travailleur.java
new file mode 100644
index 0000000..b042242
--- /dev/null
+++ b/DEV3.2/Florent/TD5/stub/exo4/Travailleur.java
@@ -0,0 +1,31 @@
+/** feuille du motif composite */
+public class Travailleur extends Person {
+
+    /** constructeur
+     *
+     * @param n fun factor
+     *
+     */ 
+    public Travailleur(int n){
+        super(n);
+    }
+    
+    /** 
+     *
+     * @return fête sans le travailleur
+     */ 
+    public int bestPartyWithoutMe(){
+        return 0;
+    }
+    
+    /**
+     * @return fête avec le travailleur
+     */
+    public int bestParty(){
+        return getFunFactor();
+    }
+    
+    
+}
+
+
diff --git a/DEV3.2/Florent/TD5/stub/exo5/Chef.java b/DEV3.2/Florent/TD5/stub/exo5/Chef.java
new file mode 100644
index 0000000..38ed1b9
--- /dev/null
+++ b/DEV3.2/Florent/TD5/stub/exo5/Chef.java
@@ -0,0 +1,48 @@
+import java.util.LinkedHashSet;
+import java.util.Objects;
+
+/** feuille du motif composite */
+public class Chef extends Person {
+
+
+    public boolean addSubalterne(Person p){
+        
+    }
+
+
+    
+    /** constructeur
+     *
+     * @param n fun factor
+     *
+     */ 
+    public Chef(int n){
+        super(n);
+        // d'autres choses peut-être.
+    }
+
+    
+    /** 
+     * La meilleure fête avec moi, c'est la meilleure fête sans mes subalternes pour eux plus moi. 
+     *
+     * @return retourne la valeur de la meilleure fête en invitant seulement les gens dont cette personne est le ou la supérieure hiérarchique, mais pas elle.
+     *
+     */ 
+    public int bestPartyWithoutMe(){
+        // to do
+    }
+
+    /**
+     *  La meilleure fête est soit sans moi (c'est l'union des meilleures fêtes de mes subalternes). 
+     *  soit c'est la meilleure fête avec moi.
+     *
+     * @return la valeur de la meilleure fête en invitant seulement les gens dont cette personne est le ou la supérieure hiérarchique (peut-être avec elle).
+     *
+     */ 
+    public int bestParty(){
+        // to do
+    }
+    
+}
+
+
diff --git a/DEV3.2/Florent/TD5/stub/exo5/Exemple.java b/DEV3.2/Florent/TD5/stub/exo5/Exemple.java
new file mode 100644
index 0000000..9a23013
--- /dev/null
+++ b/DEV3.2/Florent/TD5/stub/exo5/Exemple.java
@@ -0,0 +1,36 @@
+public class Exemple {
+     public static void main(String[] args) {
+         // bar 2
+         //   foo 5
+         //     titi 4
+         //     tata 4
+         //     toto 6
+         //   tete 6
+
+         Travailleur titi = new Travailleur(4);
+         Travailleur tata = new Travailleur(4);
+         Travailleur toto = new Travailleur(6);
+
+         Chef foo = new Chef(5);
+         foo.addSubalterne(titi);
+         foo.addSubalterne(tata);
+         foo.addSubalterne(toto);
+         System.out.println(foo.bestParty());
+         System.out.println(foo.bestPartyWithoutMe());
+         
+         Travailleur tete = new Travailleur(6);
+         // System.out.println(tete.bestParty());
+         // System.out.println(tete.bestPartyWithoutMe());
+
+         Chef bar = new Chef(2);
+         bar.addSubalterne(foo);
+         bar.addSubalterne(tete);
+         System.out.println(bar.bestParty());
+         //System.out.println(bar.bestPartyWithoutMe());
+     }
+    
+}
+
+
+
+
diff --git a/DEV3.2/Florent/TD5/stub/exo5/Exemple2.java b/DEV3.2/Florent/TD5/stub/exo5/Exemple2.java
new file mode 100644
index 0000000..808a518
--- /dev/null
+++ b/DEV3.2/Florent/TD5/stub/exo5/Exemple2.java
@@ -0,0 +1,33 @@
+public class Exemple2 {
+     public static void main(String[] args) {
+         // Exemple inspiré question Thibault B.
+         // 1
+         //   10
+         //       1
+         //         1
+         //           10
+         //              3
+         //              4
+
+         Travailleur a = new Travailleur(3);
+         Travailleur b = new Travailleur(4);
+         Chef c = new Chef(10);
+         c.addSubalterne(a);
+         c.addSubalterne(b);
+         Chef d = new Chef(1);
+         d.addSubalterne(c);
+         Chef e = new Chef(1);
+         e.addSubalterne(d);
+         Chef f = new Chef(10);
+         f.addSubalterne(e);
+         Chef g = new Chef(1);
+         g.addSubalterne(f);
+         
+         System.out.println(g.bestParty());
+     }
+    
+}
+
+
+
+
diff --git a/DEV3.2/Florent/TD5/stub/exo5/Exemple3.java b/DEV3.2/Florent/TD5/stub/exo5/Exemple3.java
new file mode 100644
index 0000000..55651c9
--- /dev/null
+++ b/DEV3.2/Florent/TD5/stub/exo5/Exemple3.java
@@ -0,0 +1,43 @@
+public class Exemple3 {
+     public static void main(String[] args) {
+
+         Travailleur a = new Travailleur(3);
+         Travailleur b = new Travailleur(4);
+         Chef c = new Chef(10);
+         c.addSubalterne(a);
+         c.addSubalterne(b);
+         Chef d = new Chef(1);
+         d.addSubalterne(c);
+         Chef e = new Chef(1);
+         e.addSubalterne(d);
+         Chef f = new Chef(10);
+         f.addSubalterne(e);
+         Chef g = new Chef(1);
+         g.addSubalterne(f);
+
+         Travailleur titi = new Travailleur(4);
+         Travailleur tata = new Travailleur(4);
+         Travailleur toto = new Travailleur(6);
+         Chef foo = new Chef(5);
+         foo.addSubalterne(titi);
+         foo.addSubalterne(tata);
+         foo.addSubalterne(toto);
+         Chef bar = new Chef(2);
+         bar.addSubalterne(foo);
+         Travailleur tete = new Travailleur(6);
+         bar.addSubalterne(tete);
+         
+         Chef x = new Chef(2);
+         x.addSubalterne(g);
+         x.addSubalterne(bar);
+         Chef y = new Chef(39);
+         y.addSubalterne(x);
+         
+         System.out.println(y.bestParty());
+     }
+    
+}
+
+
+
+
diff --git a/DEV3.2/Florent/TD5/stub/exo5/Person.java b/DEV3.2/Florent/TD5/stub/exo5/Person.java
new file mode 100644
index 0000000..b4f1951
--- /dev/null
+++ b/DEV3.2/Florent/TD5/stub/exo5/Person.java
@@ -0,0 +1,44 @@
+
+/** "Les personnes sont soit des chefs, soit des travailleurs" */
+public abstract class  Person{
+    /**
+    * valeur indiquant le niveau de coolitude de la personne
+    */
+    private int funFactor;
+
+    /**
+     * @return  la valeur indiquant le niveau de coolitude de la personne. plus cete valeur est grande, plus la personne contribue à améliorer l'ambiance dans une fête.
+     *
+     */
+    public int getFunFactor(){
+        return this.funFactor;
+    }
+
+    /**
+     * constructeur 
+     *
+     * <b>NB</b>. Cette méthode ne peut pas être appelé directement pour instancier un objet car la classe est abstraite, mais sert dans les constructeurs de classes dérivées.
+     *
+     * @see Travailleur, Chef
+     */
+    // 
+    public Person(int n){
+        if (n < 0)
+            throw new IllegalArgumentException("Le fun facteur est positif ou nul, vous avez proposé " + n);
+        this.funFactor = n;
+    }
+        
+    /** 
+     *
+     * @return retourne la valeur de la meilleure fête en invitant seulement les gens dont cette personne est le ou la supérieure hiérarchique, mais pas elle.
+     */ 
+    public abstract int bestPartyWithoutMe();
+
+
+    /** 
+     *
+     * @return la valeur de la meilleure fête en invitant seulement les gens dont cette personne est le ou la supérieure hiérarchique (peut-être avec elle).
+     */ 
+    public abstract int bestParty();
+}
+
diff --git a/DEV3.2/Florent/TD5/stub/exo5/Travailleur.java b/DEV3.2/Florent/TD5/stub/exo5/Travailleur.java
new file mode 100644
index 0000000..7df408b
--- /dev/null
+++ b/DEV3.2/Florent/TD5/stub/exo5/Travailleur.java
@@ -0,0 +1,31 @@
+/** feuille du motif composite */
+public class Travailleur extends Person {
+
+    /** constructeur
+     *
+     * @param n fun factor
+     *
+     */ 
+    public Travailleur(int n){
+        super(n);
+    }
+    
+    /** 
+     *
+     * @return fête sans le travailleur
+     */ 
+    public int bestPartyWithoutMe(){
+        // return null;
+    }
+    
+    /**
+     * @return fête avec le travailleur
+     */
+    public int bestParty(){
+        // return null;
+    }
+    
+    
+}
+
+