Objet, Référence et redéfinition
Exercice 1 - Plaque d'immatriculation
On veut modéliser des numéros de plaques d'immatriculation en séparant le code
du département des autres informations.
Pour tous les exercices suivants même si ce n'est pas explicitement demandé
il vous faudra tester à chaque fois le code que vous écrivez en écrivant
un main soit dans la classe courante soit dans une autre classe.
-
Écrire une classe NumberPlate contenant 2 champs
stateCode et serial représentant respectivement le code du
département (penser aux codes 2A et 2B pour la Corse) et la
séquence de chiffres et de lettres qui le précède.
-
Écrire le constructeur prenant en paramètres les valeurs des
champs précédents, ainsi que les méthodes
getSerial() et getStateCode().
-
Écrire la méthode toString().
A quoi sert l'annotation @Override ?
Doit-on l'utiliser dans ce cas ?
-
Écrire un autre constructeur prenant en paramètres une chaîne
de caractères contenant l'immatriculation entière, et qui en
extrait le code du département et le numéro de série pour
initialiser les champs de l'objet. On supposera que le numéro de
département est toujours composé des deux derniers caractères de
l'immatriculation entière.
Pour vous aidez, vous pouvez regarder, dans la documentation, la classe
java.lang.String.
Exercice 2 - Référence, comparaison d'objet
Éxecutez le code suivant.
public static void main(String[] args){
NumberPlate a = new NumberPlate("956 XM 94");
NumberPlate b = new NumberPlate("956 XM 94");
NumberPlate c = a;
System.out.println(a==b);
System.out.println(a==c);
System.out.println(a.equals(b));
System.out.println(a.equals(c));
}
Modifier le code de NumberPlate pour que le
comportement de cette classe soit plus naturel.
Puis éxecutez le code suivant.
public static void main(String[] args){
List<NumberPlate> list = new ArrayList<NumberPlate>();
NumberPlate a = new NumberPlate("956 XM 94");
NumberPlate b = new NumberPlate("956 XM 94");
list.add(a);
list.add(b);
System.out.println(list.indexOf(a));
System.out.println(list.indexOf(b));
}
Le comportement de la classe NumberPlate correspond
t'il a nos attentes ? Pourquoi ?
Utiliser l'annotation @Override pour vérifier.
Modifier la classe en conséquence.
Exercice 3 - Trions gaiement
-
Écrire un programme Java qui demande à l'utilisateur des mots
saisis sur l'entrée standard System.in et qui les affiche sur la
sortie standard System.out.
-
Modifier le programme pour que s'il y a un nom de fichier sur
la ligne de commande alors le programme utilise les mots du fichier
sinon le programme utilise l'entrée standard.
-
Si ça n'est pas déjà fait, modifiez votre programme pour que les mots soient affichés
une fois qu'ils ont tous été saisis (utilisez java.util.ArrayList).
Quelle est la différence entre un tableau et la classe
java.util.ArrayList.
-
Le compilateur indique des messages d'alerte (« warning»).
Expliquez pourquoi et faites en sorte de le rassurer.
-
Modifier le programme pour qu'il affiche les mots saisis par ordre
lexicographique.
Rémi Forax - Université de Marne La Vallée