IN101
– TD4 2009/2010
Sujet
Durée : 2 h
1
OBJECTIFS
·
Maîtriser
l’héritage et la rédéfinition
- Maîtriser les méthodes de la classe
Object
·
Écrire
correctement du code java (compilable) sur papier (sans l’aide du compilateur)
2
Classe
Point
- Deux attributs entiers aX et aY
- Un constructeur à 2
paramètres
- Un constructeur sans
paramètre qui crée le point à l’origine des axes sans duplication de
code
- Une procédure déplace à deux paramètres
entiers (Dx,Dy) qui effectue une
translation du point
- Une fonction toString qui retourne le point
sous la forme "(x,y)" .
- Une procédure affiche qui affiche le point
sous la même forme
3
Classe
PointColoré
- Un point coloré est un
point
- Un attribut aCouleur stockée comme une String (réduite à un seul
caractère)
- Un constructeur à 3
paramètres
- Un constructeur à 2
paramètres qui force la couleur à "N" (comme Noir) sans
duplication de code
- Un constructeur sans
paramètres qui crée un point Noir à l’origine des axes sans duplication
de code
- Une fonction toString qui retourne le point
sous la forme "couleur:(x,y)" sans duplication de
code
4
Classe
Utilisation
- Une procédure test pour contenir les
actions suivantes :
- Déclarer/créer un Point, l’afficher.
- Déclarer/créer un PointColoré, l’afficher.
- Déplacer le PointColoré, l’afficher. (faut-il
une procédure affiche() dans PointColoré ?)
5
Égalité de 2 points
·
It is reflexive: for any non-null reference
value x, x.equals(x) should return true. (cas n°1)
·
It is symmetric: for any non-null reference values x and y, x.equals(y)
should return true if and only if y.equals(x) returns true. (cas n°3)
·
It is transitive: for any non-null reference
values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true,
then x.equals(z) should return true.
·
It is consistent: for any non-null reference
values x and y, multiple invocations of x.equals(y) consistently return true or
consistently return false, provided no information used in equals comparisons
on the objects is modified.
·
For any non-null reference value x,
x.equals(null) should return false. (cas n°2)
1.
Redéfinir
la fonction equals dans Point (Attention à la signature !) :
-
Cas
général : sauter 3 lignes, puis écrire les comparaisons nécessaires en
supposant que le paramètre est un Point, puis
-
Cas
n°3 : (juste avant) tester le cas contraire (c-à-d si ce n’est pas
un Point), puis
-
Cas
n°2 : (juste avant) tester le cas qui peut empêcher de tester le
cas n°3, puis
-
Cas
n°1 : (juste avant) tester le cas trivial qui rend inutile le reste
de la fonction (réflexivité) !
2.
Redéfinir
la fonction equals dans PointColoré
(en évitant la duplication de code)
6
Comptage
des points
- Définir un nouvel
attribut aNbPoints dans Point (dans chaque
point ?)
- Définir une fonction getNbPoints pour y accéder (et
s’il n’y a encore aucun point créé ?)
- Modifier
un/certains/tous les constructeur(s) pour incrémenter aNbPoints
- Redéfinir la méthode
nécessaire pour décrémenter aNbPoints
- Afficher un message
différent selon qu’un Point ou un PointColoré est supprimé (sans
faire de test)
- Modifier Utilisation pour montrer l’évolution de aNbPoints à la hausse et à la
baisse