IN3S02
– TD4 2011/2012
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
« naturel » (à combien de
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 codé sur un seul
caractère mais stocké comme une String
- Un constructeur
« naturel » (à combien de
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 (qui n’a
pas vocation à être instanciée)
- 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. (faut-il
une procédure affiche() dans PointColoré ?)
- Déplacer le PointColoré, l’afficher.
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 l’hypothèse 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 (doit-il être présent 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