<divclass="inheritance"title="Inheritance Tree"><ahref="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/lang/Object.html"title="class or interface in java.lang"class="external-link">java.lang.Object</a>
<dd><code><ahref="../API/AbstractGroupeFactory.html"title="interface in API">AbstractGroupeFactory</a></code></dd>
</dl>
<hr>
<divclass="type-signature"><spanclass="modifiers">public class </span><spanclass="element-name type-name-label">AbstractGroupeFactoryNP</span>
<spanclass="extends-implements">extends <ahref="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/lang/Object.html"title="class or interface in java.lang"class="external-link">Object</a>
implements <ahref="../API/AbstractGroupeFactory.html"title="interface in API">AbstractGroupeFactory</a></span></div>
<divclass="block">Usine abstraite gérant l'ensemble des groupes.</div>
<ahref="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/lang/String.html"title="class or interface in java.lang"class="external-link">String</a> name,
int min,
int max)</code></div>
<divclass="col-last even-row-color">
<divclass="block">Le constructeur fabrique le groupe promotion vide.</div>
<divclass="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><ahref="#createGroupe(API.Groupe,java.lang.String,int,int)"class="member-name-link">createGroupe</a><wbr>(<ahref="../API/Groupe.html"title="interface in API">Groupe</a> pere,
<ahref="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/lang/String.html"title="class or interface in java.lang"class="external-link">String</a> name,
<divclass="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><ahref="#createPartition(API.Groupe,java.lang.String,int)"class="member-name-link">createPartition</a><wbr>(<ahref="../API/Groupe.html"title="interface in API">Groupe</a> pere,
<ahref="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/lang/String.html"title="class or interface in java.lang"class="external-link">String</a> name,
<divclass="block">permet d'enlever un étudiant d'un groupe.</div>
</div>
<divclass="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><ahref="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/util/Set.html"title="class or interface in java.util"class="external-link">Set</a><<ahref="../API/Etudiant.html"title="interface in API">Etudiant</a>></code></div>
<divclass="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><ahref="#getEtudiants(java.lang.String)"class="member-name-link">getEtudiants</a><wbr>(<ahref="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/lang/String.html"title="class or interface in java.lang"class="external-link">String</a> nomEtu)</code></div>
<divclass="block">permet de retrouver un étudiant à partir d'un String.</div>
</div>
<divclass="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><ahref="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/util/Set.html"title="class or interface in java.util"class="external-link">Set</a><<ahref="../API/Groupe.html"title="interface in API">Groupe</a>></code></div>
<divclass="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><ahref="#getGroupesOfEtudiant(API.Etudiant)"class="member-name-link">getGroupesOfEtudiant</a><wbr>(<ahref="../API/Etudiant.html"title="interface in API">Etudiant</a> etu)</code></div>
<divclass="block">permet de récupérer le Groupe qui contient les étudiants de toute la promotion</div>
</div>
<divclass="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><ahref="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/lang/Boolean.html"title="class or interface in java.lang"class="external-link">Boolean</a></code></div>
<divclass="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><ahref="#knows(API.Groupe)"class="member-name-link">knows</a><wbr>(<ahref="../API/Groupe.html"title="interface in API">Groupe</a> g)</code></div>
<h3id="methods-inherited-from-class-java.lang.Object">Methods inherited from class java.lang.<ahref="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/lang/Object.html"title="class or interface in java.lang"class="external-link">Object</a></h3>
<code><ahref="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/lang/Object.html#clone()"title="class or interface in java.lang"class="external-link">clone</a>, <ahref="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)"title="class or interface in java.lang"class="external-link">equals</a>, <ahref="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/lang/Object.html#finalize()"title="class or interface in java.lang"class="external-link">finalize</a>, <ahref="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/lang/Object.html#getClass()"title="class or interface in java.lang"class="external-link">getClass</a>, <ahref="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/lang/Object.html#hashCode()"title="class or interface in java.lang"class="external-link">hashCode</a>, <ahref="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/lang/Object.html#notify()"title="class or interface in java.lang"class="external-link">notify</a>, <ahref="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/lang/Object.html#notifyAll()"title="class or interface in java.lang"class="external-link">notifyAll</a>, <ahref="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/lang/Object.html#toString()"title="class or interface in java.lang"class="external-link">toString</a>, <ahref="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/lang/Object.html#wait()"title="class or interface in java.lang"class="external-link">wait</a>, <ahref="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/lang/Object.html#wait(long)"title="class or interface in java.lang"class="external-link">wait</a>, <ahref="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/lang/Object.html#wait(long,int)"title="class or interface in java.lang"class="external-link">wait</a></code></div>
<ahref="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/lang/String.html"title="class or interface in java.lang"class="external-link">String</a> name,
int min,
int max)</span></div>
<divclass="block">Le constructeur fabrique le groupe promotion vide.
Il faut ensuite y ajouter les étudiants.</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<sectionclass="method-details"id="method-detail">
<h2>Method Details</h2>
<ulclass="member-list">
<li>
<sectionclass="detail"id="knows(API.Groupe)">
<h3>knows</h3>
<divclass="member-signature"><spanclass="modifiers">public</span> <spanclass="return-type"><ahref="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/lang/Boolean.html"title="class or interface in java.lang"class="external-link">Boolean</a></span> <spanclass="element-name">knows</span><wbr><spanclass="parameters">(<ahref="../API/Groupe.html"title="interface in API">Groupe</a> g)</span></div>
<divclass="block">Test plutôt optimiste. Si la clé est identique alors on fait comme si c'était le bon groupe.</div>
<dlclass="notes">
<dt>Specified by:</dt>
<dd><code><ahref="../API/AbstractGroupeFactory.html#knows(API.Groupe)">knows</a></code> in interface <code><ahref="../API/AbstractGroupeFactory.html"title="interface in API">AbstractGroupeFactory</a></code></dd>
</dl>
</section>
</li>
<li>
<sectionclass="detail"id="getPromotion()">
<h3>getPromotion</h3>
<divclass="member-signature"><spanclass="modifiers">public</span> <spanclass="return-type"><ahref="../API/Groupe.html"title="interface in API">Groupe</a></span> <spanclass="element-name">getPromotion</span>()</div>
<divclass="block">permet de récupérer le Groupe qui contient les étudiants de toute la promotion</div>
<dlclass="notes">
<dt>Specified by:</dt>
<dd><code><ahref="../API/AbstractGroupeFactory.html#getPromotion()">getPromotion</a></code> in interface <code><ahref="../API/AbstractGroupeFactory.html"title="interface in API">AbstractGroupeFactory</a></code></dd>
<divclass="member-signature"><spanclass="modifiers">public</span> <spanclass="return-type">void</span> <spanclass="element-name">deleteGroupe</span><wbr><spanclass="parameters">(<ahref="../API/Groupe.html"title="interface in API">Groupe</a> g)</span></div>
<divclass="block">permet de supprimer un groupe connu de l'usine abstraite qui ne contient pas de groupes.
Pour détruire un groupe connu qui en contient d'autres il faut le faire récursivement.</div>
<dlclass="notes">
<dt>Specified by:</dt>
<dd><code><ahref="../API/AbstractGroupeFactory.html#deleteGroupe(API.Groupe)">deleteGroupe</a></code> in interface <code><ahref="../API/AbstractGroupeFactory.html"title="interface in API">AbstractGroupeFactory</a></code></dd>
<dt>Throws:</dt>
<dd><code><ahref="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/lang/NullPointerException.html"title="class or interface in java.lang"class="external-link">NullPointerException</a></code> - si un argument est null</dd>
<dd><code><ahref="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/lang/IllegalStateException.html"title="class or interface in java.lang"class="external-link">IllegalStateException</a></code> - si le groupe contient des groupes</dd>
<dd><code><ahref="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/lang/IllegalArgumentException.html"title="class or interface in java.lang"class="external-link">IllegalArgumentException</a></code> - si le groupe n'est pas connu de l'usine abstraite ou bien si le groupe est celui de toute la promotion (renvoyé par getPromotion)</dd>
<divclass="member-signature"><spanclass="modifiers">public</span> <spanclass="return-type">void</span> <spanclass="element-name">createGroupe</span><wbr><spanclass="parameters">(<ahref="../API/Groupe.html"title="interface in API">Groupe</a> pere,
<ahref="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/lang/String.html"title="class or interface in java.lang"class="external-link">String</a> name,
int min,
int max)</span></div>
<divclass="block">permet d'ajouter un groupe vide de type FREE comme sous-groupe d'un groupe donné.</div>
<dlclass="notes">
<dt>Specified by:</dt>
<dd><code><ahref="../API/AbstractGroupeFactory.html#createGroupe(API.Groupe,java.lang.String,int,int)">createGroupe</a></code> in interface <code><ahref="../API/AbstractGroupeFactory.html"title="interface in API">AbstractGroupeFactory</a></code></dd>
<dt>Parameters:</dt>
<dd><code>pere</code> - le groupe père du groupe à créer</dd>
<dd><code>name</code> - le nom du groupe à créer</dd>
<dd><code>min</code> - ,max bornes indicatives sur la taille du groupe à créer</dd>
<dt>Throws:</dt>
<dd><code><ahref="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/lang/NullPointerException.html"title="class or interface in java.lang"class="external-link">NullPointerException</a></code> - si un argument est null</dd>
<dd><code><ahref="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/lang/IllegalArgumentException.html"title="class or interface in java.lang"class="external-link">IllegalArgumentException</a></code> - si le groupe pere est de type PARTITION
ou si il n'y a pas 0 <spanclass="invalid-tag">invalid input: '<'</span> min <spanclass="invalid-tag">invalid input: '<'</span>= max</dd>
<divclass="member-signature"><spanclass="modifiers">public</span> <spanclass="return-type">void</span> <spanclass="element-name">createPartition</span><wbr><spanclass="parameters">(<ahref="../API/Groupe.html"title="interface in API">Groupe</a> pere,
<ahref="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/lang/String.html"title="class or interface in java.lang"class="external-link">String</a> name,
int n)</span></div>
<divclass="block">permet de créer une partition automatiquement sous un groupe donné.</div>
<dlclass="notes">
<dt>Specified by:</dt>
<dd><code><ahref="../API/AbstractGroupeFactory.html#createPartition(API.Groupe,java.lang.String,int)">createPartition</a></code> in interface <code><ahref="../API/AbstractGroupeFactory.html"title="interface in API">AbstractGroupeFactory</a></code></dd>
<dt>Parameters:</dt>
<dd><code>pere</code> - le groupe père du groupe à partitionner</dd>
<dd><code>name</code> - le nom des groupe à créer (on ajoute à la suite un numéro de 1 à n pour distinguer chaque groupe formant la partition)</dd>
<dd><code>n</code> - le nombre de partitions</dd>
<dt>Throws:</dt>
<dd><code><ahref="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/lang/NullPointerException.html"title="class or interface in java.lang"class="external-link">NullPointerException</a></code> - si un argument est null</dd>
<dd><code><ahref="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/lang/IllegalArgumentException.html"title="class or interface in java.lang"class="external-link">IllegalArgumentException</a></code> - si le groupe pere est de type PARTITION
ou n négatif ou nul
NB. doit créer une "copie" de pere
sous pere de type Partition et ajouter sous ce groupe, n groupes de type "FREE".
les valeurs min et max de ces n groupes sont
min = 0 et
max = partie entière de N/n plus 1, où N est le nombre max du groupe pere.</dd>
<divclass="member-signature"><spanclass="modifiers">public</span> <spanclass="return-type">void</span> <spanclass="element-name">addToGroupe</span><wbr><spanclass="parameters">(<ahref="../API/Groupe.html"title="interface in API">Groupe</a> g,
<ahref="../API/Etudiant.html"title="interface in API">Etudiant</a> e)</span></div>
<divclass="block">permet d'ajouter un étudiant à un groupe.</div>
<dlclass="notes">
<dt>Specified by:</dt>
<dd><code><ahref="../API/AbstractGroupeFactory.html#addToGroupe(API.Groupe,API.Etudiant)">addToGroupe</a></code> in interface <code><ahref="../API/AbstractGroupeFactory.html"title="interface in API">AbstractGroupeFactory</a></code></dd>
<dt>Parameters:</dt>
<dd><code>g</code> - le groupe dans lequel il faut ajouter l'étudiant</dd>
<dd><code>e</code> - l'étudiant à ajouter</dd>
<dt>Throws:</dt>
<dd><code><ahref="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/lang/NullPointerException.html"title="class or interface in java.lang"class="external-link">NullPointerException</a></code> - si un argument est null</dd>
<dd><code><ahref="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/lang/IllegalArgumentException.html"title="class or interface in java.lang"class="external-link">IllegalArgumentException</a></code> - la factory ne connaît pas g</dd>
<dd><code><ahref="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/lang/IllegalStateException.html"title="class or interface in java.lang"class="external-link">IllegalStateException</a></code> - le père de g ne contient pas e</dd>
<divclass="member-signature"><spanclass="modifiers">public</span> <spanclass="return-type">void</span> <spanclass="element-name">dropFromGroupe</span><wbr><spanclass="parameters">(<ahref="../API/Groupe.html"title="interface in API">Groupe</a> g,
<ahref="../API/Etudiant.html"title="interface in API">Etudiant</a> e)</span></div>
<divclass="block">permet d'enlever un étudiant d'un groupe.</div>
<dlclass="notes">
<dt>Specified by:</dt>
<dd><code><ahref="../API/AbstractGroupeFactory.html#dropFromGroupe(API.Groupe,API.Etudiant)">dropFromGroupe</a></code> in interface <code><ahref="../API/AbstractGroupeFactory.html"title="interface in API">AbstractGroupeFactory</a></code></dd>
<dt>Parameters:</dt>
<dd><code>g</code> - le groupe dans lequel il faut enlever l'étudiant</dd>
<dd><code>e</code> - l'étudiant à enlever</dd>
<dt>Throws:</dt>
<dd><code><ahref="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/lang/NullPointerException.html"title="class or interface in java.lang"class="external-link">NullPointerException</a></code> - si un argument est null</dd>
<dd><code><ahref="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/lang/IllegalStateException.html"title="class or interface in java.lang"class="external-link">IllegalStateException</a></code> - g ne contient pas e</dd>
<dd><code><ahref="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/lang/IllegalArgumentException.html"title="class or interface in java.lang"class="external-link">IllegalArgumentException</a></code> - la factory ne connaît pas g</dd>
<divclass="member-signature"><spanclass="modifiers">public</span> <spanclass="return-type"><ahref="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/util/Set.html"title="class or interface in java.util"class="external-link">Set</a><<ahref="../API/Etudiant.html"title="interface in API">Etudiant</a>></span> <spanclass="element-name">getEtudiants</span><wbr><spanclass="parameters">(<ahref="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/lang/String.html"title="class or interface in java.lang"class="external-link">String</a> nomEtu)</span></div>
<divclass="block">permet de retrouver un étudiant à partir d'un String.
NB. dans une version simple il doit s'agir du nom exact.
dans une version un peu plus complexe, il s'agit des premières lettres du nom
dans une version avancée, on peut autoriser une expression régulière plus ou moins complexe qui est générée si la première recherche n'a pas renvoyé de candidat.</div>
<dlclass="notes">
<dt>Specified by:</dt>
<dd><code><ahref="../API/AbstractGroupeFactory.html#getEtudiants(java.lang.String)">getEtudiants</a></code> in interface <code><ahref="../API/AbstractGroupeFactory.html"title="interface in API">AbstractGroupeFactory</a></code></dd>
<dt>Parameters:</dt>
<dd><code>String</code> - nomEtu le nom approximmatif de l'étudiant</dd>
<dt>Returns:</dt>
<dd>Set<Etudiant> l'ensemble des étudiants connus de la factory ayant un nom "proche" de ce string au sens de la remarque ci-dessus.</dd>
<dt>Throws:</dt>
<dd><code><ahref="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/lang/NullPointerException.html"title="class or interface in java.lang"class="external-link">NullPointerException</a></code> - si le String est null.</dd>
<divclass="member-signature"><spanclass="modifiers">public</span> <spanclass="return-type"><ahref="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/util/Set.html"title="class or interface in java.util"class="external-link">Set</a><<ahref="../API/Groupe.html"title="interface in API">Groupe</a>></span> <spanclass="element-name">getGroupesOfEtudiant</span><wbr><spanclass="parameters">(<ahref="../API/Etudiant.html"title="interface in API">Etudiant</a> etu)</span></div>
<divclass="block">permet de retrouver les groupes d'un étudiant.</div>
<dlclass="notes">
<dt>Specified by:</dt>
<dd><code><ahref="../API/AbstractGroupeFactory.html#getGroupesOfEtudiant(API.Etudiant)">getGroupesOfEtudiant</a></code> in interface <code><ahref="../API/AbstractGroupeFactory.html"title="interface in API">AbstractGroupeFactory</a></code></dd>
<dt>Parameters:</dt>
<dd><code>Etu</code> - un étudiant</dd>
<dt>Returns:</dt>
<dd>Etudiant l'étudiant connu de la factory ayant cet identifiant</dd>
<dt>Throws:</dt>
<dd><code><ahref="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/lang/NullPointerException.html"title="class or interface in java.lang"class="external-link">NullPointerException</a></code> - si le String est null.</dd>