diff --git a/Documentation/Documentation_12_janvier/diagramme_de_classe.plantuml b/Documentation/Documentation_12_janvier/diagramme_de_classe.plantuml new file mode 100644 index 0000000..11b0ca0 --- /dev/null +++ b/Documentation/Documentation_12_janvier/diagramme_de_classe.plantuml @@ -0,0 +1,360 @@ +@startuml +top to bottom direction + +class Application { +} + +class AdministratorsManager { + + addAdministrator(administrator: EntityAdministrator): void + + removeAdministrator(administrator: EntityAdministrator): void + + getAdministrators(): List + + getAdministratorByUsername(username: string): EntityAdministrator + + verifyAdministratorCredobsials(username: string, password: string): int + + verifyAdministratorByName(nickname: string): int + + setAdministratorPassword(username: string, newPassword: string): void +} + +class QuestionsManager { + + 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 AnswersManager { + + 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 LobbiesManager { + + 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 PlayersManager { + + 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 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 --> AdministratorsManager : administratorsManager +Application --> QuestionsManager : questionsManager +Application --> AnswersManager : answersManager +Application --> LobbiesManager : lobbiesManager +Application --> PlayersManager : playersManager +Application --> 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 + +GatewayAdministrator <- AdministratorsObserver : gatewayAdministrator +GatewayAnswer <- AnswersObserver : gatewayAnswer +GatewayChapter <- ChaptersObserver : gatewayChapter +GatewayLobby <- LobbiesObserver : gatewayLobby +GatewayPlayer <- PlayersObserver : gatewayPlayer +GatewayQuestion <- QuestionsObserver : gatewayQuestion + +AdministratorsManager --> AdministratorsObserver : obsAdministrator +QuestionsManager --> QuestionsObserver : obsQuestion +AnswersManager --> AnswersObserver : obsAnswer +LobbiesManager --> LobbiesObserver : obsLobby +PlayersManager --> PlayersObserver : obsPlayer +ChaptersManager --> ChaptersObserver : obsChapter + +AnswersObserver -> Answers : subjectAnswers +LobbiesObserver -> Lobbies : subjectLobbies +PlayersObserver -> Players : subjectPlayers +ChaptersObserver -> Chapters : subjectChapters +QuestionsObserver -> Questions : subjectQuestions +AdministratorsObserver -> Administrators : subjectAdministrators + +class AnswersObserver{ + +update() +} +class LobbiesObserver{ + +update() +} +class PlayersObserver{ + +update() +} +class ChaptersObserver{ + +update() +} +class QuestionsObserver{ + +update() +} +class AdministratorsObserver{ + +update() +} +@enduml \ No newline at end of file diff --git a/Documentation/Wireframe.pdf b/Documentation/Documentation_26_novembre/Wireframe.pdf similarity index 100% rename from Documentation/Wireframe.pdf rename to Documentation/Documentation_26_novembre/Wireframe.pdf diff --git a/Documentation/diagramme_de_cas_d_utilisation.png b/Documentation/Documentation_26_novembre/diagramme_de_cas_d_utilisation.png similarity index 100% rename from Documentation/diagramme_de_cas_d_utilisation.png rename to Documentation/Documentation_26_novembre/diagramme_de_cas_d_utilisation.png diff --git a/Documentation/diagramme_de_cas_d_utilisation.uml b/Documentation/Documentation_26_novembre/diagramme_de_cas_d_utilisation.uml similarity index 100% rename from Documentation/diagramme_de_cas_d_utilisation.uml rename to Documentation/Documentation_26_novembre/diagramme_de_cas_d_utilisation.uml diff --git a/Documentation/diagramme_de_classe.html b/Documentation/Documentation_26_novembre/diagramme_de_classe.html similarity index 100% rename from Documentation/diagramme_de_classe.html rename to Documentation/Documentation_26_novembre/diagramme_de_classe.html diff --git a/Documentation/diagramme_de_classe.uml b/Documentation/Documentation_26_novembre/diagramme_de_classe.uml similarity index 100% rename from Documentation/diagramme_de_classe.uml rename to Documentation/Documentation_26_novembre/diagramme_de_classe.uml