From 2128d34b2a14d5b43c3bab76b68a25d2c34274ec Mon Sep 17 00:00:00 2001 From: Jade VAN BRABANDT Date: Sat, 25 Nov 2023 16:29:36 +0100 Subject: [PATCH] docs : diagramme de classe --- diagramme_de_classe.uml | 368 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 368 insertions(+) create mode 100644 diagramme_de_classe.uml diff --git a/diagramme_de_classe.uml b/diagramme_de_classe.uml new file mode 100644 index 0000000..36b59e1 --- /dev/null +++ b/diagramme_de_classe.uml @@ -0,0 +1,368 @@ +@startuml +top to bottom direction + +class Application { +} + +class ControllerAdministrators { + + addAdministrator(administrator: EntityAdministrator): void + + removeAdministrator(administrator: EntityAdministrator): void + + getAdministrators(): List + + getAdministratorByUsername(username: string): EntityAdministrator + + verifyAdministratorCredentials(username: string, password: string): int + + verifyAdministratorByName(nickname: string): int + + setAdministratorPassword(username: string, newPassword: string): void +} + +class ControllerQuestions { + + addQuestion(question: EntityQuestion): void + + removeQuestion(question: EntityQuestion): void + + getQuestions(): List + + getQuestionsByChapterAndDifficulty(chapter: int, difficulty: int): List + + removeQuestionById(id: int): void + + getQuestionById(id: int): EntityQuestion + + updateQuestion(id: int, questionDataArray: EntityQuestion): void + + updateNbFails(question: EntityQuestion): void + + updateDifficulty(question: EntityQuestion): void +} + +class ControllerAnswers { + + addAnswer(answer: Answer): int + + removeAnswer(answer: Answer): void + + getAnswers(): List + + getAnswersByIdQuestions(idQuestion: int): List + + updateAnswer(answersId: int, answer: Answer): void + + removeAnswerById(id: int): void +} + +class ControllerLobbies { + + addLobby(lobby: EntityLobby): void + + removeLobby(lobby: EntityLobby): void + + getLobbies(): List + + getLobbyById(lobbyId: int): EntityLobby + + verifyLobbyPassword(lobbyId: int, password: string): boolean + + setLobbyPassword(lobbyId: int, newPassword: string): void +} + +class ControllerPlayers { + + addPlayer(player: EntityPlayer): void + + removePlayer(player: EntityPlayer): void + + getPlayers(): List + + getPlayerById(playerId: int): EntityPlayer + + getPlayerByNickname(nickname: string): EntityPlayer + + getPlayersInLobby(lobbyId: int): List + + getPlayersMaxScore(playerId: int): int + + verifyPlayerCredentials(nickname: string, password: string): int + + verifyPlayerByName(nickname: string): int + + setPlayerPassword(playerId: int, newPassword: string): void +} + +class ControllerChapters { + + addChapter(chapter: EntityChapter): void + + removeChapter(chapter: EntityChapter): void + + getChapters(): List + + getChapterById(chapterId: int): EntityChapter +} + +class AdministratorsManager { + + addAdministrator(administrator: Administrator): void + + removeAdministrator(administrator: Administrator): void + + getAdministrators(): List +} + +class QuestionsManager { + + addQuestion(question: Question): void + + removeQuestion(question: Question): void + + getQuestions(): List +} + +class AnswersManager { + + addAnswer(answer: Answer): void + + removeAnswer(answer: Answer): void + + getAnswers(): List +} + +class LobbiesManager { + + addLobby(lobby: Lobby): void + + removeLobby(lobby: Lobby): void + + getLobbies(): List +} + +class PlayersManager { + + addPlayer(player: Player): void + + removePlayer(player: Player): void + + getPlayers(): List +} + +class ChaptersManager { + + addChapter(chapter: Chapter): void + + removeChapter(chapter: Chapter): void + + getChapters(): List +} + +class Lobbies <> { + + addLobby(lobby : Lobby ) + + removeLobby(lobby : Lobby ) + + getLobbies(): List +} + +class Lobby { + - id: int + - name: string + - password: string + - nbPlayers: int + + + getId(): int + + getName(): string + + getNbPlayers(): int + + setNbPlayers(nbPlayers: int): void +} + +Lobbies *-- Lobby : lobbies + +class Answers <> { + + addAnswer(answer: Answer) + + removeAnswer(answer: Answer) + + getAnswers(): List +} + +class Answer { + - id: int + - content: string + - idQuestion: int + + + Answer(id: int, content: string, idQuestion: int) + + getId(): int + + getContent() + + getIdQuestion() + + setContent(content: string): void +} + +Answers *-- Answer : answers + +class Administrators <> { + + addAdministrator(administrator: Administrator) + + removeAdministrator(administrator: Administrator) + + getAdministrators(): List +} + +class Administrator { + - id: int + - username: string + - hashedPassword: string + + + Administrator(id: int, username: string, password: string) + + getId(): int + + getUsername() + + getHashedPassword() + + setHashedPassword(hashedPassword: string): void +} + +Administrators *-- Administrator : administrators + +class Questions <> { + + addQuestion(question: Question) + + removeQuestion(question: Question) + + getQuestions(): List +} + +class Question { + - id: int + - content: string + - idChapter: int + - idAnswerGood: int + - difficulty: int + - nbFails: int + + + Question(id: int, content: string, idChapter: int, idAnswerGood: int = -1, difficulty: int = 1, nbFails: int = 0) + + getId(): int + + getContent(): string + + getIdChapter(): int + + getIdAnswerGood(): int + + getDifficulty(): int + + getNbFails(): int + + setContent(content: string): void + + setIdAnswerGood(idAnswerGood: int): void + + setDifficulty(difficulty: int): void + + setNbFails(nbFails: int): void +} + +Questions *-- Question : questions + +class Chapters <> { + + addChapter(chapter: Chapter) + + removeChapter(chapter: Chapter) + + getChapters(): List +} + +class Chapter { + - id: int + - name: string + + + Chapter(id: int, name: string) + + getId() + + getName() + + setName(name: string): void +} + +Chapters *-- Chapter : chapters + +class Players <> { + + addPlayer(player: Player) + + removePlayer(player: Player) + + getPlayers(): List +} + +class Player { + - id: int + - nickname: string + - hashedPassword: string + + + Player(id: int, nickname: string, password: string) + + getId(): int + + getNickname(): string + + getHashedPassword(): string + + setHashedPassword(hashedPassword: string): void +} + +Players *-- Player : players + +entity EntityAnswer { + - id: int + - content: string + - idQuestion: int +} + +entity EntityLobby { + - id: int + - name: string + - password: string + - nbPlayers: int + - idPlayerCreator: int +} + +entity EntityAdministrator { + - id: int + - username: string + - password: string +} + +entity EntityQuestion { + - id: int + - content: string + - difficulty: int + - nbfails: int + - idChapter: int + - idAnswerGood: int +} + +entity EntityChapter { + - id: int + - name: string +} + +entity EntityPlayer { + - id: int + - nickname: string + - password: string +} +class GatewayPlayer { + + addPlayer(player: EntityPlayer) + + removePlayer(player: EntityPlayer) + + getPlayers(): List + + getPlayerById(playerId: int): EntityPlayer + + getPlayerByNickname(nickname: string): EntityPlayer + + getPlayersInLobby(lobbyId: int): List + + getPlayersMaxScore(playerId: int): int + + verifyPlayerCredentials(nickname: string, password: string): int + + verifyPlayerByName(nickname: string): int + + setPlayerPassword(playerId: int, newPassword: string): void +} + +class GatewayLobby { + + addLobby(lobby: EntityLobby) + + removeLobby(lobby: EntityLobby) + + getLobbies(): List + + getLobbyById(lobbyId: int): EntityLobby + + verifyLobbyPassword(lobbyId: int, password: string): boolean + + setLobbyPassword(lobbyId: int, newPassword: string): void +} + +class GatewayChapter { + + addChapter(chapter: EntityChapter) + + removeChapter(chapter: EntityChapter) + + getChapters(): List + + getChapterById(chapterId: int): EntityChapter +} + +class GatewayAnswer { + + addAnswer(answer: Answer): int + + getAnswerByID(id: int): Answer + + getAnswersByIDQuestions(idQuestion: int): List + + updateAnswer(answersId: int, answer: Answer): void + + removeAnswerByID(id: int): void +} + +class GatewayQuestion { + + getQuestions(): List + + getQuestionsByChapterAndDifficulty(chapter: int, difficulty: int): List + + removeQuestionByID(id: int): void + + addQuestion(questionsDataArray: List): int + + getQuestionByID(id: int): Question + + updateQuestion(id: int, questionDataArray: Question): void + + updateNbFails(question: Question): void + + updateDifficulty(question: Question): void +} + +class GatewayAdministrator { + + addAdministrator(administrator: EntityAdministrator) + + removeAdministrator(administrator: EntityAdministrator) + + getAdministrators(): List + + getAdministratorByUsername(username: string): EntityAdministrator + + verifyAdministratorCredentials(username: string, password: string): int + + verifyAdministratorByName(nickname: string): int + + setAdministratorPassword(username: string, newPassword: string): void +} + +Application --> ControllerAdministrators : ctrlAdministrators +Application --> ControllerQuestions : ctrlQuestions +Application --> ControllerAnswers : ctrlAnswers +Application --> ControllerLobbies : ctrlLobbies +Application --> ControllerPlayers : ctrlPlayers +Application --> ControllerChapters : ctrlChapters + +ControllerAdministrators --> AdministratorsManager : administratorsManager +ControllerQuestions --> QuestionsManager : questionsManager +ControllerAnswers --> AnswersManager : answersManager +ControllerLobbies --> LobbiesManager : lobbiesManager +ControllerPlayers --> PlayersManager : playersManager +ControllerChapters --> ChaptersManager : chaptersManager + +AdministratorsManager --> Administrators : administrators +QuestionsManager --> Questions : questions +AnswersManager --> Answers : answers +LobbiesManager --> Lobbies : lobbies +PlayersManager --> Players : players +ChaptersManager --> Chapters : chapters + +AdministratorsManager -[dotted]-> Administrator +QuestionsManager -[dotted]-> Question +AnswersManager -[dotted]-> Answer +LobbiesManager -[dotted]-> Lobby +PlayersManager -[dotted]-> Player +ChaptersManager -[dotted]-> Chapter + +AdministratorsManager --> EntityAdministrator : entAdministrator +QuestionsManager --> EntityQuestion : entQuestion +AnswersManager --> EntityAnswer : entAnswer +LobbiesManager --> EntityLobby : entLobby +PlayersManager --> EntityPlayer : entPlayer +ChaptersManager --> EntityChapter : entChapter + +EntityAdministrator <-[dotted]- GatewayAdministrator +EntityQuestion <-[dotted]- GatewayQuestion +EntityAnswer <-[dotted]- GatewayAnswer +EntityLobby <-[dotted]- GatewayLobby +EntityPlayer <-[dotted]- GatewayPlayer +EntityChapter <-[dotted]- GatewayChapter +@enduml \ No newline at end of file