diff --git a/README.md b/README.md index aa204b6..08cae90 100644 --- a/README.md +++ b/README.md @@ -4,12 +4,13 @@ ******* -Sommaire +### Sommaire 1. [Accessibilité](#acces) 2. [Progression](#progression) 3. [Présentation du projet](#presentation) - 4. [Contenu](#contenu) - 5. [Auteurs](#auteurs) + 4. [Architecture](#architecture) + 5. [Contenu](#contenu) + 6. [Auteurs](#auteurs) ******* @@ -27,7 +28,7 @@ Disponible sur :
-🚧 __EN PROGRESSION__ +## 🚧 __EN PROGRESSION__ ### Étape 1 : Développement des vues en XAML - Intégralité des pages proposées sur la page d'accueil développées @@ -90,22 +91,31 @@ Cette strcuture est une version remplaçant pour le moment le `Community Toolkit ### Étape 3 : MVVM Nous utilisons au sein de notre projet le **patron d'architecture MVVM** avec les ViewModels Wrapping et Applicatives. -- Les **Wrapping ViewModel** encapsulent les données du modèle et exposent des propriétés et des commandes nécessaires à la vue pour interagir avec le modèle. -- Les **Applicative ViewModel ** peuvent inclure une logique métier spécifique et des propriétés calculées, elles peuvent également exposer des commandes pour effectuer des actions spécifiques liées à la vue. - -```mermaid -classDiagram -direction LR - -``` - + +Nous retrouvons donc les 3 grandes parties du patron : + +- **Model** : +Le `Model` représente la `logique métier`. Il est écrit en `C#` et est adpaté pour diifférentes applications. + +- **View** : +Les `Vues` sont écrites en `XAML` et représentent l'interface utilisateur avec les vues de l'application. Le `Data Binding` est utilisé entre les propriétés du XAML et celles des ViewModels. Enfin, des évènements sont déclenchés à partir de certains composants des vues. + +- **ViewModel** : +Les `ViewModels` sont écrits en `C#` et sont divisables en deux grandes catégories : + * Les **Wrapping ViewModel** encapsulent les données du modèle et exposent des propriétés et des commandes nécessaires à la vue pour interagir avec le modèle. + * Les **Applicative ViewModel** peuvent inclure une logique métier spécifique et des propriétés calculées, elles peuvent également exposer des commandes pour effectuer des actions spécifiques liées à la vue. + +Le schéma suivant montre bien les relations entre les grandes parties du `patron MVVM` : + +![Schema_MVVM](documentation/schema_mvvm.png) + Le **diagramme de classes** pouvant être extrèmement grand à cause des multiples classes au sein de notre projet, j'ai décidé de représenter une partie de celui-ci qui pourrait se répéter pour toutes les autres parties. L'objectif principal étant de comprendre comment fonctionne le **modèle MVVM** et comment les classes intéragissent entre elles, j'ai choisi de faire mon exemple avec la partie des livres qui est la plus générale du sujet. ******* -### **Présentation** +## **Présentation** LivreLand : votre bibliothèque connectée ! Retrouver tous vos livres préférés en un clic. @@ -140,7 +150,7 @@ Retrouver tous vos livres préférés en un clic. **TP3** : - [ ] Modifier l'intégralité du code pour que l'application utilise désormais le MVVM Community Toolkit à la place du toolkit personnel -**TP 4** : +**TP 4** : Ajouter les vues et les VM nécessaires pour permettre : - [x] Le scan de code-barres afin d'ajouter de nouveaux livres * le scan de code-barres fonctionne mais le livre n'est pas encore directement ajouté dans la liste @@ -148,6 +158,161 @@ Ajouter les vues et les VM nécessaires pour permettre : ******* + + +## Architectures du modèle et des services fournises + +Dans cette partie, vous retrouverez dans un premier temps deux diagrammes mis à disposition dans le sujet représentant d'abord le `Modèle` puis les `Services et Interfaces` : + +### Modèle +```mermaid +classDiagram +direction LR +class Book { + +Id : string + +Title : string + +Publishers : List~string~ + +PublishDate : DateTime + +ISBN13 : string + +Series : List~string~ + +NbPages : int + +Format : string + +ImageSmall : string + +ImageMedium : string + +ImageLarge : string +} + +class Languages { + <