Programmation Java
Master M2 BT --- Feuille n° 4
Exception, collection, map, comparaisons
Exercice n° 1 (Exception)
-
Écrire une classe ShapeDimensionException
qui dérive de la classe Exception et correspondra à un exception
levée lorsqu'une forme a une des ses deux dimensions négative.
Re-écrire les constructeurs des classes AbstractShape,
Rectangle et Ellipse
pour qu'ils lèvent une exception en cas d'arguments négatifs.
-
Dans une classe Test écrire une méthode main
qui crée un rectangle dont les coordonnées sont lues au clavier.
En cas de coordonnées négatives, on demandera à l'utilisateur d'entrer à nouveau les données en capturant l'exception levée.
Exercice n° 2 (Collection, Map)
-
Écrire un programme indiquant quels sont les mots qui se trouvent sur la ligne de commande, on affichera les doublons une unique fois.
java toto tutu toto titi tutu.
- Dans un premiers temps, afficher "toto", "titi" et "tutu" dans n'importe quel ordre.
- Ensuite, afficher "toto", "tutu" "titi" dans cet ordre, c'est-à-dire l'ordre d'insertion.
- Écrire un autre programme qui compte le nombre
d'occurences d'un mot sur sa ligne de commande
et affiche chaque mot suivi de son nombre d'occurences.
Exercice n° 3 (Comparaisons)
-
Écrire une classe ID qui implémente l'interface
Comparable<ID> pour représenter des fiches d'identités. Chaque
objet de cebe classe aura un champ name de type String
et un champ age de type Integer.
-
Écrire une méthode compareTo qui permet de comparer deux fiches.
On aura f1.compareTo(f2) < 0 ssi le nom f1
est inférieur au nom de f2 selon l'ordre lexicographique ou
s'ils ont les mêmes noms mais l'âge de f1 est inférieur à
l'âge de f2.
-
Écrire une classe Test avec une méthode main
où l'on crée un ensemble ordonné
de fiches. Vérifier l'ordre donné par la méthode compareTo
en affichant l'ensemble.
-
Écrire une classe NameAgeComparator qui implémente
l'interface Comparator<ID> de telle sorte que
compare(f1,f2) < 0 si le nom f1
est inférieur au nom de f2 selon l'ordre lexicographique ou
s'ils ont les mêmes noms mais l'âge de f1 est inférieur à
l'âge de f2 (comme tout à l'heure).
-
Écrire une classe AgeNameComparator qui implémente
l'interface Comparator de telle sorte que
compare(f1,f2) < 0 si l'âge f1
est inférieur à l'âge de f2 ou
s'ils ont le même âge mais le nom de f1 est inférieur à
celui de f2 pour l'ordre lexicographique.
-
Écrire une classe OppositeNameAgeComparator qui implémente
l'interface Comparator de telle sorte que
compare(f1,f2) < 0 ssi compare(f1,f2) > 0
pour le comparateur NameAgeComparator.
-
Créer une classe Test avec une méthode main
où l'on crée trois ensembles ordonnés de fiches avec chacun
un des comparateurs précédents passé en argument. Vérifier l'ordre
d'affichage sur les trois collections.