Les échecs fournissent un exemple classique d’application de l’héritage qui est riche. Cet exercice aborde seulement une partie du sujet.
1- Créer la classe PieceEchec qui s’intéresse au déplacement d’une pièce. Elle prend comme champs : la position des cases de départ et d’arrivée lors d’un déplacement, ainsi que le nom de la pièce. La position d’une case est définie par deux entiers compris entre 1 et 8 : le numéro de la rangée et celui de la colonne.
La classe PieceEchec possède les mèthodes suivantes :
- Norme ()(norme du dèplacement ) retournant le carré de la distance entre les cases de départ et d’arrivée
- EstValide() qui retourne 1 si la case d’arrivée est dans l’échiquier et 0 sinon (on peut aussi utiliser un booléen au lieu d’un nombre entier)
- Tostring() et imprimer()
Cette classe comporte également un constructeur pour initialiser les champs et un constructeur vide.
2- Quand un cavalier se déplace, la norme du déplacement vaut 5. Créer une classe Cavalier étendant la classe PieceEchec. Dont le constructeur fait appel à celui de la super-classe. De même, la méthode estValide() de cavalier utilisera la méthode estValide() de la super-classe.
N.B : pour traiter ces questions, il est nécessaire de recourir au if.
SUGGESTION : On peut poursuivre l’étude de cette question en ajoutant d’autres pièces. Le fou se déplace en diagonale alors que la tour utilise les rangées et les colonnes. La reine a les capacités d’une tour et d’un fou. La classe Reine ne peut pas hériter des classes Fou et Tour, car l’héritage multiple est impossible. Le roi a les capacités de déplacement d’une reine mais il ne peut se transporter que sur une case contiguë (sauf au moment du roque). On peut donc concevoir la classe Roi comme une sous-classe de Reine, ou se contenter de qu’un roi est une pièce dont sa norme de déplacement vaut 1 ou 2 .
Partager