From d6ba2acaaa020b08e9a89c3de5c065852add652b Mon Sep 17 00:00:00 2001 From: Corentin LEMAIRE Date: Fri, 2 Jun 2023 14:23:32 +0200 Subject: [PATCH] Placing explanations under corresponding class diagrams --- README.md | 156 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 82 insertions(+), 74 deletions(-) diff --git a/README.md b/README.md index a7cf29c..aee1051 100644 --- a/README.md +++ b/README.md @@ -191,6 +191,49 @@ Manager o-- "+ CurrentPlaying" CustomTitle @enduml ``` +### Explications + +###### Note + +*Les classes CustomTitle, Playlist et Manager héritent de l'interface INotifyPropertyChanged afin de permettre le DataBinding de ces classes* + + +#### Album + +Cette classe sert à modéliser des albums de musique. Ils ne sont pas jouables et sont uniquement implantés à titre informatif. Dans ce but, elle comporte plusieurs attributs comme un nom, une description, des informations complémentaires +ou encore une URL pour son image (la pochette). + + +#### Artist + +Cette classe sert à modéliser les artistes qui réalise les albums. Il ne possède qu'un nom en atrribut. + +#### Title + +Cette classe sert à modé+liser différents titres. Il possède plusieurs attributs comme un nom, une URL pour son image (cover) ainsi que des informations complémentaires. + + +#### InfoTitle + +Cette classe hérite de **Title**. Elle hérite donc de tout ses attributs. Comme son nom l'indique, ces titres ont comme spécificité d'être uniquement informatif. Ils sont contenus dans les albums. Elle possède également d'autres attributs comme +une description, un artiste (classe **Artist**) et une liste d'artiste pour les featuring. + +#### CustomTitle + +Cette classe hérite de **Title**. Elle hérite donc de tout ses attributs. Ces titres sont destinés à pouvoir être ajouter dans des playlists et à être jouer. +Hormis les attributs hérités, cette classe possède un attribut path (chemin) qui lui permet d'indiquer où se situe le fichier audio. + + +#### Playlist + +Cette classe possède une structure similaire à la classe **Album**. Elle contient des titres personnalisés (**CustomTitle**). Les morceaux sont joués dans un ordre précis (du premier jusqu'au dernier). Cette classe hérite des attributs de Title. Cette classe permet la gestion des playlists, soit l'accès à la musique suivante, précédente en fonction de la demande de l'utilisateur (en boule, aléatoire). Cela permet une lecture de musiques d'une playlist en boucle sans problème. + + +#### Manager + +Notre classe manager est une interface entre le code-behind et les vues. Il permet de gérer les données grâce au DataManager et de gérer les fonctionnalités de l'application comme les playlists. Cette interface fonctionne avec le parton de conception de façade, étant une interface, un point d'entrée de l'application vers le modèle. De plus, nous utilisons un deuxième patron de conception, qui est la stratégie, avec une injection de dépendance par le constructeur de la classe. En effet, afin de créer un Manager, il faut joindre la méthode de sérialisation (stubs ou LINQ dans notre cas). + +--- ```plantuml @@ -461,6 +504,43 @@ LinqXmlSerialization o-- "+ StubInfoTitle" StubInfoTitle @enduml ```` +### Explications + +#### LinqXmlSerialization + +Notre sérialisation fonctionne avec lecture/écriture dans des fichiers XML. Pour cela, nous utilisons la bibliothèque *LINQ_XML* qui nous permet de créer et de modifier les différents fichiers. Pour la sérialisation des CustomTitle et des Playlists nous utilisons le LINQ. Cependant, pour les classes InfoTitle, Artist et Albums, ces données sont récupérées des Stubs, étant statiques et à but informatif. Cette sérialisation a été testée et approuvée sur Windows et Android. + + +#### StubManager + +Le StubManager est un point d'entrée vers les Stubs, permettant de les gérer avec des requêtes CRUD. Ces Stubs vont permettre de tester l'application, le modèle et l'application en générant des données directement dans le code. Cette classe permet de séparer le code de chaque Stub afin de le gérer avec plus de facilité. + + +#### StubAlbum + +Le StubAlbum permet de générer des albums avec des informations écrites dans le code. Il permet également de les gérer. Cette classe utiliser les stubs StubArtist afin de lier l'album avec l'artiste. Ce stub est aussi utilisé afin d'afficher ces albums à titre informatif. + + +#### StubArtist + +Le StubArtist permet de créer des informations sur des artistes. Il permet de plus de créer les artistes pour les InfoTitle à afficher dans les titres informatifs présents dans les albums. + + +#### StubInfoTitle + +Le StubInfoTitle est un stub avec des valeurs pour les titres informatifs affichés dans les albums déjà rédigées. Il est donc utilisé dans la sérialisation LINQ aussi. + + +#### StubCustomTitle + +Le StubCustomTitle permet de tester la gestion des titres personnalisés avec des valeurs prédéfinies. Ce stub n'est utilisé que pour les tests et le debug. + + +#### StubPlaylist + +Le StubPlaylist créé des informations écrites dans le code afin de tester les méthodes et la classe des playlists. Elle n'est pas utilisée par la sérialisation LINQ. + +--- ```plantuml @startuml @@ -505,83 +585,11 @@ Manager *-- "+ DataManager" IDataManager @enduml ``` -# Note - -*Les classes CustomTitle, Playlist et Manager héritent de l'interface INotifyPropertyChanged afin de permettre le DataBinding de ces classes* - - ### Explications -#### Album - -Cette classe sert à modéliser des albums de musique. Ils ne sont pas jouables et sont uniquement implantés à titre informatif. Dans ce but, elle comporte plusieurs attributs comme un nom, une description, des informations complémentaires -ou encore une URL pour son image (la pochette). - - -#### Artist - -Cette classe sert à modéliser les artistes qui réalise les albums. Il ne possède qu'un nom en atrribut. - -#### Title - -Cette classe sert à modé+liser différents titres. Il possède plusieurs attributs comme un nom, une URL pour son image (cover) ainsi que des informations complémentaires. - - -#### InfoTitle - -Cette classe hérite de **Title**. Elle hérite donc de tout ses attributs. Comme son nom l'indique, ces titres ont comme spécificité d'être uniquement informatif. Ils sont contenus dans les albums. Elle possède également d'autres attributs comme -une description, un artiste (classe **Artist**) et une liste d'artiste pour les featuring. - -#### CustomTitle - -Cette classe hérite de **Title**. Elle hérite donc de tout ses attributs. Ces titres sont destinés à pouvoir être ajouter dans des playlists et à être jouer. -Hormis les attributs hérités, cette classe possède un attribut path (chemin) qui lui permet d'indiquer où se situe le fichier audio. - - -#### Playlist - -Cette classe possède une structure similaire à la classe **Album**. Elle contient des titres personnalisés (**CustomTitle**). Les morceaux sont joués dans un ordre précis (du premier jusqu'au dernier). Cette classe hérite des attributs de Title. Cette classe permet la gestion des playlists, soit l'accès à la musique suivante, précédente en fonction de la demande de l'utilisateur (en boule, aléatoire). Cela permet une lecture de musiques d'une playlist en boucle sans problème. - - -#### Manager - -Notre classe manager est une interface entre le code-behind et les vues. Il permet de gérer les données grâce au DataManager et de gérer les fonctionnalités de l'application comme les playlists. Cette interface fonctionne avec le parton de conception de façade, étant une interface, un point d'entrée de l'application vers le modèle. De plus, nous utilisons un deuxième patron de conception, qui est la stratégie, avec une injection de dépendance par le constructeur de la classe. En effet, afin de créer un Manager, il faut joindre la méthode de sérialisation (stubs ou LINQ dans notre cas). - - -#### LinqXmlSerialization - -Notre sérialisation fonctionne avec lecture/écriture dans des fichiers XML. Pour cela, nous utilisons la bibliothèque *LINQ_XML* qui nous permet de créer et de modifier les différents fichiers. Pour la sérialisation des CustomTitle et des Playlists nous utilisons le LINQ. Cependant, pour les classes InfoTitle, Artist et Albums, ces données sont récupérées des Stubs, étant statiques et à but informatif. Cette sérialisation a été testée et approuvée sur Windows et Android. - - -#### StubManager - -Le StubManager est un point d'entrée vers les Stubs, permettant de les gérer avec des requêtes CRUD. Ces Stubs vont permettre de tester l'application, le modèle et l'application en générant des données directement dans le code. Cette classe permet de séparer le code de chaque Stub afin de le gérer avec plus de facilité. - - -#### StubAlbum - -Le StubAlbum permet de générer des albums avec des informations écrites dans le code. Il permet également de les gérer. Cette classe utiliser les stubs StubArtist afin de lier l'album avec l'artiste. Ce stub est aussi utilisé afin d'afficher ces albums à titre informatif. - - -#### StubArtist - -Le StubArtist permet de créer des informations sur des artistes. Il permet de plus de créer les artistes pour les InfoTitle à afficher dans les titres informatifs présents dans les albums. - - -#### StubInfoTitle - -Le StubInfoTitle est un stub avec des valeurs pour les titres informatifs affichés dans les albums déjà rédigées. Il est donc utilisé dans la sérialisation LINQ aussi. - - -#### StubCustomTitle - -Le StubCustomTitle permet de tester la gestion des titres personnalisés avec des valeurs prédéfinies. Ce stub n'est utilisé que pour les tests et le debug. - - -#### StubPlaylist - -Le StubPlaylist créé des informations écrites dans le code afin de tester les méthodes et la classe des playlists. Elle n'est pas utilisée par la sérialisation LINQ. +Ce diagramme représente les liens entre les deux diagrammes ci-dessus. +--- ## Diagramme de paquetage