Compare commits

..

1 Commits

Author SHA1 Message Date
brinet
b4cd384ece studentview + modif BDatabase.java 2022-12-01 16:26:40 +01:00
157 changed files with 32825 additions and 55157 deletions

10
.gitignore vendored Normal file
View File

@ -0,0 +1,10 @@
# Compiled class file
*.class
# Package Files #
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar*

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 128 KiB

View File

@ -1,13 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<component name="NewModuleRootManager">
<output url="file://$MODULE_DIR$/out/production/FIProjetIHM2022" />
<output-test url="file://$MODULE_DIR$/out/test/FIProjetIHM2022" />
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="mariadb-connector1" level="project" />
<orderEntry type="library" name="mariadb-connector" level="project" />
<orderEntry type="library" name="FI_PRJ" level="project" />
<orderEntry type="library" name="mariadb-connector1" level="project" />
</component>
</module>

14
FI_PRJ.iml Normal file
View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager">
<output url="file://$MODULE_DIR$/build" />
<output-test url="file://C:/UseC:/Users/probo/Desktop/FIProjetIHM2022/build" />
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="mariadb-connector" level="project" />
</component>
</module>

View File

@ -7,9 +7,6 @@ OPTION_DOCS = -d docs/
OPTION_COMPILE = -d build/ -cp "src/Test/libs/mariadb-connector.jar"
OPTION_DOCS = -d docs/ -cp "src/Test/libs/mariadb-connector.jar"
OPTION_EXE = -cp ".:Test/libs/mariadb-connector.jar" Test.TestTexteMNP
OPTION_EXE_A = -cp ".:Test/libs/mariadb-connector.jar" Test.MainAdmin
OPTION_EXE_P = -cp ".:Test/libs/mariadb-connector.jar" Test.MainProf
OPTION_EXE_S = -cp ".:Test/libs/mariadb-connector.jar" Test.MainStudent
RM = rm -rf
# Chemin
@ -23,28 +20,8 @@ ALL = *.java
.PHONY: run clean docs
run:
$(RM) build/*
$(RM) docs/*
$(JAVAC) $(OPTION_COMPILE) $(API)/$(ALL) $(MNP)/$(ALL) $(TEST)/$(ALL)
cp -r src/Test/libs build/Test && cd build/ && $(JAVA) $(OPTION_EXE)
admin:
$(RM) build/*
$(RM) docs/*
$(JAVAC) $(OPTION_COMPILE) $(API)/$(ALL) $(MNP)/$(ALL) $(TEST)/$(ALL)
cp -r src/Test/libs build/Test && cd build/ && $(JAVA) $(OPTION_EXE_A)
student:
$(RM) build/*
$(RM) docs/*
$(JAVAC) $(OPTION_COMPILE) $(API)/$(ALL) $(MNP)/$(ALL) $(TEST)/$(ALL)
cp -r src/Test/libs build/Test && cd build/ && $(JAVA) $(OPTION_EXE_S)
prof:
$(RM) build/*
$(RM) docs/*
$(JAVAC) $(OPTION_COMPILE) $(API)/$(ALL) $(MNP)/$(ALL) $(TEST)/$(ALL)
cp -r src/Test/libs build/Test && cd build/ && $(JAVA) $(OPTION_EXE_P)
cd build/ && $(JAVA) $(OPTION_EXE)
clean:
$(RM) build/*

170
README.md
View File

@ -1,170 +0,0 @@
---
titre: "Rapport_technique_Projet_IHM_Brinet_Besson_Boudjemline"
auteurs: "Félix Brinet / Romain Besson / Bilal Boudjemline"
date: "2022-12-04"
---
## Sommaire
- <div>
1. Introduction
2. Utilisation de l'API
3. Diagramme
4. Fonctionnalités
- Fonctionnalités réussies
- Fonctionnalités non réussies
- Fonctionnalités manquantes
5. Tests
- Tests réussis
- Tests non réussis
- Tests montrant des bugs
6. Conclusions
- Conclusions personnelles
- Conclusion générale
</div>
## Introduction
Ce projet a été réalisé dans le cadre de la SAE du semestre 3 de la matière DEV.3.1. L'objectif de ce projet est de créer une **interface homme-machine (IHM) en java**. Nous devons utiliser une API fournie par notre professeur Florent Madeleine. En tout premier, nous devons utiliser le mode non-persistant déjà fournit et à la suite nous avons créer un mode persistant en utilisant une **base de données sur PhpMyAdmin**.
## Utilisation de l'API
Bilal a commencé le projet seul car Romain et Félix étaient encore sur le projet précédent. Il a pu commencer à utiliser à l'API et à tester en modèle non-persistant. À la suite, Félix a créé la base de données et a essayé d'aider Bilal pour le modèle persistant. Ensuite Romain à changé l'interface pour la rendre plus intuitive et plus agréable à utiliser. Il a par exemple utilisé des CardLayout et Jpanel pour éviter d'ouvrir une fenêtre pour chaque fonctionnalité. Il a pu aussi créer un menu afin d'accéder aux différentes applications.
## Diagramme
<img src="./DCU_PROJET_IHM.svg">
## Fonctionnalitées
Pour les 3 vues, nous n'avons pas fait d'interface bien que les vues ont des méthodes en commun. En effet, nous voulons créer des applications indépendantes et déployables sans les autres donc une interface aurait empêché cette séparation.
### Fonctionnalitées réussi
**Administrateur :**
- <div>
- (M) Créer, supprimer et renommer un groupe;
- (M) Ajouter un individu dans un groupe;
- (M) Déplacer un individu dans un autre groupe;
- (S) Déplacer un individus en validant sa demande
- (S) Refus d'une demande (de type 1)
- (C) Echanger des individus entre 2 groupes à leur demande respectives (demande de type 2)
- (C) Refus d'une demande (de type 2)
</div>
**Professeur :**
- <div>
- (M) Afficher la liste des groupes
- (M) Afficher la liste des étudiant d'un groupe donné
- (S) Chercher le groupe d'un étudiant à partir des **3** premières lettres de son nom
</div>
**Elève :**
- <div>
- (M) Afficher la liste des groupes
- (M) Afficher la liste des étudiants d'un groupe donné
- (M) Demandé à passé dans groupe ~~qui est moins pleins que le sien~~ en ajoutant une explication
- (S) Voir les demandes de changement de groupe du type 2
- (S) Demander à passer dans un groupe qui est de même taille ou plus grand en ajoutant une explication (demande de type 2 à faire valider)
</div>
### Fonctionnalités non réussi
**Administrateur :**
- <div>
- Toutes les fonctionnalités ont été réussies.
</div>
**Professeur :**
- <div>
- Toutes les fonctionnalités ont été réussies.
</div>
**Elève :**
- <div>
- Toutes les fonctionnalités ont été réussies.
</div>
### Fonctionnalités manquantes
Par choix arbitraire, nous avons décidé de ne pas créer de sous-groupe.
Rajouter un bouton quitter sur la page d'accueil, ce n'est pas indispensable, mais cela pourrait rendre l'interface plus intuitive.
## Tests
### Tests réussis
Lorsqu'un administrateur clique sur "Changer le groupe d'un étudiant", il peut voir le changement en direct sur l'affichage du tableau à droite. De plus, la base de données est également mise à jour.
Nous pensons que l'ensemble des fonctionnalités demandées ont été faites. (Mis a part ce qui se trouve dans la catégorie : fonctionnalités manquantes).
### Tests montrant des bugs
Nous avons fait essayer notre application à d'autres étudiants, dont Kilian Moulin. Il a pu détecter des bugs.
Lors d'un clique sur "Affichage" puis "Plein écran" ou bien "Fenêtré", les différents onglets pour changer de vue de "Menu" disparaissent. Ce qui fait que nous sommes alors coincés sur la vue choisie.
**Bug corrigé**
Si l'utilisateur se rend la vue Administrateur et qu'il choisit "Changer le groupe d'un étudiant" et que l'utilisateur se met ensuite sur la vue professeur ou bien élève en passant par le menu alors il peut déplacer des élèves sans être administrateur.
**Bug corrigé**
## Conclusions
### Conclusions personnelles
Bilal: J'ai trouvé ce projet intéressant à faire. Il a demandé une mobilisation de quasi toutes les connaissances que nous avons pu acquérir dans le BUT. Ce que je trouve dommage, c'est que nous étions restreints par l'API.
Félix: Pour ma part, ce projet n'a pas été facile à réaliser, car je n'ai pas bien réussi à comprendre comment utiliser l'API. Mais grâce à l'aide de mes camarades nous avons pu rendre un résultat satisfaisant et je suis fier du rendu de ce projet. J'aurais bien aimé rendre l'interface un peu plus jolie, un peu plus coloré.
Romain: J'ai trouvé ce projet intéressant parce que c'est le premier où on a dû créer une application qui interagit avec une base de données. De plus, nous devions utiliser une API qui n'était pas la nôtre, ce qui nous a donc forcées à adapter notre application autour.
### Conclusion générale
Ce projet a été un challenge pour nous tous dans le projet. Tout d'abord en raison de sa complexité, mais également, car nous n'avions jamais travaillé ensemble au paravent. Nous sommes assez fiers du rendu du projet, mais nous aurions aimé rajouté plus de fonctionnalités. Nous avons eu des problèmes sur la répartition des tâches à faire. Nous avons pu mettre en valeur les atouts de chacun dans ce projet, Bilal pour l'utilisation de l'API et les fonctionnalités. Romain a pu mettre en avant ses compétences pour créer une interface intuitive et agréable à regarder. Félix a pu organiser les tâches à faire, aider lors de bug en faisait du pair programming et la rédaction du rapport ainsi que la base de données.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
build/Test/ProfView$2.class Normal file

Binary file not shown.

BIN
build/Test/ProfView$3.class Normal file

Binary file not shown.

BIN
build/Test/ProfView$4.class Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,233 @@
<!DOCTYPE HTML>
<html lang="fr">
<head>
<!-- Generated by javadoc (18) on Wed Nov 16 09:08:25 CET 2022 -->
<title>AbstractChangementFactory</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2022-11-16">
<meta name="description" content="declaration: package: API, interface: AbstractChangementFactory">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../script.js"></script>
<script type="text/javascript" src="../script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var evenRowColor = "even-row-color";
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
var pathtoroot = "../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon"></span><span class="nav-bar-toggle-icon"></span><span class="nav-bar-toggle-icon"></span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../index-all.html">Index</a></li>
<li><a href="../help-doc.html#class">Help</a></li>
</ul>
<ul class="sub-nav-list-small">
<li>
<p>Summary:</p>
<ul>
<li>Nested</li>
<li>Field</li>
<li>Constr</li>
<li><a href="#method-summary">Method</a></li>
</ul>
</li>
<li>
<p>Detail:</p>
<ul>
<li>Field</li>
<li>Constr</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">API</a></div>
<h1 title="Interface AbstractChangementFactory" class="title">Interface AbstractChangementFactory</h1>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Known Implementing Classes:</dt>
<dd><code><a href="../MNP/AbstractChangementFactoryNP.html" title="class in MNP">AbstractChangementFactoryNP</a></code></dd>
</dl>
<hr>
<div class="type-signature"><span class="modifiers">public interface </span><span class="element-name type-name-label">AbstractChangementFactory</span></div>
<div class="block">Usine abstraite gérant l'ensemble des changements.</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#applyChangement(API.Changement)" class="member-name-link">applyChangement</a><wbr>(<a href="Changement.html" title="interface in API">Changement</a>&nbsp;c)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">permet de mettre en oeuvre un changement connu de l'usine abstraite.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#createChangement(API.Groupe,API.Etudiant,API.Groupe)" class="member-name-link">createChangement</a><wbr>(<a href="Groupe.html" title="interface in API">Groupe</a>&nbsp;A,
<a href="Etudiant.html" title="interface in API">Etudiant</a>&nbsp;e,
<a href="Groupe.html" title="interface in API">Groupe</a>&nbsp;B)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">permet d'ajouter un nouveau changement.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#deleteChangement(API.Changement)" class="member-name-link">deleteChangement</a><wbr>(<a href="Changement.html" title="interface in API">Changement</a>&nbsp;c)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">permet de supprimer un changement connu de l'usine abstraite.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="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>&lt;<a href="Changement.html" title="interface in API">Changement</a>&gt;</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getAllChangements()" class="member-name-link">getAllChangements</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">permet de récupérer les changements</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="AbstractGroupeFactory.html" title="interface in API">AbstractGroupeFactory</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getGroupeFactory()" class="member-name-link">getGroupeFactory</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">permet de récupérer une usine abstraite pour les groupes qui fonctionne en tandem avec cette usine abstraite</div>
</div>
</div>
</div>
</div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="getGroupeFactory()">
<h3>getGroupeFactory</h3>
<div class="member-signature"><span class="return-type"><a href="AbstractGroupeFactory.html" title="interface in API">AbstractGroupeFactory</a></span>&nbsp;<span class="element-name">getGroupeFactory</span>()</div>
<div class="block">permet de récupérer une usine abstraite pour les groupes qui fonctionne en tandem avec cette usine abstraite</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>cette usine abstraite pour les groupes</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getAllChangements()">
<h3>getAllChangements</h3>
<div class="member-signature"><span class="return-type"><a href="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>&lt;<a href="Changement.html" title="interface in API">Changement</a>&gt;</span>&nbsp;<span class="element-name">getAllChangements</span>()</div>
<div class="block">permet de récupérer les changements</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>l'ensemble de tous les changements en attente
<p>
NB. Attention. C'était Iterator<Changement> dans la version beta.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="applyChangement(API.Changement)">
<h3>applyChangement</h3>
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">applyChangement</span><wbr><span class="parameters">(<a href="Changement.html" title="interface in API">Changement</a>&nbsp;c)</span></div>
<div class="block">permet de mettre en oeuvre un changement connu de l'usine abstraite.
En cas de succès, le changement est oublié (détruit).</div>
<dl class="notes">
<dt>Throws:</dt>
<dd><code><a href="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><a href="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 inconnu de l'usine abstraite</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="deleteChangement(API.Changement)">
<h3>deleteChangement</h3>
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">deleteChangement</span><wbr><span class="parameters">(<a href="Changement.html" title="interface in API">Changement</a>&nbsp;c)</span></div>
<div class="block">permet de supprimer un changement connu de l'usine abstraite.</div>
<dl class="notes">
<dt>Throws:</dt>
<dd><code><a href="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><a href="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 inconnu de l'usine abstraite</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="createChangement(API.Groupe,API.Etudiant,API.Groupe)">
<h3>createChangement</h3>
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">createChangement</span><wbr><span class="parameters">(<a href="Groupe.html" title="interface in API">Groupe</a>&nbsp;A,
<a href="Etudiant.html" title="interface in API">Etudiant</a>&nbsp;e,
<a href="Groupe.html" title="interface in API">Groupe</a>&nbsp;B)</span></div>
<div class="block">permet d'ajouter un nouveau changement.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>A</code> - groupe actuel</dd>
<dd><code>B</code> - groupe demandé</dd>
<dd><code>e</code> - étudiant concerné par le changement</dd>
<dt>Throws:</dt>
<dd><code><a href="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><a href="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 les groupes ou l'étudiant ne sont pas connus de la factory partenaire, ou e n'appartient pas à A ou A et B ne sont pas frères dans l'arbre des groupes.</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,338 @@
<!DOCTYPE HTML>
<html lang="fr">
<head>
<!-- Generated by javadoc (18) on Wed Nov 16 09:08:25 CET 2022 -->
<title>AbstractGroupeFactory</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2022-11-16">
<meta name="description" content="declaration: package: API, interface: AbstractGroupeFactory">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../script.js"></script>
<script type="text/javascript" src="../script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var evenRowColor = "even-row-color";
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
var pathtoroot = "../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon"></span><span class="nav-bar-toggle-icon"></span><span class="nav-bar-toggle-icon"></span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../index-all.html">Index</a></li>
<li><a href="../help-doc.html#class">Help</a></li>
</ul>
<ul class="sub-nav-list-small">
<li>
<p>Summary:</p>
<ul>
<li>Nested</li>
<li>Field</li>
<li>Constr</li>
<li><a href="#method-summary">Method</a></li>
</ul>
</li>
<li>
<p>Detail:</p>
<ul>
<li>Field</li>
<li>Constr</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">API</a></div>
<h1 title="Interface AbstractGroupeFactory" class="title">Interface AbstractGroupeFactory</h1>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Known Implementing Classes:</dt>
<dd><code><a href="../MNP/AbstractGroupeFactoryNP.html" title="class in MNP">AbstractGroupeFactoryNP</a></code></dd>
</dl>
<hr>
<div class="type-signature"><span class="modifiers">public interface </span><span class="element-name type-name-label">AbstractGroupeFactory</span></div>
<div class="block">Usine abstraite gérant l'ensemble des groupes.</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#addToGroupe(API.Groupe,API.Etudiant)" class="member-name-link">addToGroupe</a><wbr>(<a href="Groupe.html" title="interface in API">Groupe</a>&nbsp;g,
<a href="Etudiant.html" title="interface in API">Etudiant</a>&nbsp;e)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">permet d'ajouter un étudiant à un groupe.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#createGroupe(API.Groupe,java.lang.String,int,int)" class="member-name-link">createGroupe</a><wbr>(<a href="Groupe.html" title="interface in API">Groupe</a>&nbsp;pere,
<a href="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>&nbsp;name,
int&nbsp;min,
int&nbsp;max)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">permet d'ajouter un groupe vide de type FREE comme sous-groupe d'un groupe donné.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#createPartition(API.Groupe,java.lang.String,int)" class="member-name-link">createPartition</a><wbr>(<a href="Groupe.html" title="interface in API">Groupe</a>&nbsp;pere,
<a href="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>&nbsp;name,
int&nbsp;n)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">permet de créer une partition automatiquement sous un groupe donné.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#deleteGroupe(API.Groupe)" class="member-name-link">deleteGroupe</a><wbr>(<a href="Groupe.html" title="interface in API">Groupe</a>&nbsp;g)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">permet de supprimer un groupe connu de l'usine abstraite qui ne contient pas de groupes.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#dropFromGroupe(API.Groupe,API.Etudiant)" class="member-name-link">dropFromGroupe</a><wbr>(<a href="Groupe.html" title="interface in API">Groupe</a>&nbsp;g,
<a href="Etudiant.html" title="interface in API">Etudiant</a>&nbsp;e)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">permet d'enlever un étudiant d'un groupe.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="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>&lt;<a href="Etudiant.html" title="interface in API">Etudiant</a>&gt;</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getEtudiants(java.lang.String)" class="member-name-link">getEtudiants</a><wbr>(<a href="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>&nbsp;nomEtu)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">permet de retrouver un étudiant à partir d'un String.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="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>&lt;<a href="Groupe.html" title="interface in API">Groupe</a>&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getGroupesOfEtudiant(API.Etudiant)" class="member-name-link">getGroupesOfEtudiant</a><wbr>(<a href="Etudiant.html" title="interface in API">Etudiant</a>&nbsp;etu)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">permet de retrouver les groupes d'un étudiant.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="Groupe.html" title="interface in API">Groupe</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getPromotion()" class="member-name-link">getPromotion</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">permet de récupérer le Groupe qui contient les étudiants de toute la promotion</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="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>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#knows(API.Groupe)" class="member-name-link">knows</a><wbr>(<a href="Groupe.html" title="interface in API">Groupe</a>&nbsp;g)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Test si le groupe g est connu de l'usine (connu maintenant).</div>
</div>
</div>
</div>
</div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="getPromotion()">
<h3>getPromotion</h3>
<div class="member-signature"><span class="return-type"><a href="Groupe.html" title="interface in API">Groupe</a></span>&nbsp;<span class="element-name">getPromotion</span>()</div>
<div class="block">permet de récupérer le Groupe qui contient les étudiants de toute la promotion</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>la promo.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="knows(API.Groupe)">
<h3>knows</h3>
<div class="member-signature"><span class="return-type"><a href="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>&nbsp;<span class="element-name">knows</span><wbr><span class="parameters">(<a href="Groupe.html" title="interface in API">Groupe</a>&nbsp;g)</span></div>
<div class="block">Test si le groupe g est connu de l'usine (connu maintenant).
Si la réponse est true, les méthodes avec ce groupe en paramètre devraient bien fonctionner.
Si la réponse est false, le comportement n'est pas garanti.</div>
</section>
</li>
<li>
<section class="detail" id="deleteGroupe(API.Groupe)">
<h3>deleteGroupe</h3>
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">deleteGroupe</span><wbr><span class="parameters">(<a href="Groupe.html" title="interface in API">Groupe</a>&nbsp;g)</span></div>
<div class="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>
<dl class="notes">
<dt>Throws:</dt>
<dd><code><a href="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><a href="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><a href="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>
</dl>
</section>
</li>
<li>
<section class="detail" id="createGroupe(API.Groupe,java.lang.String,int,int)">
<h3>createGroupe</h3>
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">createGroupe</span><wbr><span class="parameters">(<a href="Groupe.html" title="interface in API">Groupe</a>&nbsp;pere,
<a href="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>&nbsp;name,
int&nbsp;min,
int&nbsp;max)</span></div>
<div class="block">permet d'ajouter un groupe vide de type FREE comme sous-groupe d'un groupe donné.</div>
<dl class="notes">
<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><a href="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><a href="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 <span class="invalid-tag">invalid input: '&lt;'</span> min <span class="invalid-tag">invalid input: '&lt;'</span>= max</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="createPartition(API.Groupe,java.lang.String,int)">
<h3>createPartition</h3>
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">createPartition</span><wbr><span class="parameters">(<a href="Groupe.html" title="interface in API">Groupe</a>&nbsp;pere,
<a href="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>&nbsp;name,
int&nbsp;n)</span></div>
<div class="block">permet de créer une partition automatiquement sous un groupe donné.</div>
<dl class="notes">
<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 ajoutera à la suite un numéro ou une lettre pour distinguer chaque groupe)</dd>
<dd><code>n</code> - le nombre de partitions</dd>
<dt>Throws:</dt>
<dd><code><a href="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><a href="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
<p>
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>
</dl>
</section>
</li>
<li>
<section class="detail" id="addToGroupe(API.Groupe,API.Etudiant)">
<h3>addToGroupe</h3>
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">addToGroupe</span><wbr><span class="parameters">(<a href="Groupe.html" title="interface in API">Groupe</a>&nbsp;g,
<a href="Etudiant.html" title="interface in API">Etudiant</a>&nbsp;e)</span></div>
<div class="block">permet d'ajouter un étudiant à un groupe.</div>
<dl class="notes">
<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><a href="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><a href="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><a href="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>
</dl>
</section>
</li>
<li>
<section class="detail" id="dropFromGroupe(API.Groupe,API.Etudiant)">
<h3>dropFromGroupe</h3>
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">dropFromGroupe</span><wbr><span class="parameters">(<a href="Groupe.html" title="interface in API">Groupe</a>&nbsp;g,
<a href="Etudiant.html" title="interface in API">Etudiant</a>&nbsp;e)</span></div>
<div class="block">permet d'enlever un étudiant d'un groupe.</div>
<dl class="notes">
<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><a href="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><a href="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><a href="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>
</dl>
</section>
</li>
<li>
<section class="detail" id="getEtudiants(java.lang.String)">
<h3>getEtudiants</h3>
<div class="member-signature"><span class="return-type"><a href="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>&lt;<a href="Etudiant.html" title="interface in API">Etudiant</a>&gt;</span>&nbsp;<span class="element-name">getEtudiants</span><wbr><span class="parameters">(<a href="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>&nbsp;nomEtu)</span></div>
<div class="block">permet de retrouver un étudiant à partir d'un String.
<p>
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>
<dl class="notes">
<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><a href="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>
</dl>
</section>
</li>
<li>
<section class="detail" id="getGroupesOfEtudiant(API.Etudiant)">
<h3>getGroupesOfEtudiant</h3>
<div class="member-signature"><span class="return-type"><a href="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>&lt;<a href="Groupe.html" title="interface in API">Groupe</a>&gt;</span>&nbsp;<span class="element-name">getGroupesOfEtudiant</span><wbr><span class="parameters">(<a href="Etudiant.html" title="interface in API">Etudiant</a>&nbsp;etu)</span></div>
<div class="block">permet de retrouver les groupes d'un étudiant.</div>
<dl class="notes">
<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><a href="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>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</div>
</body>
</html>

236
docs/API/Changement.html Normal file

File diff suppressed because one or more lines are too long

232
docs/API/Etudiant.html Normal file

File diff suppressed because one or more lines are too long

382
docs/API/Groupe.html Normal file

File diff suppressed because one or more lines are too long

156
docs/API/MonPrint.html Normal file
View File

@ -0,0 +1,156 @@
<!DOCTYPE HTML>
<html lang="fr">
<head>
<!-- Generated by javadoc (18) on Wed Nov 16 09:08:25 CET 2022 -->
<title>MonPrint</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2022-11-16">
<meta name="description" content="declaration: package: API, interface: MonPrint">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../script.js"></script>
<script type="text/javascript" src="../script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var evenRowColor = "even-row-color";
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
var pathtoroot = "../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon"></span><span class="nav-bar-toggle-icon"></span><span class="nav-bar-toggle-icon"></span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../index-all.html">Index</a></li>
<li><a href="../help-doc.html#class">Help</a></li>
</ul>
<ul class="sub-nav-list-small">
<li>
<p>Summary:</p>
<ul>
<li>Nested</li>
<li>Field</li>
<li>Constr</li>
<li><a href="#method-summary">Method</a></li>
</ul>
</li>
<li>
<p>Detail:</p>
<ul>
<li>Field</li>
<li>Constr</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">API</a></div>
<h1 title="Interface MonPrint" class="title">Interface MonPrint</h1>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Known Subinterfaces:</dt>
<dd><code><a href="Changement.html" title="interface in API">Changement</a></code>, <code><a href="Etudiant.html" title="interface in API">Etudiant</a></code>, <code><a href="Groupe.html" title="interface in API">Groupe</a></code></dd>
</dl>
<dl class="notes">
<dt>All Known Implementing Classes:</dt>
<dd><code><a href="../MNP/ChangementNP.html" title="class in MNP">ChangementNP</a></code>, <code><a href="../MNP/EtudiantNP.html" title="class in MNP">EtudiantNP</a></code>, <code><a href="../MNP/GroupeNP.html" title="class in MNP">GroupeNP</a></code></dd>
</dl>
<hr>
<div class="type-signature"><span class="modifiers">public interface </span><span class="element-name type-name-label">MonPrint</span></div>
<div class="block">Toutes nos interfaces vont étendre cette interface.</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="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></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#monPrint()" class="member-name-link">monPrint</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Fonctionne comme ToPrint() sauf car une interface n'a pas le droit de faire un override sur ToPrint().</div>
</div>
</div>
</div>
</div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="monPrint()">
<h3>monPrint</h3>
<div class="member-signature"><span class="return-type"><a href="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></span>&nbsp;<span class="element-name">monPrint</span>()</div>
<div class="block">Fonctionne comme ToPrint() sauf car une interface n'a pas le droit de faire un override sur ToPrint().
Toutes nos interfaces vont étendre cette interface.</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</div>
</body>
</html>

244
docs/API/TypeGroupe.html Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,123 @@
<!DOCTYPE HTML>
<html lang="fr">
<head>
<!-- Generated by javadoc (18) on Wed Nov 16 09:08:25 CET 2022 -->
<title>API</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2022-11-16">
<meta name="description" content="declaration: package: API">
<meta name="generator" content="javadoc/PackageWriterImpl">
<link rel="stylesheet" type="text/css" href="../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../script.js"></script>
<script type="text/javascript" src="../script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="../script-dir/jquery-ui.min.js"></script>
</head>
<body class="package-declaration-page">
<script type="text/javascript">var evenRowColor = "even-row-color";
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
var pathtoroot = "../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon"></span><span class="nav-bar-toggle-icon"></span><span class="nav-bar-toggle-icon"></span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../index.html">Overview</a></li>
<li class="nav-bar-cell1-rev">Package</li>
<li>Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../index-all.html">Index</a></li>
<li><a href="../help-doc.html#package">Help</a></li>
</ul>
<ul class="sub-nav-list-small">
<li>
<p>Package:</p>
<ul>
<li>Description</li>
<li>Related Packages</li>
<li><a href="#class-summary">Classes and Interfaces</a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<li>Package:&nbsp;</li>
<li>Description&nbsp;|&nbsp;</li>
<li>Related Packages&nbsp;|&nbsp;</li>
<li><a href="#class-summary">Classes and Interfaces</a></li>
</ul>
</div>
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 title="Package API" class="title">Package API</h1>
</div>
<hr>
<div class="package-signature">package <span class="element-name">API</span></div>
<section class="summary">
<ul class="summary-list">
<li>
<div id="class-summary">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="class-summary-tab0" role="tab" aria-selected="true" aria-controls="class-summary.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="class-summary-tab1" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab1', 2)" class="table-tab">Interfaces</button><button id="class-summary-tab3" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab3', 2)" class="table-tab">Enum Classes</button></div>
<div id="class-summary.tabpanel" role="tabpanel">
<div class="summary-table two-column-summary" aria-labelledby="class-summary-tab0">
<div class="table-header col-first">Class</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="AbstractChangementFactory.html" title="interface in API">AbstractChangementFactory</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Usine abstraite gérant l'ensemble des changements.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="AbstractGroupeFactory.html" title="interface in API">AbstractGroupeFactory</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Usine abstraite gérant l'ensemble des groupes.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="Changement.html" title="interface in API">Changement</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Une demande de changement de groupe
concerne un étudiant, qui est dans un groupe A et veut aller dans un groupe B.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="Etudiant.html" title="interface in API">Etudiant</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Un étudiant</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab1"><a href="Groupe.html" title="interface in API">Groupe</a></div>
<div class="col-last even-row-color class-summary class-summary-tab1">
<div class="block">Un groupe</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="MonPrint.html" title="interface in API">MonPrint</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab1">
<div class="block">Toutes nos interfaces vont étendre cette interface.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab3"><a href="TypeGroupe.html" title="enum class in API">TypeGroupe</a></div>
<div class="col-last even-row-color class-summary class-summary-tab3">&nbsp;</div>
</div>
</div>
</div>
</li>
</ul>
</section>
</main>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,89 @@
<!DOCTYPE HTML>
<html lang="fr">
<head>
<!-- Generated by javadoc (18) on Wed Nov 16 09:08:25 CET 2022 -->
<title>API Class Hierarchy</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2022-11-16">
<meta name="description" content="tree: package: API">
<meta name="generator" content="javadoc/PackageTreeWriter">
<link rel="stylesheet" type="text/css" href="../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../script.js"></script>
<script type="text/javascript" src="../script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="../script-dir/jquery-ui.min.js"></script>
</head>
<body class="package-tree-page">
<script type="text/javascript">var pathtoroot = "../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon"></span><span class="nav-bar-toggle-icon"></span><span class="nav-bar-toggle-icon"></span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li>Class</li>
<li class="nav-bar-cell1-rev">Tree</li>
<li><a href="../index-all.html">Index</a></li>
<li><a href="../help-doc.html#tree">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 class="title">Hierarchy For Package API</h1>
<span class="package-hierarchy-label">Package Hierarchies:</span>
<ul class="horizontal">
<li><a href="../overview-tree.html">All Packages</a></li>
</ul>
</div>
<section class="hierarchy">
<h2 title="Interface Hierarchy">Interface Hierarchy</h2>
<ul>
<li class="circle">API.<a href="AbstractChangementFactory.html" class="type-name-link" title="interface in API">AbstractChangementFactory</a></li>
<li class="circle">API.<a href="AbstractGroupeFactory.html" class="type-name-link" title="interface in API">AbstractGroupeFactory</a></li>
<li class="circle">API.<a href="MonPrint.html" class="type-name-link" title="interface in API">MonPrint</a>
<ul>
<li class="circle">API.<a href="Changement.html" class="type-name-link" title="interface in API">Changement</a></li>
<li class="circle">API.<a href="Etudiant.html" class="type-name-link" title="interface in API">Etudiant</a></li>
<li class="circle">API.<a href="Groupe.html" class="type-name-link" title="interface in API">Groupe</a></li>
</ul>
</li>
</ul>
</section>
<section class="hierarchy">
<h2 title="Enum Class Hierarchy">Enum Class Hierarchy</h2>
<ul>
<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
<ul>
<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/lang/Enum.html" class="type-name-link external-link" title="class or interface in java.lang">Enum</a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;T&gt;, java.lang.constant.<a href="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/lang/constant/Constable.html" title="class or interface in java.lang.constant" class="external-link">Constable</a>, java.io.<a href="https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
<ul>
<li class="circle">API.<a href="TypeGroupe.html" class="type-name-link" title="enum class in API">TypeGroupe</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</section>
</main>
</div>
</div>
</body>
</html>

Some files were not shown because too many files have changed in this diff Show More