You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Ohara_MAUI/README.md

18 KiB

Diagramme de classe

@startuml

hide circle
allowmixing
skinparam classAttributeIconSize 0
skinparam classBackgroundColor #ffffb9
skinparam classBorderColor #800000
skinparam classArrowColor #800000
skinparam classFontColor #black
skinparam classFontName Tahoma

class Bateau {
    + string NomRomanise
    + int PremierChap 
    + int PremierEp 
    + string Description
    + string Caracteristique
    + Bateau(string nom, string nomRomanise, int premierChap, int premierEp,\n string description, string caracteristique, string image)
    + Bateau(string nom, string nomRomanise, Equipage affiliation, int premierChap,\n int premierEp, string description, string caracteristique, string image)
}

class Bestiaire {
    + string Origine
    + string Description
    + string Caracteristique
    + Bestiaire(string nom, string origine, string description,\n string caracteristiques, string image)
}

class Equipage {
    + string NomRomanise
    + string Region
    + int PremierChap
    + int PremierEp
    + bool Statut
    + string  Description
    + Equipage(string nom, string nomRomanise, string region, int premierChap,\n int premierEp, bool statut, string description, string image)
}

class FruitDuDemon {
    + string NomRomanise
    + string Type
    + int PremierChap
    + int PremierEp 
    + string Description
    + string Forces
    + string Faiblesses
    + FruitDuDemon(string nom, string nomRomanise, string type, int premierChap, int premierEp,\n string description, string forces, string faiblesses, string image)
    + FruitDuDemon(string nom, string nomRomanise, string type, int premierChap, int premierEp, string description,\n string forces, string faiblesses, string image, List<Personnage> utilisateur)
}

class Ile {
    + string NomRomanise
    + string Region
    + int PremierChap
    + int PremierEp
    + string Description
    + string Geographie
    + Ile(string nom, string nomRomanise, string region, int premierChap, \n int premierEp, string description, string geographie, string image)
}

class Personnage {
    + double Prime
    + string Epithete
    + int Age
    + double Taille
    + string Origine
    + string Biographie
    + string Citation
    + Personnage(string nom , double prime, string epithete, int age, dobule taille,\n string origine, string biographie,string citation, string image)
}

class ObjetOhara {
    + string Nom 
    + string? Image
    ObjetOhara(string nom, string image)
}

class XML_Serializer {
    + XML_Serializer()
    + void SetPersonnage(List<Personnage> listePerso)
    + void SetFDD(List<FruitDuDemon> listeFDD)
    + void SetBestiaire(List<Bestiaire> listeBest)
    + void SetEquipage(List<Equipage> listeEquip)
    + void SetIle(List<Ile> listIle)
    + void SetBateau(List<Bateau> listeBateau)
    + IEnumerable<Bateau> GetBateaux()
    + IEnumerable<Bestiaire> GetBestiaires() 
    + IEnumerable<Equipage> GetEquipages()
    + IEnumerable<FruitDuDemon> GetFruits()
    + IEnumerable<Ile> GetIles()
    + IEnumerable<Personnage> GetPersonnages()
}

interface IDataManager {
    IEnumerable<Bateau> GetBateaux() 
    IEnumerable<Bestiaire> GetBestiaires()
    IEnumerable<Equipage> GetEquipages()
    IEnumerable<FruitDuDemon> GetFruits()
    IEnumerable<Ile> GetIles()
    IEnumerable<Personnage> GetPersonnages()
}

class Manager {
    + IDataManager DataManager
    + Manager()
    + List<Personnage> GetPersonnages()
    + List<FruitDuDemon> GetFruits()
    + List<Equipage> GetEquipages()
    + List<Bateau> GetBateaux()
    + List<Bestiaire> GetBestiaires()
    + List<Ile> GetIles()
    + List<FruitDuDemon> FiltrerFDD(string type)
    + List<FruitDuDemon> RechercherFDD(string text, List<FruitDuDemon> listeFDD)
    + List<ObjetOhara> GetFavoris()
    + void AddBateauFavoris(Bateau bateau) 
}

class StubManager {
    + StubPersonnage StubPersonnage
    + StubFruitDuDemon StubFruitDuDemon
    + StubEquipage StubEquipage
    + StubBateau  StubBateau
    + StubBestiaire StubBestiaire
    + StubIle StubIle
    + StubManager()
    + IEnumerable<Personnage> GetPersonnages() 
    + IEnumerable<FruitDuDemon> GetFruits()
    + IEnumerable<Equipage> GetEquipages()
    + IEnumerable<Bateau> GetBateaux()
    + IEnumerable<Bestiaire> GetBestiaires()
    + IEnumerable<Ile> GetIles()
}

class StubBateau {
    + IEnumerable<Bateau> RecupererBateau()
}

class StubBestiaire {
    + IEnumerable<Bestiaire> RecupererBestiaire()
}

class StubEquipage {
    + IEnumerable<Equipage> RecupererEquipage()
}

class StubFruitDuDemon {
    + IEnumerable<FruitDuDemon> RecupererFruitDuDemon()
}

class StubIle {
    + IEnumerable<Ile> RecupererIle()
}

class StubPersonnage {
    + IEnumerable<Personnage> RecupererPersonnage()
}


FruitDuDemon --> "+ Utilisateur" Personnage 
Personnage --> "+ Equipage" Equipage
Personnage --> "+ Fruit" FruitDuDemon
Bateau  --> "+ Affiliation" Equipage
Equipage --> "+ Capitaine" Personnage
Equipage --> "+ Membre" Personnage
Equipage --> "+ Allie" Equipage

Ile --|> ObjetOhara
FruitDuDemon --|> ObjetOhara
Personnage --|> ObjetOhara
Equipage --|> ObjetOhara
Bateau --|> ObjetOhara
Bestiaire --|> ObjetOhara

StubManager --|> IDataManager
XML_Serializer --|> IDataManager

StubManager --> "+ StubIle" StubIle
StubManager --> "+ StubFruitDuDemon" StubFruitDuDemon 
StubManager --> "+ StubPersonnage" StubPersonnage 
StubManager --> "+ StubEquipage" StubEquipage 
StubManager --> "+ StubBateau" StubBateau
StubManager --> "+ StubBestiaire" StubBestiaire 

Manager --> "+ DataManager" IDataManager

StubIle *--> "+ ile" Ile
StubFruitDuDemon *--> "+ fdd" FruitDuDemon
StubPersonnage *--> "+ perso" Personnage
StubEquipage *--> "+ Lequipage" Equipage
StubBateau *--> "+ bateau" Bateau
StubBestiaire *--> "+ best" Bestiaire

@enduml

Description du diagramme de classe

Ceci est le diagramme de classe de notre application Ohara se basant sur l'unviers de l'oeuvre.

Il possède 7 classes :

-Bateau 
    -> Classe qui représente les différents bateaux avec leur nom, leur affiliation à un équipage, quand on les voit pour la première fois dans le manga et dans l'anime.

-Bestiaire 
    -> La classe Bestiaire représente toutes les races présents dans l'univers de One Piece avec leur nom, leur origine, une description ainsi que les caractéristiques de la race. 

-Equipage
    -> La classe Equipage représente les différents équipages de l'univers One Piece, c'est-à-dire les regroupements de pirates (personnages) qui se regroupent pour partir à l'aventure. On retrouve dans cette classe le nom de l'équipage, sa provenance (région), quand on le voit pour la première fois dans le manga et dans l'anime, son statut (est-ce que l'équipage est toujours actif ou non) ainsi qu'une description de l'équipage.

-Fruit du démon
    -> La classe Fruit du démon regroupe tous les fruits présents dans l'oeuvre. Les fruits du démons sont des aliments qui, une fois ingéré par un personnage, confère à son utilisateur des pouvoirs spéciaux. Cependant une fois ingéré l'utilisateur perds sa faculté à nager. On retrouve dans cette classe son nom, le type de fruit (paramecia, logia, zoan), quand on le voit pour la première fois dans le manga et dans l'anime, une description du fruit en question ainsi que ses forces et ses faiblesses.

-Ile 
    -> La classe Ile regroupe toutes les îles de l'oeuvre One Piece. On y retrouve son nom, la région dans laquelle elle se situe, quand on la voit pour la première fois dans le manga et dans l'anime, une description de l'île et une description de la localisation de l'île (qu'est-ce qu'il se trouve à proximité par exemple).

-Personnage
    -> La classe Personnage regroupe tous les personnages de l'oeuvre One Piece. On y retrouve le nom du personnage, la prime associé au personnage (chaque pirate ayant une prime pour sa capture car ils sont recherchés par l'Etat pour les différents crimes qu'ils ont pu commettre), l'âge du personnage, sa taille, son origine (région de naissance), une biographie associé au personnage pour pouvoir le présenter, et une citation associé au personnage qui le représente (exemple Luffy : "Le roi des pirates, ce sera moi !").

-ObjetOhara 
    -> La classe ObjetOhara ne représente rien au sein de l'oeuvre One Piece. Elle sert seulement a regrouper le nom et l'image dans une classe qui sont des éléments qui reviennent dans chaque classes du model, ce qui permet d'éviter la redondance.

Nous avons regroupé le nom et l'image dans une classe "Objet Ohara" dont toutes les autres classes hérite pour éviter la redondance et donc supprimer un certain nombre de ligne et faciliter la démarche.

Il possède aussi 6 stubs + le stub manager :

-StubBateau
    -> Le StubBateau sert à implémenter des objets de la classe Bateau au sein de l'application.

-StubBestiaire
    -> Le StubBestiaire sert à implémenter des objets de la classe Bestiaire au sein de l'application.

-StubEquipage
    -> Le StubEquipage sert à implémenter des objets de la classe Equipage au sein de l'application.

-StubFruitDuDemon
    -> Le StubFruitDuDemon sert à implémenter des objets de la classe FruitDuDemon au sein de l'application.

-StubIle
    -> Le StubIle sert à implémenter des objets de la classe Ile au sein de l'application.

-StubPersonnage
    -> Le StubPersonnage sert à implémenter des objets de la classe Personnage au sein de l'application.

-StubManager
    -> Le StubManager sert à gérer les différents Stubs.

Les Stubs sont reliés à chacunes des classes auxquelles ils correspondent (StubBateau à la classe Bateau, StubPersonnage à la classe Personnage, etc...). Ce sont des compositions car si les classes auxquelles ils sont reliés viennent à se faire détruire alors les stubs ne sont plus rien.

Il regroupe aussi :

-le Manager 
-IDataManager 
-Serializer

Ce diagramme de classe représente la structure de notre application.

Diagramme de classe en mettant en avant la partie persistance

@startuml

hide circle
allowmixing
skinparam classAttributeIconSize 0
skinparam classBackgroundColor #ffffb9
skinparam classBorderColor #800000
skinparam classArrowColor #800000
skinparam classFontColor #black
skinparam classFontName Tahoma

class Bateau {
    + string NomRomanise
    + int PremierChap 
    + int PremierEp 
    + string Description
    + string Caracteristique
    + Bateau(string nom, string nomRomanise, int premierChap, int premierEp,\n string description, string caracteristique, string image)
    + Bateau(string nom, string nomRomanise, Equipage affiliation, int premierChap,\n int premierEp, string description, string caracteristique, string image)
}

class Bestiaire {
    + string Origine
    + string Description
    + string Caracteristique
    + Bestiaire(string nom, string origine, string description,\n string caracteristiques, string image)
}

class Equipage {
    + string NomRomanise
    + string Region
    + int PremierChap
    + int PremierEp
    + bool Statut
    + string  Description
    + Equipage(string nom, string nomRomanise, string region, int premierChap,\n int premierEp, bool statut, string description, string image)
}

class FruitDuDemon {
    + string NomRomanise
    + string Type
    + int PremierChap
    + int PremierEp 
    + string Description
    + string Forces
    + string Faiblesses
    + FruitDuDemon(string nom, string nomRomanise, string type, int premierChap, int premierEp,\n string description, string forces, string faiblesses, string image)
    + FruitDuDemon(string nom, string nomRomanise, string type, int premierChap, int premierEp, string description,\n string forces, string faiblesses, string image, List<Personnage> utilisateur)
}

class Ile {
    + string NomRomanise
    + string Region
    + int PremierChap
    + int PremierEp
    + string Description
    + string Geographie
    + Ile(string nom, string nomRomanise, string region, int premierChap, \n int premierEp, string description, string geographie, string image)
}

class Personnage {
    + double Prime
    + string Epithete
    + int Age
    + double Taille
    + string Origine
    + string Biographie
    + string Citation
    + Personnage(string nom , double prime, string epithete, int age, dobule taille,\n string origine, string biographie,string citation, string image)
}

class ObjetOhara {
    + string Nom 
    + string? Image
    ObjetOhara(string nom, string image)
}

skinparam class XML_Serializer #DarkOrchid {
    BackgroundColor LightBlue
    + XML_Serializer()
    + void SetPersonnage(List<Personnage> listePerso)
    + void SetFDD(List<FruitDuDemon> listeFDD)
    + void SetBestiaire(List<Bestiaire> listeBest)
    + void SetEquipage(List<Equipage> listeEquip)
    + void SetIle(List<Ile> listIle)
    + void SetBateau(List<Bateau> listeBateau)
    + IEnumerable<Bateau> GetBateaux()
    + IEnumerable<Bestiaire> GetBestiaires() 
    + IEnumerable<Equipage> GetEquipages()
    + IEnumerable<FruitDuDemon> GetFruits()
    + IEnumerable<Ile> GetIles()
    + IEnumerable<Personnage> GetPersonnages()
}

interface IDataManager {
    IEnumerable<Bateau> GetBateaux() 
    IEnumerable<Bestiaire> GetBestiaires()
    IEnumerable<Equipage> GetEquipages()
    IEnumerable<FruitDuDemon> GetFruits()
    IEnumerable<Ile> GetIles()
    IEnumerable<Personnage> GetPersonnages()
}

class Manager {
    + IDataManager DataManager
    + Manager()
    + List<Personnage> GetPersonnages()
    + List<FruitDuDemon> GetFruits()
    + List<Equipage> GetEquipages()
    + List<Bateau> GetBateaux()
    + List<Bestiaire> GetBestiaires()
    + List<Ile> GetIles()
    + List<FruitDuDemon> FiltrerFDD(string type)
    + List<FruitDuDemon> RechercherFDD(string text, List<FruitDuDemon> listeFDD)
    + List<ObjetOhara> GetFavoris()
    + void AddBateauFavoris(Bateau bateau) 
}

class StubManager {
    + StubPersonnage StubPersonnage
    + StubFruitDuDemon StubFruitDuDemon
    + StubEquipage StubEquipage
    + StubBateau  StubBateau
    + StubBestiaire StubBestiaire
    + StubIle StubIle
    + StubManager()
    + IEnumerable<Personnage> GetPersonnages() 
    + IEnumerable<FruitDuDemon> GetFruits()
    + IEnumerable<Equipage> GetEquipages()
    + IEnumerable<Bateau> GetBateaux()
    + IEnumerable<Bestiaire> GetBestiaires()
    + IEnumerable<Ile> GetIles()
}

class StubBateau {
    + IEnumerable<Bateau> RecupererBateau()
}

class StubBestiaire {
    + IEnumerable<Bestiaire> RecupererBestiaire()
}

class StubEquipage {
    + IEnumerable<Equipage> RecupererEquipage()
}

class StubFruitDuDemon {
    + IEnumerable<FruitDuDemon> RecupererFruitDuDemon()
}

class StubIle {
    + IEnumerable<Ile> RecupererIle()
}

class StubPersonnage {
    + IEnumerable<Personnage> RecupererPersonnage()
}


FruitDuDemon --> "+ Utilisateur" Personnage 
Personnage --> "+ Equipage" Equipage
Personnage --> "+ Fruit" FruitDuDemon
Bateau  --> "+ Affiliation" Equipage
Equipage --> "+ Capitaine" Personnage
Equipage --> "+ Membre" Personnage
Equipage --> "+ Allie" Equipage

Ile --|> ObjetOhara
FruitDuDemon --|> ObjetOhara
Personnage --|> ObjetOhara
Equipage --|> ObjetOhara
Bateau --|> ObjetOhara
Bestiaire --|> ObjetOhara

StubManager --|> IDataManager
XML_Serializer --|> IDataManager

StubManager --> "+ StubIle" StubIle
StubManager --> "+ StubFruitDuDemon" StubFruitDuDemon 
StubManager --> "+ StubPersonnage" StubPersonnage 
StubManager --> "+ StubEquipage" StubEquipage 
StubManager --> "+ StubBateau" StubBateau
StubManager --> "+ StubBestiaire" StubBestiaire 

Manager --> "+ DataManager" IDataManager

StubIle *--> "+ ile" Ile
StubFruitDuDemon *--> "+ fdd" FruitDuDemon
StubPersonnage *--> "+ perso" Personnage
StubEquipage *--> "+ Lequipage" Equipage
StubBateau *--> "+ bateau" Bateau
StubBestiaire *--> "+ best" Bestiaire

@enduml

Description du diagramme de classe en mettant en avant la partie persistance

Nous avons fait la persistance ...

Diagramme de paquetage

logo

Description du diagramme de paquetage

Le diagramme de paquetage regroupe nos 4 solutions, le Model, le TestProject, le TestUnitaire et Ohara(vue).

A l'intérieur du Model nous avons regroupé tous les fichiersdans différents dossier pour pouvoir améliorer la visibilité de notre projet et pour ne pas se perdre dans les fichiers. On peut retrouver les dossier suivants :

-Classes : Ici retrouve toutes les classes de notre application,
-Stub : Ici on retrouve tout ce qui est lié au Stub de notre application,
-Managers : Ici on retrouve le IDataManager et le Manager,
-Serializer : Ici on retrouve tout ce qui est lié par rapport à la serialization.

Pour continuer dans notre vue il y a le dossier Ressources qui regroupe les dossiers Styles et Images.

Dans le dossier Image on retrouve toutes les images concernant l'application (images de personnages, logo, diagramme de paquetage, etc...).

Dans le dossier Styles on retrouve les Styles de notre application.

Diagramme de séquence

Serialization

@startuml

actor Utilisateur
participant Front
participant Serializer
participant Files
collections Collections

Utilisateur -> Front: Démarrage de l'application
Front -> Serializer: Appel de la fonction de chargement
Serializer -> Files:  Récupération des données des fichiers
Files --> Serializer: Retour des données des fichiers
Serializer -> Collections: Chargement des données dans les collections
Collections --> Serializer: Retour des données des stubs
Serializer --> Front: Données utilisables par les vues


@enduml

Description du diagramme de séquence de la Serialization

Tout d'abord, l'utilisateur démarre l'application MAUI, ensuite le Front s'occupe d'appeler la fonction de chargement, puis le Serializer récupère les données dans les fichiers et charge les données dans des collections qui sont ensuite utilisables par les vues.