FAQ TP3/4 d'INFO301 - partie 1

par Tom
le 08/12/2019

Sommaire

UTILISEZ ECLIPSE 4.4.2 (de préférence)

AVANT TOUT

Vu que le TP est assez long et complexe, ouvrez pas tout de suite Eclipse.

Prenez une feuille et un crayon et écrivez dessus d'abord. Imaginez les différentes classes, marquez les attributs, faites des schémas, etc.

Une fois que vous aurez toutes vos classes, vous pourrez passer au code. Comme ça si vous vous chiez dans votre conception objet ben vous aurez pas à refaire tout votre code.

Et même une fois que ça ça sera fait, NE FAITES PAS ENCORE DE MAIN. Pour l'instant on fait seulement des classes. Le main, on le fera en temps voulu.

oui, miguel préconise de commencer par le Main pour avoir "un fil conducteur", c'est tout à fait juste mais c'est une tactique qui n'est efficace que quand on sait bien faire les classes et tout. Donc pour quelqu'un qui connaît Java comme sa poche, oui c'est plus avisé de commencer par le Main. Mais pour notre niveau c'est beaucoup plus simple de commencer par les classes, puis d'ensuite faire le Main et de rajouter des fonctions à nos classes au fur et à mesure.

Faites vos classes, j'ai mis une liste plus loin avec la liste des classes que vous devriez avoir. Essayez de pas aller voir tout de suite pour pas vous auto-spoil. Et comme d'hab si vous avez des questions envoyez un mp.

Données du Problème :

La Table Ronde est composée d'un groupe de chevaliers au service du Roi Arthur chargé de mener la quête du Graal.

On a ici le choix entre :

  • Faire une variable ArrayList<Chevalier> tableRonde
  • Faire une classe TableRonde contenant un attribut ArrayList<Chevalier> chevaliers

Chaque Chevalier comporte : (Chevalier sera une classe)

  • Un nom permettant de l'identifier de manière unique.
  • Un sac, vide initialement, permettant de ranger des objets collectés pendant sa recherche du Graal.
    • On utilisera pour cela ArrayList<Truc> qui sert à faire des liste dynamiques, où Truc est le type des éléments qui seront dedans
  • Un niveau de vie. Sa valeur initiale sera un entier entre 0 (il n'a pas de vie) et 100.

Selon les légendes celtiques, le Graal est un fait composé des 4 Objets amenés par les Dieux. Ces 4 objets seraient l'épée Excalibur, la pierre de Fal Lial, la Lance de Lug et le Chaudron de la Connaissance.

Pendant la quête "aux quatre coins du monde" des 4 objets composant le Graal, un chevalier peut aussi trouver d'autres objets qui sont en fait des obstacles, tels que : des roches, des puits, des ronces.

Ainsi il y a deux sortes d'objets : les objets composant le "Graal" et les objets "Obstacle".

On aura donc une classe Objet et deux classes héritant de Objet : Graal et Obstacle

Rappel : pour déclarer une classe B qui hérite de A, on fait :

public class B extends A {
    ...
}

Les objets "Graal" et les objets "Obstacle" ont tous une propriété permettant de modifier le niveau de vie du chevalier qui le trouve "aux quatre coins du monde". → attribut dans la classe Objet

En plus de cette propriété, les objets "Graal" ont un poids car ils sont censés être amenés par le chevalier qui les trouve. → attribut dans la classe Graal uniquement (pas Objet)

Aux quatre coins du monde

"Aux quatre coins du monde" est l'espace où se trouvent les objets ("Graal" et "Obstacle") et où peut aussi se trouver un chevalier en quête du Graal. C'est un espace carré composé d'un nombre fini d'emplacements.

On utilisera ici un tableau en 2D.

Rappel : les tableaux

Pour déclarer un tableau en 2 dimensions, on fait :

Truc[][] monTableau;

Et pour l'initialiser :

monTableau = new Truc[TAILLE_Y][TAILLE_X];

Ici, TAILLE_Y et TAILLE_X seront égales et vaudront 10.

Attention à bien différencier :

déclarer = ici je dis qu'il y aura un tableau (mais je sais pas quelle taille il fera)

initialiser = là où j'avais dit qu'il y aurait un tableau, je crée effectivement un tableau avec une taille que je définis

Pour résumer

Normalement là vous devriez avoir les classes et les attributs suivants :

  • Objet
    • nom (chaîne)
    • modification de vie (nombre)
  • Graal : hérite de Objet
    • poids (nombre)
  • Obstacle : hérite de Objet
    • pas d'attributs supplémentaires
  • Chevalier
    • nom (chaîne)
    • vie (nombre)
    • sac (liste d'objets)
  • QuatreCoins
    • monde (tableau 2D d'Objets)

Partie 2