diff --git a/README.md b/README.md index b8cc88c..e1e0fa5 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ You can find all the documentation [here](https://codefirst.iut.uca.fr/git/coren - Listen to your titles - Get informed on famous albums and titles -## Not available features yet +## Features not yet available - Customize listening of your music (balance, pitch...) - Login system @@ -56,7 +56,7 @@ You can find all the documentation [here](https://codefirst.iut.uca.fr/git/coren - The Layout doesn't disappear as the screen is shrinking -## Complex feature +## Complex features - Music player - We went through lot's of issues when trying to implement the music player. This was the most complex feature of Linaris. Indeed, we really wanted to offer the possibility to play music on both Windows and Android, and not only one platform. @@ -865,31 +865,3 @@ Le premier alt est utile afin de s'assurer qu'une playlist est en cours, pour ** | 7 | Sinon, cela renvoie le morceau à la suite du morceau en cours dans la playlist actuelle | | 8 | Le Manager peut donc renvoyer le morceau à jouer au Footer | | 9 | Le footer peut donc lancer la lecture du morceau à jouer | - ---- - -### 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.