diff --git a/Images/Diagramme_architecture.png b/Images/Diagramme_architecture.png
new file mode 100644
index 0000000..ee9cf71
Binary files /dev/null and b/Images/Diagramme_architecture.png differ
diff --git a/Images/Diagramme_paquetage.png b/Images/Diagramme_paquetage.png
index b1d19dd..849b94e 100644
Binary files a/Images/Diagramme_paquetage.png and b/Images/Diagramme_paquetage.png differ
diff --git a/README.md b/README.md
index 9b467a1..4267839 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,35 @@
# Linaris_MAUI_SAE_201
+#### Description de l'architecture
+
+
+
+Notre programme se compose de deux parties distinctes : les **vues** et le **modèle**.
+
+Pour les **vues**, cela correspond aux visuels de l'application. Pour le modèle, cela correspond à la logique de l'application, son fonctionnement.
+Ces deux parties sont liées par le **DataBinding** liant les données et le modèle avec les vues.
+
+
+
+Pour permettre cela, nous avons mis en oeuvre le patron de conception de **"façade"** grâce à la classe *Manager*. En effet, cette classe est un *point d'entrée* vers le modèle, où le fonctionnement est caché par des méthodes et propriétés comme c'est le cas pour les listes d'objets. Les vues ne savent pas comment ces listes sont créées, elles ne font que l'utiliser. Cette classe **gère le modèle** mais est aussi l'interlocuteur des vues. C'est un **lien** entre ces deux parties. Cela nous permettait de bien **séparer les vues et le modèle**, mais aussi de **réduire** et **clarifier** le code présent dans le code-behind des vues.
+
+
+
+De plus, nous avons intégré le patron de conception de **"stratégie"** grâce à l'interface *IDataManager* et l'*injection de dépendance par le contructeur* du Manager. En effet, cela nous permet de *changer de méthode* de sérialisation très facilement. Nous pouvons donc utiliser les stubs pour tester le programme et repasser sur la sérialisation XML pour utiliser l'application en un simple changement. Cela permet une **adaptabilité** de code non négligeable. Il suffit de changer le paramètre donné au constructeur du Manager.
+
+En outre, pour que cela fonctionne, l'interface *IDataManager* est indispensable, afin de s'assurer que toutes les méthodes de sérialisation aient bien **toutes les méthodes** nécessaires au bon fonctionnement de l'application. Grâce à cela, nous n'avons pas à nous demander quelle est la méthode de sérialisation pusique l'appel de la méthode de l'interface appellera la méthode de la technique de sérialisation demandée. Nous obtenons un résultat différent selon la méthode **sans changer le code**. Par exemple, dans la classe *App*, nous pouvons simplement appeler la méthode de sérialisation du manager, nous n'avons pas à changer ce code à chaque changement de méthode de sérialisation. Cela nous fait **gagner en temps** et en **adaptabilité de code**.
+
+
+Grâce à ces patrons de conception, nous pouvons passer des stubs à la sérialisation XML bien plus facilement et **sans changer le code** des vues.
+
+
+
+Afin de lier nos différents projets, nous avons ajouté des **dépendances**. En effet, pour que l'*application console*, les *vues* et les *tests unitaires* fonctionnent, nous avons ajouté la dépendance vers le *modèle*.
+
+Par ailleurs, nous avons aussi ajouté la dépendance vers **XUnit** pour le projet des *tests unitaires* et la dépendance vers **ToolKit** pour les vues afin de pouvoir utiliser *MediaElement* pour la lecture de médias.
+
+---
+
## Diagramme de classe
```plantuml
@@ -174,19 +204,19 @@ Title .. Manager
CustomTitle --|> Title
InfoTitle --|> Title
-InfoTitle o-- "+ Genre" Genre
-InfoTitle o-- "+ Artist" Artist
-InfoTitle o-- "+ Feat*" Artist
-
-Manager o-- "+ Albums*" Album
-Manager o-- "+ Artists*" Artist
-Manager o-- "+ InfoTitles*" InfoTitle
-Manager o-- "+ Playlists*" Playlist
-Manager o-- "+ CustomTitles*" CustomTitle
-Manager o-- "+ CurrentAlbum" Album
-Manager o-- "+ CurrentPlaylist" Playlist
-Manager o-- "+ CurrentInfoTitle" InfoTitle
-Manager o-- "+ CurrentPlaying" CustomTitle
+InfoTitle o--> "+ Genre" Genre
+InfoTitle o--> "+ Artist" Artist
+InfoTitle o--> "+ Feat*" Artist
+
+Manager o--> "+ Albums*" Album
+Manager o--> "+ Artists*" Artist
+Manager o--> "+ InfoTitles*" InfoTitle
+Manager o--> "+ Playlists*" Playlist
+Manager o--> "+ CustomTitles*" CustomTitle
+Manager o--> "+ CurrentAlbum" Album
+Manager o--> "+ CurrentPlaylist" Playlist
+Manager o--> "+ CurrentInfoTitle" InfoTitle
+Manager o--> "+ CurrentPlaying" CustomTitle
@enduml
```
@@ -491,14 +521,14 @@ class StubPlaylist {
LinqXmlSerialization --|> IDataManager
StubManager --|> IDataManager
-StubManager *-- "+ StubArtist" StubArtist
-StubManager *-- "+ StubPlaylist" StubPlaylist
-StubManager *-- "+ StubAlbum" StubAlbum
-StubManager *-- "+ StubInfoTitle" StubInfoTitle
-StubManager *-- "+ StubCustomTitle" StubCustomTitle
-StubInfoTitle *-- "+ StubArtist" StubArtist
-StubAlbum *-- "+ StubArtist" StubArtist
-LinqXmlSerialization o-- "+ StubInfoTitle" StubInfoTitle
+StubManager *--> "+ StubArtist" StubArtist
+StubManager *--> "+ StubPlaylist" StubPlaylist
+StubManager *--> "+ StubAlbum" StubAlbum
+StubManager *--> "+ StubInfoTitle" StubInfoTitle
+StubManager *--> "+ StubCustomTitle" StubCustomTitle
+StubInfoTitle *--> "+ StubArtist" StubArtist
+StubAlbum *--> "+ StubArtist" StubArtist
+LinqXmlSerialization o--> "+ StubInfoTitle" StubInfoTitle
@enduml
```
@@ -556,35 +586,38 @@ class StubInfoTitle {}
class StubPlaylist {}
class IDataManager {}
class LinqXmlSerialization {}
-class StubManager {}
+class StubManager
+{
+ + Manager(IDataManager dataManager)
+}
class Manager {}
-StubAlbum o-- "+ Albums*" Album
-StubArtist *-- "+ Artists*" Artist
-StubCustomTitle *-- "+ CustomTitles*" CustomTitle
-StubInfoTitle *-- "+ InfoTitles*" InfoTitle
-StubPlaylist *-- "+ Playlists*" Playlist
-
-IDataManager .. Album
-IDataManager .. Artist
-IDataManager .. InfoTitle
-IDataManager .. CustomTitle
-IDataManager .. Playlist
-IDataManager .. Genre
-
-LinqXmlSerialization o-- "+ Artists*" Artist
-LinqXmlSerialization o-- "+ Albums*" Album
-LinqXmlSerialization o-- "+ Playlists*" Playlist
-LinqXmlSerialization o-- "+ Infotitles*" InfoTitle
-LinqXmlSerialization o-- "+ Customtitles*" CustomTitle
-
-StubManager .. InfoTitle
-StubManager .. Artist
-StubManager .. Album
-StubManager .. CustomTitle
-StubManager .. Playlist
-
-Manager *-- "+ DataManager" IDataManager
+StubAlbum o--> "+ Albums*" Album
+StubArtist *--> "+ Artists*" Artist
+StubCustomTitle *--> "+ CustomTitles*" CustomTitle
+StubInfoTitle *--> "+ InfoTitles*" InfoTitle
+StubPlaylist *--> "+ Playlists*" Playlist
+
+IDataManager ..> Album
+IDataManager ..> Artist
+IDataManager ..> InfoTitle
+IDataManager ..> CustomTitle
+IDataManager ..> Playlist
+IDataManager ..> Genre
+
+LinqXmlSerialization o--> "+ Artists*" Artist
+LinqXmlSerialization o--> "+ Albums*" Album
+LinqXmlSerialization o--> "+ Playlists*" Playlist
+LinqXmlSerialization o--> "+ Infotitles*" InfoTitle
+LinqXmlSerialization o--> "+ Customtitles*" CustomTitle
+
+StubManager ..> InfoTitle
+StubManager ..> Artist
+StubManager ..> Album
+StubManager ..> CustomTitle
+StubManager ..> Playlist
+
+Manager *--> "+ DataManager" IDataManager
@enduml
```
@@ -603,6 +636,7 @@ Ce diagramme représente les **liens** entre les deux diagrammes ci-dessus.
Notre projet est un projet MAUI se nommant **Linaris**. Une erreur a été effectuée lors de la conception, ce qui fait que nos vues
portent le même nom. Pour les différencier, le paquet *Linaris* qui concerne les vues sera écrit en italique.
+Tous ces projets sont en .NET 7.0.
#### Model
@@ -618,14 +652,15 @@ Nos vues (*Linaris*) ont besoin de Model afin d'effectuer le data-binding pour q
#### Console
-Ce paquet contient une application console C#.
-Pour effectuer différents test fonctionnels sur nos différentes classes du modèle, l'application console (**Console**) a besoin de celui-ci.
+Ce paquet contient une application console C#. Elle contient donc nos tests fonctionnels de notre application.
+Pour effectuer différents tests fonctionnels sur nos différentes classes du modèle, l'application console (**Console**) a besoin de celui-ci.
#### TestUnitaires
Ce paquet contient les tests unitaires de nos différentes classes. Il utilise *xUnit* pour les réaliser.
Pour effectuer ceux-ci, le paquet correspondant (**TestUnitaires**) dépend du modèle.
+---
## Diagramme de séquence
@@ -658,32 +693,3 @@ end
Notre sérialisation permet de sauvegarder nos données dans des fichiers *XML* ainsi que de charger dans des collections les données contenues dans ceux-ci.
Cette méthode est appelée lorsque l'utilisateur démarre l'application *Linaris* (MAUI). Celle-ci appelle ensuite les différentes fonctions de chargement codées en *C#* présentes dans la classe *LinqXmlSerialization*. Grâce à la bibliothèque **LINQ_XML**, la sérialisation peut récupérer les données présentes dans les différents fichiers pour les classes **Artist**, **CustomTitle** et **Playlist** et les mettre dans les différentes *ObservableCollection*. Pour les classes **InfoTitle** et **Album**, les données sont récupérées dans les collections des stubs correspondant et les mettre dans les différentes *ObservableCollection*. Les données sont ensuite utilisables par les vues via le **manager**.
-
-
----
-
-#### Description de l'architecture
-
-Notre programme se compose de deux parties distinctes : les **vues** et le **modèle**.
-
-Pour les **vues**, cela correspond aux visuels de l'application. Pour le modèle, cela correspond à la logique de l'application, son fonctionnement.
-Ces deux parties sont liées par le **DataBinding** liant les données et le modèle avec les vues.
-
-
-
-Pour permettre cela, nous avons mis en oeuvre le patron de conception de **"façade"** grâce à la classe *Manager*. En effet, cette classe est un *point d'entrée* vers le modèle, où le fonctionnement est caché par des méthodes et propriétés comme c'est le cas pour les listes d'objets. Les vues ne savent pas comment ces listes sont créées, elles ne font que l'utiliser. Cette classe **gère le modèle** mais est aussi l'interlocuteur des vues. C'est un **lien** entre ces deux parties. Cela nous permettait de bien **séparer les vues et le modèle**, mais aussi de **réduire** et **clarifier** le code présent dans le code-behind des vues.
-
-
-
-De plus, nous avons intégré le patron de conception de **"stratégie"** grâce à l'interface *IDataManager* et l'*injection de dépendance par le contructeur* du Manager. En effet, cela nous permet de *changer de méthode* de sérialisation très facilement. Nous pouvons donc utiliser les stubs pour tester le programme et repasser sur la sérialisation XML pour utiliser l'application en un simple changement. Cela permet une **adaptabilité** de code non négligeable. Il suffit de changer le paramètre donné au constructeur du Manager.
-
-En outre, pour que cela fonctionne, l'interface *IDataManager* est indispensable, afin de s'assurer que toutes les méthodes de sérialisation aient bien **toutes les méthodes** nécessaires au bon fonctionnement de l'application. Grâce à cela, nous n'avons pas à nous demander quelle est la méthode de sérialisation pusique l'appel de la méthode de l'interface appellera la méthode de la technique de sérialisation demandée. Nous obtenons un résultat différent selon la méthode **sans changer le code**. Par exemple, dans la classe *App*, nous pouvons simplement appeler la méthode de sérialisation du manager, nous n'avons pas à changer ce code à chaque changement de méthode de sérialisation. Cela nous fait **gagner en temps** et en **adaptabilité de code**.
-
-
-Grâce à ces patrons de conception, nous pouvons passer des stubs à la sérialisation XML bien plus facilement et **sans changer le code** des vues.
-
-
-
-Afin de lier nos différents projets, nous avons ajouté des **dépendances**. En effet, pour que l'*application console*, les *vues* et les *tests unitaires* fonctionnent, nous avons ajouté la dépendance vers le *modèle*.
-
-Par ailleurs, nous avons aussi ajouté la dépendance vers **XUnit** pour le projet des *tests unitaires* et la dépendance vers **ToolKit** pour les vues afin de pouvoir utiliser *MediaElement* pour la lecture de médias.
\ No newline at end of file