MIM1
TD 3 de POOGL
Héritage
Vincent BOUDET
Bureau 343 (84-70)
email vboudet@ens-lyon.fr
23 Janvier 2000
A L' héritage : Le jeu d' échec
Les échecs fournissent un exemple classique d' application de l'héritage
qui est très riche.
Question A.1
Créer la classe PieceEchec qui s' intérresse 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 classe PieceEchec
possède les méthodes suivantes :
-
norme() 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,
- toString() et imprimer().
Cette classe comporte également un constructeur pour initialiser les champs
et un constructeur vide.
Question A.2
Créer une classe Cavalier étendant la classe PieceEchec, dont
le constructeur fait appel à celui de la super-classe. La méthode
estValide() utilisera la méthode estValide() de la super-classe.
Question A.3
Faire de même avec les classes Fou et Tour.
Question A.4
Peut-on créer une classe Reine à partir des classes Fou et Tour ?
Créer une Classe Reine.
Question A.5
Créer une classe Roi comme sous-classe de la classe Reine.
B Classe abstraite : Évaluation de fonction
L' exercice suivant illustre l' utilisation d' une classe abstraite.
Question B.1
Créer une classe FonctionNommee qui possède un champ nom (qui ne
prendra de valeur que dans les sous-classes de FonctionNommee. Elle doit avoir une méthode abstraite : public abstract double calculer(double x)
et une méthode qui imprime la valeur de la variable et celle de la fonction en utilisant son nom : public void imprimer(double x).
Question B.2
Étendre la classe FonctionNommee par la classe CosMoinsNommee
correspondant à la fonction cos(x)-x.
Question B.3
Créer la classe ImprimerFonction qui est destiné à lister les valeurs
dúne fonction depuis une borne inférieure jusqu' à une borne supérieure avec un
pas donné (méthode lister(). La classe comporte un champ de type
FonctionNommee qui est la fonction à étudier.
Question B.4
Tester ces classes en imprimant les valeurs de cos(x)-x entre 0 et 2
par pas de 0.1.
C Interface : Dichotomie
Dans cet exercice, on va chercher à illustrer la notion d' interface.
On veut rechercher un zéro d' une fonction par dichotomie. Contrairement
à l' exercice précédent, la classe associée à la fonction étudiee n' a
pas besoin de posséder un nom ni d' avoir une méthode imprimer(), il
suffit qu' elle ait une méthode abstraite calculer(). Une interface
convient donc parfaitement, elle est appelée Fonction. Une classe
CosMoins implante cette interface.
Question C.1
Créer l' interface Fonction.
Question C.2
Rédiger la classe Dichotomie qui recherche un zéro d' une fonction
modélisée par une classe implantant l' interface Fonction.
La classe Dichotomie a les champs suivants :
-
xInf borne inférieure de l' intervalle de recherche,
- xSup borne supérieure de l' intervalle de recherche,
- zero valeur du zero de la fonction,
- precision taille minimale de l' intervalle,
- fonc fonction étudiée de type Fonction.
et les méthodes suivantes :
-
testerIntervalle() qui teste si les bornes sont des zéros et
vérifie si la fonction prend des valeurs de signes contraires aux bornes de
l' intervalle.
- reduireIntervalle() qui coupe l' intervalle étudíe en deux et
conserve la moitié ou se situe le zéro. Quand l' intervalle est plus petit
que precision le zéro est trouvé.
- chercherZero() qui sera utilisé dans une méthode main()
pour trouver la zéro dúne fonction.
Question C.3
Créer la classe CosMoins et tester la dans l' intervalle [0,2].
This document was translated from LATEX by
HEVEA.