1) Dans la classe vehicle
, les méthodes distance
et getPathTo
retournent des valeurs fictives. En réalité, cela ne fait pas de sens d’instancier un objet de la classe vehicle
. Nous allons empêcher cela en définissant la classe vehicle
comme abstraite. Modifiez le code en conséquence.
2) De même, faites en sorte que la classe Sprite
soit abstraite.
Nous commençons à avoir beaucoup de classes et cela devient difficile de s’y retrouver.
1) Créez un package view
et déplacer les classes ImageRessource
, View
et toutes les classes Sprite
dans le package view
.
2) Créez un package model
et déplacer les classes en relation avec les véhicules dedans.
Un package en Java correspond à un répertoire. Utilisez les outils de refactoring pour déplacement correctement vos classes dans de nouveux dossiers.
Nous avons mis en évidence dans le deuxième TD des problèmes d’encapsulation avec la classe Position
. En réalité, nous n’avons pas besoin de modifier une position existante.
En Java, un objet immuable est une instance de classe dont les membres ne peuvent être modifiés après création.
1) Modifier la classe Position
pour que les attributs de classe soient final
. Ajouter une méthode equals
.
2) Java propose maintenant une syntaxe spécifique pour des classes de ce type. Utiliser la syntaxe des Record
pour définir la classe Position
.
Un record est défini en utilisant le mot-clé record
, suivi du nom du record et d’une liste délimitée par des parenthèses de ses composants, qui sont essentiellement les champs du record. Par exemple, avec record Person(String name, int age) {}
, Java génère des getters name()
et age()
pour accéder respectivement au nom et à l’âge de la personne, sans avoir besoin d’écrire manuellement ces méthodes.
En réalité, la surface martienne n’est pas aussi lisse que ça.
1) Ajouter une classe SpriteDust
() pour afficher des poussières martiennes à quelques endroits sur la grille.
2) Ajouter une classe SpriteRock
() pour afficher des rochers martiens à quelques endroits sur la grille.
Vous pouvez ajouter une super classe Sprite
dont vont hériter les classes Spritevehicle
et SpriteDecor
. La classe Sprite
ne prendrait qu’une image dans son constructeur. La classe Spritevehicle
prendrait une image et un véhicule comme paramètre dans son constructeur. La classe SpriteDecor
prendrait une image et une position comme paramètre dans son constructeur. Les classes SpriteDust
et SpriteRock
sont alors des sous-classes de cette classe SpriteDecor
.
Après avoir réaliser le pour aller plus loin
du TD3
Afficher une ChoiceDialog
lors d’un Ctrl+Clic
sur une case contenant plusieurs véhicules, afin de choisir lequel sélectionner. (Doc: javaFX)