```plantuml @startuml hide circle allowmixing skinparam classBackgroundColor #f89f40 skinparam namespaceBackgroundColor #fcb773 namespace Model #fcb773{ class Game{ +/Name:string +/Description:string +/Lien:string +/Cover:string +/Year:int +/Average:float +/Tags:ObservableCollection +Game(name:string, description:string, year:int, c_tags:List, cover:string, c_lien:string):void +GetHashCode():int +Equals(obj:object?):bool +Equals(other:Game?):bool +ToString():string +GetAvgRate():float +AddReview(review:Review):void +RemoveReview(review:Review):void +NameChange(newName:string):void +DescChange(newDesc:string):void +TagChange(newTag:List):void +YearChange(newYear:int):void } class User{ +/Username:string +/Biographie:string +/Email:string +/Password:string +/UserImage:string +User(userImage:string, username:string, biographie:string, email:string, password:string):void +AddReview(game:Game, rate:float, text:string):void +RemoveSelfReview(game:Game, rate:float, text:string):void +FollowAGame(game:Game):void +RemoveAGame(game:Game):void } class Review{ +/Rate:float +/Text:string +/AuthorName:string +ToString():string +EditReview(text:string):void +EditRate(newVal:float):void } class Manager{ +Mgrpersistance:IPersistance +CurrentUser:User +Manager(persistance:IPersistance) +AddGametoGamesList(game:Game):void +RemoveGameFromGamesList(game:Game):void +SaveGames():void } class IPersistance{ {abstract}SaveGame(games:ObservableCollection):void {abstract}SaveUser(users:List):void {abstract}LoadGame():ObservableCollection {abstract}LoadUser():List } Game "0, n" *-> Review: "+/Reviews:List" User "0, n" o----> Game: "+/FollowedGames:ObservableCollection" Manager "1, 1" *--> IPersistance: "+/Mgrpersistance:IPersistance" Manager "0, n" *-> Game: "+/GameList:ObservableCollection" Manager "0, n" o--> Game: "+/ReserchedGame:ObservableCollection" Manager "0, 1" o-> User: "+/CurrentUser:User" } namespace StimPersistance #fcb773{ class Persistance{ +Persistance(chemin:string):void +SaveGame(games:ObservableCollection):void +SaveUser(users:List):void +LoadGame():ObservableCollection +LoadUser():List } Model.IPersistance <|- Persistance } namespace StimStub #fcb773{ class Stub{ +Stub(chemin:string):void +SaveGame(games:ObservableCollection):void +SaveUser(users:List):void +LoadGame():ObservableCollection +LoadUser():List } Stub "0, n" o--> Model.Game: "+/Games:ObservableCollection" Model.IPersistance <|-- Stub } @enduml