--- title: GameAPI - Diagramme de classes (complet) --- classDiagram class AbstractBoard{ <> -currentPlayer: Player -history: Deque +AbstractBoard(Player p, Deque h) #setNextPlayer(): void #addPlyToHistory(AbstractPly c): void #removePlyFromHistory(): AbstractPly #getLastPlyFromHistory(): AbstractPly +getCurrentPlayer() +isGameOver(): boolean +getResult(): Result +isLegal(AbstractPly c): boolean +iterator(): Iterator +doPly(AbstractPly c): void +undoPly(): void +safeCopy(): IBoard } class AbstractGame{ <> -currentBoard: IBoard -mapPlayers: EnumMap +AbstractGame(IBoard b, EnumMap m) +run(): Result } class AbstractGamePlayer{ <> -iAm: Player +AbstractGamePlayer(Player p) +giveYourMove(IBoard p): AbstractPly } class AbstractPly{ <> -joueur: Player +AbstractPly(Player j) +getPlayer(): Player } class IBoard{ +getCurrentPlayer(): Player +isGameOver(): boolean +getResult(): Result +isLegal(AbstractPly c): boolean +iterator(): Iterator +doPly(AbstractPly c): void +undoPly(): void +safeCopy(): IBoard } class Player{ <> PLAYER1 PLAYER2 } class Result{ <> WIN DRAW LOSS }