Académique Documents
Professionnel Documents
Culture Documents
Programmation 1 DUT 1A
1 Projet à rendre
Ce projet est un projet à faire de manière individuelle et à rendre à votre encadrant
via le module Programmation1 sur arche. Il donnera lieu à une évaluation qui comptera
à hauteur de 15% dans la note finale du module.
Vous devrez rendre IMPERATIVEMENT pour le jeudi 12/11/2020 sur arche :
des sources commentées qui compilent : tout problème dans la compilation
ou l’absence de commentaire entrainera des points en moins ;
une version déjà compilée de votre programme ;
des classes de test complétées et intégralement commentées (cf fin de l’énoncé) ;
un répertoire contenant la javadoc générée à partir de votre projet.
ATTENTION :
Veuillez respecter IMPERATIVEMENT les noms des classes et méthodes
que l’on vous donne (majuscule comprise, sans accent et sans faute d’orthographe
- cf conventions en annexe du polycopié). Respectez aussi l’ordre des paramètres
dans les fonctions ou méthodes.
Tous les attributs doivent être déclarés en private, les méthodes sont déclarées
en public sauf précision dans l’énoncé.
Les méthodes ne doivent contenir aucun System.out.println sous peine de ne
pas pouvoir être corrigées facilement. Des points pourront être retirés si cette
consigne n’est pas respectée.
Votre projet est à faire en individuel uniquement, tous les projets seront
testés par une application capable de détecter automatiquement les tentatives
de fraude et nous sévirons si besoin (comme cela a déjà été fait par le passé).
2 Présentation du projet
Les étoiles sont alignées et l’ultime tournoi Poquémont va enfin pouvoir se dérouler.
Les plus grands dresseurs sont présents et vont s’affronter dans des combats sans
précédents. Qui se révèlera être le plus grand dresseur ? Qui parmi Didjeridoo, Plan-
tedeschoux et Cartapus sera le poquémont le plus performant ? C’est ce que tous les
spectateurs attendent de voir.
Le projet va avoir pour objectif de représenter (très simplement) un combat entre les
dresseurs. Les dresseurs se trouvent dans une arène dans laquelle se trouvent différents
3 Structuration du projet
3.1 Répertoires
Le fichier .zip fourni sur arche vous donne une structure à respecter pour votre
projet. Il contient la structure de sous-répertoires suivante que vous devrez respecter
pour votre sujet :
un répertoire principal gr Z nom dont le nom est à modifier
Z doit désigner votre numéro de groupe
nom doit désigner votre nom
ce répertoire contient plusieurs sous-répertoires
un répertoire src qui doit contenir les fichier .java ;
un répertoire javadoc qui contiendra le résultat de la javadoc.
Pour lancer la classe principale Principale, il faut se mettre dans le répertoire src du
projet 1 et utiliser le nom complet de la classe graphisme.Principale
1 java graphisme . Principale
4 La classe Arene
Écrire la classe Arene à l’aide des indications suivantes.
4.1 Attributs
4.2 Constructeurs
La classe Arene possède un simple constructeur sans paramètre qui initialise chacun
de ses deux attributs en leur donnant pour valeur 10. L’arène est donc constituée de
100 cases.
Écrire les deux accesseurs getTailleX et getTailleY qui retournent l’attribut cor-
respondant.
4.4 Méthodes
La classe Arene possède en outre une seule méthode nommée etreAccessible.
Cette méthode prend deux entiers x et y en paramètre et retourne un booléen précisant
si la case de coordonnées (x,y) est accessible (autrement dit n’est pas un mur).
Pour cela, on ne considéra qu’une seule arène de forme donnée 2 par la figure 2.
0 1 2 3 4 5 6 7 8 9
2
Axe Ordonnées (y)
5 La classe Poquemont
5.1 Attributs
5.2 Constructeurs
un constructeur qui prend en entrées cinq paramètres. Ces paramètres sont dans
l’ordre
— (1) int x qui représente l’abscisse initiale du poquémont ;
— (2) int y qui représente l’ordonnée initiale du poquémont ;
— (3) int pDegats qui représente les dégâts faits par le poquémont ;
— (4) int pPortee qui représente la portée du poquémont ;
— (5) pArene qui correspond à l’arène dans laquelle évolue le poquémont.
La position initiale du poquémont doit être dans une case accessible de l’arène,
sinon sa position sera par défaut de (0,0) (supposée accessible). Les dégâts et
la portée doivent être positifs ou nuls. Lorsque l’un des paramètres est négatif,
la valeur de l’attribut correspondant doit être de 0.
Attention ! Sauf indication contraire, ces accesseurs ne doivent servir que dans vos
méthodes de test pour vérifier les bonnes valeurs des attributs.
5.5 Tests
A l’aide des indications section 7, écrire le début de la classe de test TestPoquemont
associée à la classe Poquemont. Limitez-vous à tester les constructeurs et les méthodes
3. parenthèses incluses, pas d’accent, pas d’espace entre les virgules ou les :
6 La classe Dresseur
Écrire la classe Dresseur du package application avec les indications suivantes.
6.1 Attributs
Le classe Dresseur a pour objectif de représenter un dresseur. Un dresseur est
caractérisé par plusieurs attributs
un attribut String nom correspondant au nom du dresseur ("Sacha", ...) ;
deux attributs entiers posX et posY précisant la position du dresseur dans l’arène
- le dresseur doit toujours se trouver sur une case accessible ;
un attribut poquemontDresse de type Poquemont permettant de savoir quel
poquémont le dresseur a capturé. Si le dresseur n’a pas de poquémont avec lui 5 ,
cet attribut vaut null.
un attribut pv de type entier correspondant au nombre de points de vie du
dresseur. Cet attribut ne peut pas être négatif.
un attribut arene de classe Arene correspondant à l’arène dans laquelle le dres-
seur évolue.
6.2 Constructeurs
La classe Dresseur possède deux constructeurs :
un constructeur avec un paramètre pArene de type Arene qui construit un objet
Dresseur par défaut. Ce dresseur s’appelle "Sacha", a une valeur initiale de posX
de 0, une valeur initiale de posY de 0, possède 5 points de vie, n’a capturé aucun
poquémont et se trouve dans l’arène passée en paramètre. On SUPPOSERA que
le paramètre arene est correct (et on ne le testera pas) ;
distance de 1
Figure 3 – Distance de Manhattan entre les cases : distance minimale en suivant une ligne
brisée à angle droit suivant les axes x et y.
6.5 Tests
Écrire la classe de test TestDresseur, compléter la classe de test TestPoquemont
et valider l’ensemble des méthodes des deux classes Dresseur et Poquemont.
7 Tests
Avant de rendre votre projet, vous vérifierez que celui-ci fonctionne correctement
en développant une classe de test par classe écrite (comme celles que vous avez utilisées
pendant les TPs).
Pour cela, pour chaque classe (Arene, Dresseur et Poquemont), vous allez
réfléchir aux différents tests à écrire ;
ajouter ces tests dans la classe de test fournie ;
lancer vos tests et vérifier que votre classe fonctionne correctement par rapport
à vos attentes.
Une méthode de test a pour objectif de vérifier que le test est effectivement valide.
la méthode ne prend pas de paramètre et ne retourne rien ;
les premières instructions de la méthode préparent les données (en appelant des
constructeurs par exemple) ;
les instructions suivantes exécutent le test à proprement parler (à savoir la
méthode testée avec les bonnes données) ;
les instructions de vérification appellent la méthode assertEquals à chaque fois
qu’une condition attendue doit être vérifiée ;
vous pouvez utiliser les accesseurs pour vérifier les valeurs des attributs mais les
accesseurs n’ont pas besoin d’être testés (ils sont très simples).
Une fois qu’une méthode de test est écrite, elle doit rester dans votre classe de test.
Ainsi, à l’issue du projet, vos classes de test possèderont toutes les méthodes de tests
(une par cas à considérer) et permettront de tester l’ensemble de l’application.
Pour effectuer une vérification dans un test, il faut utiliser la méthode assertEquals.
Cette méthode possède le profil suivant :
void assertEquals(String erreur, Object attendu, Object obtenu)
erreur correspond au message d’erreur à afficher si la vérification n’est pas
correcte ;
attendu désigne la valeur attendue ;
obtenu désigne la valeur obtenue lors du test.
7.2.4 Exemple
19 /**
20 * quand le poquemont ne peut pas etre pris , poquemont occupe et
21 * dresseur bonne case
22 */
23 public void t e s t _ e t r e P r i s _ n o n L i b r e () {
24 Arene arene = new Arene ();
25 Poquemont poq = new Poquemont (5 , 5 , 2 , 2 , arene );
26 Dresseur d = new Dresseur ( " toto " , 5 , 5 , arene );
27 boolean res = poq . etrePris ( d );
28 Dresseur d2 = new Dresseur ( " toto " , 5 , 5 , arene );
29 res = poq . etrePris ( d2 );
30 assertEquals ( " poquemont pas pris " , false , res );
31 assertEquals ( " ancien porteur reste " , d , poq . getPorteur ());
32 }
33
34 /**
35 * quand le dresseur est null
36 */
37 public void t e s t _ e t r e P r i s _ d r e s s e u r N u l l () {
38 Arene arene = new Arene ();
7.4 Démarche
Pour faire correctement votre projet, nous vous conseillons de penser à tous les tests
possibles dans un premier temps (cf partie sélection des test), de les programmer et
ensuite seulement de commencer à écrire les différentes classes de votre programme.
Cela vous permettra
— d’avoir pensé à tous les cas particuliers lorsque vous écrirez votre programme ;
— de disposer d’un programme plus sûr.
8 Génération de la javadoc
Pensez à écrire la javadoc dans vos fichiers sources et générez la javadoc dans le
répertoire javadoc situé à la racine de votre projet.
Pour cela, le plus simple est de se placer dans le répertoire gr Z nom et d’exécuter
la commande javadoc
avec l’option ’-d dest’ pour spécifier le répertoire de destination (ici le répertoire
de destination sera javadoc) ;
avec comme argument les fichiers sources du package application situés dans
src, à savoir ’src/application/*.java’.
1 javadoc -d javadoc src / application /* . java
9 Dernier conseil
Le projet que vous allez rendre forme un tout (classes + tests + javadoc).
— Si vous faites les bons tests, vous pourrez facilement détecter les erreurs de votre
projet et le corriger.
— Inversement si les tests ne sont pas complets, vous risquez d’avoir des classes qui
fonctionnent mal et un projet qui ne fournit pas les bons résultats.
Ainsi, le meilleur moyen d’avoir une bonne note est de mettre l’accent sur les tests
qui vous permettront d’écrire un code correct et valide (et bien entendu de corriger les
classes lorsque les tests ne passent pas).