Projet Zuul de conception orientée objet en Java d'un jeu d'aventure
Forum des exercices du projet Zuul
Exercice 7.47.1
Après avoir lu ces explications sur les paquetages en Java, découper le projet en paquetages en répartissant les classes le plus "logiquement" possible.
Contraintes :
1) la classe Game doit rester hors de tout paquetage
2) le nom de chaque paquetage doit commencer par pkg_
3) le nombre de paquetages doit être supérieur à 2
4) le nombre de classes par paquetage doit être supérieur à 2
Tout recompiler : il ne doit y avoir aucun warning.
Ne pas oublier de lire les échanges ci-dessous pour mieux comprendre la bonne manière de réaliser cet exercice.
Un étudiant a écrit :
Point 1 :
Pouvons-nous utiliser un paquetage parent pour tout le
jeu, qui contiendrait tous les autres paquetages du jeu, mais aussi
cette classe, conformément à
http://docs.oracle.com/javase/specs/jls/se7/html/jls-7.html#jls-7.4.2 ?
(cela permet aussi d'utiliser l'option -subpackages pour générer la javadoc)
Point 2 :
Peut-on
s'arranger avec certaines conventions, en particulier celle de nommage
des paquetages avec le préfixe "pkg_" qui est véritablement lourde
en particulier lorsqu'on les emboîte (pkg_machin.pkg_truc.pkg_bidule.maMethode() ) ?
Point 1 :
Oui.
Mais pour que votre projet soit accepté par le serveur sur lequel vous
devrez rendre votre projet, vous devrez conserver une copie de la classe
Game (*) en dehors de tout paquetage.
Point 2 :
- il n'est pas conseillé dans ce projet d'utiliser 3 niveaux de paquetages (un ou deux suffisent)
- ajouter "pkg_" ne peut être considéré comme" véritablement lourd"
- cette convention permet de mieux reconnaître les identificateurs de paquetages dans certaines circonstances
(*) cette copie peut très bien ne contenir que public class Game { }
Les conventions de nommage des variables ne sont pas gênantes puisqu'elles sont internes aux paquetages et qu'elles n'influencent pas l'utilisation qui peut en être faite.
Cependant, celle concernant le préfixe sur les noms de paquetages fait apparaître un problème de cohérence dès lors que l'on importe un paquetage externe ou que l'on importe le paquetage que l'ont a créé ailleurs :
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import pkg_game.Engine;
La convention pkg_ n'a d'intérêt que pour les paquetagescréés pour le jeu et visibles sur le diagramme de classes de BlueJ, c'est-à-dire pour les sous-dossiers de votre projet BlueJ visibles dans l'explorateur de fichiers (ce qui n'est pas le cas des paquetages externes importés).
Il n'y a pas ici à chercher une cohérence, puisque cette convention permet de distinguer vos paquetages des paquetages externes dans les instructions import et les fait apparaître plus clairement (regroupés) parmi tous les fichiers de votre projet dans l'explorateur de fichiers.
Un étudiant a écrit :
Bonsoir,
je souhaiterai importer la class Game dans une de mes class de mon package, comment faire ?
Il n'est normalement pas prévu que vous ayez besoin d'importer la classe Game.
Si vous avez une bonne raison de vouloir le faire, il faut mettre votre classe Game dans un de vos paquetages ; il n'y a donc plus de difficulté à l'importer.
Par contre, pour satisfaire aux exigences du serveur JNews lors du rendu du projet, vous devrez conserver une copie de la classe Game (*) en dehors de tout paquetage.
(*) cette copie peut très bien ne contenir que public class Game { }
Un étudiant a écrit :
Pour l'exercice 7.47.1,
je rencontre une petite difficulté.
En effet, je ne sait pas quoi
mettre dans mes dossier pkg_*.
Je ne sais pas si je dois repartir juste
mes fichiers .class, mes fichiers .ctxt, les deux, mes fichiers .java
...
Pouvez vous m'indiquer quels fichiers déplacer?
Bonjour Monsieur,
Je
voulais vous poser une question concernant les exercices bonus :
pouvons-nous choisir les exercices bonus que l'on veut faire ou faut-il
les faire dans l'ordre ? Par exemple, je souhaiterai ne pas faire
l'exercice abstract command 7.47, mais essayer d'autres exercices bonus
comme l'exercice paquetage 7.47.1.
En vous remerciant par avance de votre réponse et en vous souhaitant une bonne journée,
Cordialement,
Melisa Kockan
Réseaux sociaux