Modification diagrammes
continuous-integration/drone/push Build is passing Details

devGuillaume
Yoan BRUGIÈRE 2 years ago
parent d28d4ad590
commit 9b8cb50303

@ -78,7 +78,7 @@ class ObjetOhara {
}
class XML_Serializer {
+ XML_Serializer()
+ XML_Serializer(string path)
+ void SetPersonnage(List<Personnage> listePerso)
+ void SetFDD(List<FruitDuDemon> listeFDD)
+ void SetBestiaire(List<Bestiaire> listeBest)
@ -100,11 +100,24 @@ interface IDataManager {
IEnumerable<FruitDuDemon> GetFruits()
IEnumerable<Ile> GetIles()
IEnumerable<Personnage> GetPersonnages()
void SetBateau(List<Bateau> listeBateaux);
void SetBestiaire(List<Bestiaire> listeBest);
void SetEquipage(List<Equipage> listeEquip);
void SetFDD(List<FruitDuDemon> listeFDD);
void SetIle(List<Ile> listeIle);
void SetPersonnage(List<Personnage> listePerso);
}
class Manager {
+ IDataManager DataManager
+ Manager()
+ ObservableCollection<Bateau> Bateaux
+ ObservableCollection<Personnage> Personnages
+ ObservableCollection<Fruits> Fruits
+ ObservableCollection<Ile> Iles
+ ObservableCollection<Bestiaire> Bestiaire
+ ObservableCollection<Equipage> Equipage
+ ObjetOhara? SelectedItem
+ Manager(IDataManager dataManager)
+ List<Personnage> GetPersonnages()
+ List<FruitDuDemon> GetFruits()
+ List<Equipage> GetEquipages()
@ -112,9 +125,9 @@ class Manager {
+ List<Bestiaire> GetBestiaires()
+ List<Ile> GetIles()
+ List<FruitDuDemon> FiltrerFDD(string type)
+ List<FruitDuDemon> RechercherFDD(string text, List<FruitDuDemon> listeFDD)
+ List<ObjetOhara> RecherObjetOhara(string text, List<ObjetOhara> liste)
+ List<ObjetOhara> GetFavoris()
+ void AddBateauFavoris(Bateau bateau)
+ void ModifierFavoris(ObjetOhara obj, bool value)
}
class StubManager {
@ -131,6 +144,12 @@ class StubManager {
+ IEnumerable<Bateau> GetBateaux()
+ IEnumerable<Bestiaire> GetBestiaires()
+ IEnumerable<Ile> GetIles()
+ void SetBateau(List<Bateau> listeBateaux)
+ void SetBestiaire(List<Bestiaire> listeBest)
+ void SetEquipage(List<Equipage> listeEquip)
+ void SetFDD(List<FruitDuDemon> listeFDD)
+ void SetILe(List<Ile> listeIle)
+ void SetPersonnage(List<Personnage> listePerso)
}
class StubBateau {
@ -202,25 +221,25 @@ Ceci est le diagramme de classe de notre application Ohara se basant sur l'unvie
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.
-> Classe qui représente les différents bateaux avec leur nom, leur affiliation à un équipage (Implémentation de la classe Equipage), 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.
-> 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) ,une description de l'équipage ainsi qu'une liste des membres de l'équipage (Implémentation de la classe Personnage) et une liste des alliés de l'équipage (D'autre équipages) .
-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.
-> 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, ses forces et ses faiblesses ainsi que son ou ses utilisateurs (Implémentation de la classe Personnage).
-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 !").
-> 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 !") ansi qu'un liste cotenant son ou ses équipages (Implémentation de la classe Equipage) et une liste de son ou ses Fruits du démon (Implémentation de FruitDuDemon).
-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.
-> La classe ObjetOhara ne représente rien au sein de l'oeuvre One Piece. Elle sert seulement a regrouper le nom, l'image et l'attribut "EstFavori" 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.
@ -285,74 +304,9 @@ 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 #DarkOrchid {
+ XML_Serializer()
class XML_Serializer #LimeGreen {
+ XML_Serializer(string path)
+ void SetPersonnage(List<Personnage> listePerso)
+ void SetFDD(List<FruitDuDemon> listeFDD)
+ void SetBestiaire(List<Bestiaire> listeBest)
@ -367,18 +321,31 @@ class XML_Serializer #DarkOrchid {
+ IEnumerable<Personnage> GetPersonnages()
}
interface IDataManager {
interface IDataManager #LimeGreen {
IEnumerable<Bateau> GetBateaux()
IEnumerable<Bestiaire> GetBestiaires()
IEnumerable<Equipage> GetEquipages()
IEnumerable<FruitDuDemon> GetFruits()
IEnumerable<Ile> GetIles()
IEnumerable<Personnage> GetPersonnages()
void SetBateau(List<Bateau> listeBateaux);
void SetBestiaire(List<Bestiaire> listeBest);
void SetEquipage(List<Equipage> listeEquip);
void SetFDD(List<FruitDuDemon> listeFDD);
void SetIle(List<Ile> listeIle);
void SetPersonnage(List<Personnage> listePerso);
}
class Manager {
class Manager #LimeGreen {
+ IDataManager DataManager
+ Manager()
+ ObservableCollection<Bateau> Bateaux
+ ObservableCollection<Personnage> Personnages
+ ObservableCollection<Fruits> Fruits
+ ObservableCollection<Ile> Iles
+ ObservableCollection<Bestiaire> Bestiaire
+ ObservableCollection<Equipage> Equipage
+ ObjetOhara? SelectedItem
+ Manager(IDataManager dataManager)
+ List<Personnage> GetPersonnages()
+ List<FruitDuDemon> GetFruits()
+ List<Equipage> GetEquipages()
@ -386,12 +353,12 @@ class Manager {
+ List<Bestiaire> GetBestiaires()
+ List<Ile> GetIles()
+ List<FruitDuDemon> FiltrerFDD(string type)
+ List<FruitDuDemon> RechercherFDD(string text, List<FruitDuDemon> listeFDD)
+ List<ObjetOhara> RecherObjetOhara(string text, List<ObjetOhara> liste)
+ List<ObjetOhara> GetFavoris()
+ void AddBateauFavoris(Bateau bateau)
+ void ModifierFavoris(ObjetOhara obj, bool value)
}
class StubManager {
class StubManager #LimeGreen {
+ StubPersonnage StubPersonnage
+ StubFruitDuDemon StubFruitDuDemon
+ StubEquipage StubEquipage
@ -407,71 +374,21 @@ class StubManager {
+ 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 ...
Concernant la persistance de l'application, elle est gérée par la classe XML_Serializer, cette dernière est instancier en paramètre du constructeur de Manager au lancement de l'application. Elle comporte deux constructeurs un qui ne prend aucun paramètre sauvegardant les informations dans le dossier courrant de l'application et l'autre prenant en paramètre un chemin permettant de choisir où stocker les informations (Dans le cas de notre application les fichier son stocker dans le 'AppDataDirectory'). Au lancement de l'application le constructeur de la classe XML_Serializer est donc lancé et il va, si un fichiers .xml n'est pas présent ( il y a un fichier .xml par classe sauf la classe ObjetOhara), le créers à l'aide du StubManager et les méthodes SetPersonnage, SetBateau, etc...Sinon il ne fait rien car les fichiers sont déjà tous présent. Le manager va donc pouvoir ensuite utliser les différentes méthodes get du XML_Serializer pour récupérer les objets et les mettres dans ses collections (Fruits,Personnages,...). Enfin concernant la sauvegarde des informations, dès qu'un objet est modifié, créée ou supprimé à l'aide des méthodes du Manager, il va simplement rappeler la méthode Set de l'objet concerné ce qui est assez lourd mais fonctionnel
# Diagramme de classes sur nos parties ajoutées

Loading…
Cancel
Save