Rapport AP4A Help

Diagramme de Classe

Explication

Le diagramme de classe ci-dessous illustre la structure de notre application.

Voici quelques points clés à retenir :

  • Strategyable est une interface qui définit une méthode TestCombination pour tester une combinaison. Nous avons préféré utiliser une interface plutôt qu'une classe abstraite pour permettre une plus grande flexibilité dans la définition des stratégies. De plus elle ne contient pas d'attributs.

  • FactoryStrategy est une classe qui permet de créer des stratégies. Elle contient des méthodes pour créer différentes stratégies (par exemple MakeMax, MakeMin, MakeEven, MakeNb, etc.). Cette classe permet de centraliser la création des stratégies et de faciliter l'ajout de nouvelles stratégies. Cela limite aussi beaucoup les dépendances entre les classes.

  • Player est une classe qui représente un joueur. Elle contient un nom et un récapitulatif des combinaisons proposées par le joueur, ainsi que les résultats obtenus pour chaque combinaison.

  • Recap est une classe qui représente le récapitulatif des combinaisons proposées par un joueur. Elle contient un tableau de combinaisons, un tableau de résultats et un tableau de notes pour chaque combinaison.

Modifications continue de la conception

Nous avons décidé de supprimer les classe Round et TestSolution car pour l'une nous pouvons récupérer les valeurs dans le controller. Et pour la seconde nous nous en sommes dispensé en utilisant une méthode de la classe Game pour tester les combinaisons.

Nous avons aussi ajouté des méthodes: Dans la classe Game:

  • generateAllCombinations pour générer toutes les combinaisons possibles. (125 combinaisons)

  • filterCombinations pour filtrer les combinaisons en fonction des stratégies choisies par les joueurs.

  • fillRemainStrategies pour remplir les stratégies restantes avec des stratégies aléatoires.

  • isUniqueCombination pour vérifier si une combinaison est unique.

Dans la classe FactoryStrategy nous avons ajoutés toutes les stratégies que nous voulions implémenter.

Pour la gestion des stratégies, nous avons supprimé la classe abstraite Strategy et nous avons transformé l'inteface Strategyable en classe abstraite pour pouvoir ajouter des méthodes. Ces classes sont implémentées dans la classe FactoryStrategy en redéfinissant la méthode abstraite TestCombination.

Diagramme de Classe

AP4B Turing Machine - Class DiagramewfmodelcontrollercomponentviewjavafxapplicationscenecontrolMainvoid main(String[])TuringApplicationStage primaryStageStage getPrimaryStage()void start(Stage)void main(String[])TypeStratMAXMINNB_ODDNB_EVENCOMPARE_TO_THREECOMPARE_SYMBOL_TO_SYMBOLCOMPARE_SUM_TO_ALPHASYMBOL_PRIMESYMBOL_ODDSYMBOL_EVENSEQUENCESUM_PRIMESUM_MULTIPLETypeStrat getRandom()GameCombination: secretCombinationStrategy[]: strategiesPlayer[]: playersDifficulty: difficultyint: nbRoundsRoundView: roundViewint: playerIndex«Create» Game(int nbPlayers, Difficulty difficulty)void initGame()List<Combination> generateAllCombinations()Strategy generateStrategy(TypeStrat: start)List<Combination> filterCombinations(List<Combination>: combinations, Strategy: strategy)void fillRemainingStrategies(List<Combination>: combinations)boolean isUniqueStrategy(Strategy: strategy)void play(List<String>: playerNames)void nextRound()void endGame()Strategy[] getStrategies()Difficulty getDifficulty()Combination getSecretCombination()String toString()PlayerString: nameRecap: recap«Create» Player(String: name)String getName()Recap getRecap()StrategyInteger: alphaInteger: betaTypeStrat: typeString: descriptionInteger TestCombination(Combination: combination)String getDescription()DifficultyEASYMEDIUMHARDDifficulty fromString(String: difficulty)String toString(Difficulty: difficulty)Float getMultiplicator(Difficulty: difficulty)CombinationInteger[]: combination«Create» Combination(Integer[]: combination)«Create» Combination(Integer: a, Integer: b, Integer: c)Integer[] getCombination()void setCombination(Integer[]: combination)String toString()Integer getTriangle()Integer getCircle()Integer getSquare()FactoryStrategy«Create» Strategy ManufactureStrategy(TypeStrat: TypeStrat)Strategy CreateMaxStrategy()Strategy CreateMinStrategy()Strategy CreateNbOddStrategy()Strategy CreateNbEvenStrategy()Strategy CreateCompareToThreeStrategy()Strategy CreateCompareSymbolToSymbolStrategy()Strategy CreateCompareSumToAlphaStrategy()Strategy CreateSymbolOddStrategy()Strategy CreateSymbolEvenStrategy()Strategy CreateSequenceStrategy()Strategy CreateSumPrimeStrategy()Strategy CreateSymbolPrimeStrategy()Strategy CreateSumMultipleStrategy()RecapList<Combination>: combinationsList<Boolean[]>: resultsString[]: notes«Create» Recap()List<Combination> getCombinations()void setCombinations(List<Combination>: combinations)List<String[]> getResults()String[] getNotes()void addRound(Combination: combination, Boolean[]: result)TextReplacerString replaceSymbols(String: input)HomeControllerList<TextField>: playerFields«Create» HomeController()void initialize()void startGame(ActionEvent: event)void updatePlayers(MouseEvent: event)RoundControllerList<CheckBox>: criteriaboolean: validateGame: gamePlayer: playerRoundView: roundView«Create» RoundController(Game: game, Player: player, RoundView: roundView)void initialize()void onValidate(ActionEvent)void showRecap(ActionEvent)void endingGame()RecapControllerList<TextArea>: recapTextsPlayer: playerRoundView: roundView«Create» RecapController(Player: player, RoundView: roundView)void initialize()void backToRound(ActionEvent)EndControllerPlayer winnerGame game«Create» EndController(Game: game, Player: winner)void initialize()void newGame(ActionEvent)CardCriteriaLabel descriptionLabel«Create» CardCriteria(String)void setBackgroundInRed()void setBackgroundInGreen()void setBackgroundInWhite()String getDescription()void setDescription(String)HomeView«Create» HomeView()RoundViewScene: scene«Create» RoundView(Game: game, Player: player)Scene getScene()RecapView«Create» RecapView(Player: player, RoundView: roundView)Parent getRoot()EndView«Create» EndView(Game: game, Player: winner)ApplicationCheckBoxStarting applicationhas11..6uses14..6depends on1has secretcreates strategiesstart Gamecreateshashasstartscontrolsmanagesshowshasshows winnerfinalizes and restartsshowsshowsshowsusesusesshowshasAntoine Laurant Arnaud Michel Antoine Perrin
Last modified: 11 January 2025