Skip to main content

Checklist activité intégrative

ContraintesPréalable

générales

Tous ces éléments sont à observer pour que le travail soit évaluable

  • LaUne structurearchive des.zip fichiersest corresponds à celle montrédéposée danssur Moodle.
  •  L'archive comporte un projet eclipse mentionnant le PDFnom et le prénom (une infraction de nommage tolérée sur les 3 itérations)
  • Le projet utiliserespecte la versionstructure 11demandée de(présence Javades répertoires src et intègretests, l'interfacefichiers graphiquesources Swing
  • dans
  • les Lebons projetpaquetages. est-0,25 compatible avecsur la versionnote d'Eclipsefinale depar référencefichier (voirmal ressources informatiques sur Learn)placé)
  • Les testsversions unitairesde Java, Junit et Eclipse sont effectuésconformes à l'aidecelles dedemandées JUnit5(une infraction tolérée sur les 3 itérations)
  • LeEclipse projetne utilisementionne le plug-in PMD avec le ruleset donné sur Learn

Acquis d'apprentissages

  •  Respect des principespas de laproblème programmationde orientéecompilation objet(sauf problèmes de liaison au JDK, à JUnit 5)
  • Les comportements du programme sont testé à l'aide de tests unitaires
  •  Le programme est bien documenté à l'aide de la JavaDoc (et calcul de la CTT si demandée)
  •  Les utilisations des interfaces de collections et de ses implémentations sont justifiées

Itération 1

Fonctionalités

AI-1 :1: Créer une partie

En tant que joueur, je souhaite démarrer une nouvelle partie afin de l’afficher à l’écran

  •  L’application démarre en affichant un menu principal composé de deux items : « Nouvelle partie » et « Quitter »
  • L’activation de l’item « Nouvelle partie » débute la création d’une partie.
  •  La création d’une partie commence par le chargement de la carte depuis le fichier resources/maps/map-sample.txt. Nous vous fournissons à cette fin la classe treasurequest.io.CharArrayFileReader.
  •  Une fois la carte chargée, l’application y place des trésors sur les cases creusables. Une case est creusable si elle n’est pas de type Eau.
  •  Le nombre de trésors à placer correspond à 10% du nombre de cases creusables, avec au moins 1 trésor à trouver.
  •  La valeur d’un trésor est un nombre aléatoire allant de 10 à 20 pièces.
  •  Toutes les cases sont non-creusées.
  •  Une case active est désignée. Elle correspond à une case du centre de la carte.
  •  Le joueur possède une bourse correspondant à 2 fois le nombre de trésors. Cette bourse est exprimée en pièces (s’il y 20 trésors à placer, la bourse de départ du joueur sera de 40 pièces).
Tests d'intégration
  •  Quand je lance l’application, celle-ci me présente le menu principal composé de deux items « Nouvelle partie » et « Quitter »
  •  Quand je sélectionne l’item « Quitter », l’application termine son exécution.
  •  Quand je sélectionne l’item « Nouvelle partie », l’application change d’écran

AI-2 :2: Voir une partie

En tant que joueur, je souhaite voir l’état d’une partie afin de décider des actions à entreprendre

  •  Une seconde vue présente l’état de la partie.
  • Une carte montre les cases. En début de partie, aucune case n’est creusée.
  •  La case active de départ est au « centre » de la carte.
  •  Un panneau affiche la bourse du joueur, le nombre de trésors à trouver et le cout à payer pour creuser la case active.
  •  Creuser une case Sable coute 1 pièce. Le cout des autres types de cases est déduit de cette valeur.
Tests d’acceptation

Important : pour les tests d’acceptation, nous utiliserons des cartes autres que celles fournies.

  •  Quand je lance une nouvelle partie, l’application me présente la carte donnée dans l’exemple.
  •  Quand je lance une nouvelle partie, la case active est celle au « centre » de la carte
  •  Quand je lance une nouvelle partie, l’application me dit qu’il y a XX trésors à trouver, que le joueur à une bourse de 2*XX
  •  Quand je lance une nouvelle partie, l’application m’affiche le cout correct de la case active

AI-3 : Revenir au menu principal

Acquis 1 : Programmer des énoncés de conception en Java selon les principes de la POO

EnSeuil tantde queréussite joueur,(tous jesont peuxà abandonnervalider unepour partieobtenir etl'acquis)

revenir au menu principal, afin d’en relancer une nouvelle.

  • Appuyer[Prog. surProcedurale] laPMD toucherelève «au Escplus »2 quandméthodes unetrop partielongues estet/ou entrop cours permet de revenir à l’écran principal.complexes
  • Demander[Cohésion] PMD relève au plus 2 classes comportant 5 attributs ou plus.
  •  [Cohésion] PMD relève au plus 1 classe divine ou une nouvelleclasse partiede relancedonnées
  •  [Encapsulation] PMD relève au plus 2 attributs d'accès autres que private
  •  [Encapsulation] Au moins 2 méthodes ou constructeurs respectent le principe de copies défensives pour les collections.
  •  [Masquage] Les classes métiers respectent la création d’une nouvelle partie. En particulier, le rechargementloi de laDéméter carte.(2 infractions tolérées)
  •  [RDD] La plupart des types du domaine correspondent aux candidats identifiés pendant l'étape de conception.
  •  [Polymorphisme] Les paramètres des constructeurs des superviseurs sont des types abstraits (interfaces ou classe abstraite)
  •  [Polymorphisme] PMD ne lève pas d'alerte LooseCoupling
  •  [Architecture] Les tests ArchUnit ne révèlent pas de problème d'architecture
Tests

Acquis d’acceptation

2 : Valider les comportements des objets programmés par des tests unitaires

Seuil de réussite (tous sont à valider pour obtenir l'acquis)

  • SoitChaque classe du domaine est validée par une partieclasse lancéede avectest. uneLes caseclasses creusée,de quandtest jesont reviensdéfinis au menu principal et que je relance une nouvelle partie,dans le jeumême revientpackage à(mais sondans étatle derépertoire départ.tests).
  • SoitL'ensemble unedes partieclasses lancée,de quandtest jedu changedomaine le fichier à charger et que je revienscouvre au menumoins principal,90% alorsdes l’application présente la carteclasses du nouveaudomaine.
  • fichier
  •  Tous les tests unitaires des classes du domaine réussissent. (1 test en échec toléré)

Phase

Acquis 3 : Documenter son code

Seuil de conceptionréussite et(tous problèmessont à résoudrevalider

Diagrammepour deobtenir conceptionl'acquis)

générale

  • Les Candidatstypes et les Responsabilitéméthodes publics sont documentés ontpar de la javadoc inspirée par les énoncés identifiées(cf. PMD, 5 fautes tolérées)
  • Les cartespré CRCou etpostconditions lesdemandées liens entre elles ont été faites
  •  Le diagramme de séquence/collaboration a été créé
  •  Le diagramme de classe a été fait

La classe de fabrique (Factory)

  •  Une classe de fabrique (Factory) est crééefigurent dans le package domains comme les autres classes et sert à synchroniser le jeu sur les différents superviseurs
  •  La classe de fabrique est passée aux superviseurs au travers d'une interface
  •  Les superviseurs se synchronise avec la classe de fabriquejavadoc, dans les méthodes onEnteret onLeave
  •  La classe de fabrique est insanciée dans Programet est passée au constructeur des superviseurs concernés

La représentation de la carte de cases

  •  Pas de tableau 2D pour preprésenter l'association des coordonnées aux cases et choisir la collection appropriée pour mémoriser la carte et les cases

Questions supplémentaires d'algo et de POO

Questions algorithmiques

  •  Ecrire dans l'entêl’en-tête de la méthode PlayGameSupervisor.onEnterles post-conditions les classes Player, CaseMapPlayGameSuperviser.onEnter, et les réponses concernent les 3 classes Player, CaseMap et Case deet lasont carte doivent respecter après la création de la partie pour pouvoir commencer à creuser/jouer.correctes.
  • IndiquerLa CTT demandée est correctement évaluée dans l'entêtela JavaDocJavadoc de la classe CaseMapTreasureQuestGameFactory
  • l'interface
de

Acquis collection4 a: étéJustifier utliisée pour représenter la carte et justifier sonle choix en expliquant les différentes opérations à y effectuer
  •  Indiquer dans cette même JavaDoc quelle implémentation de la collection a été utilisée pour représenter la carte et justifier son choix en déterminant la CTT des principales opérations utilisées dans l'itération 1
  •  Indiquer la CTT du placement des trésors sur les cases creusables dans la javadoc en entête de CaseMap (Pour répondre à cette question, examinez la partie de votre code concernée, et identifiez les boucles, les imbrications, mais aussi les collections utilisées et leurs opérations ou les appels de sous-méthodes ou de méthodes d’autres objets. Quand vous répondez, n’oubliez pas d’indiquer à quoi correspondent vos libellés N,M, etc)
  •  Les Superviseurs collabore avec la fabrique (Factory) de Game au travers d'une interface
  • structure de

    Questionsdonnées POO

    particulière

    Seuil de réussite (tous sont à valider pour obtenir l'acquis)

    • Les classeschoix de type de collection sont correctement documentés dans treasurequest.domainsle etcode n'ontpour pasles cases du terrain de lienjeu, avecdans lesla vues (tout ce qui pourrait être en dehorsjavadoc de domains)la classe CaseMap.
    • L'encapsulationLes (attributschoix private)d'implémentation etsont correctement documentés dans le code pour les cases du terrain de jeu, dans la javadoc de la classe CaseMap.
    •  Degré de maitrise
    •  Vérifiés SI tous les critères de seuil de réussite ont été observés pour affiner la cote
    •  PMD ne rélève aucun problème de méthode trop complexe et/ou trop longue
    •  Plus de 2 méthodes ou constructeurs appliquent le principes de copies défencivesfensives sur les collections
    •  Au moins 2 constructeurs ou méthode de fabrique valident leurs paramètres.
    •  PMD ne relève aucun problème de type data class ou god object
    •  Les méthodes ne faisant pas partie du diagramme de classe ou des diagrammes de collaboration sont bienprivate effectuées(voire surprotected)
    • toutes
    •  Le paquetage domain est couvert à 100% par les classes de tests du domainsmême package.
    • EcrireLa desdocumentation de plusieurs méthodes courtesfait état de précondition et peu complexes (et tenter de respecterpostcondition la règle de Demeter)correctes
    • EcrireLes descollections classessont timidesutilisées sans réinventer la roue (c'est à dire qui font le boulot et qui ne nécessite pas de tout le temps leur demander des choses depuis d'autres classes)
    •  Bon usage du polymorphisme
    •  Bonne utilisation des interfaces
    •  Aucune alerte PMD
    •  Tests unitaires JUnit5 dans le dossier tests qui donne un coverage d'au moins 90% sur chaque classe du domains (pour un degréreprogrammation de maitriseméthodes supplémentaireexistantes, → coverageou de 100%parcours deséquentiel cesquand classes)l'accès direct est prévu par exemple)