06/11/2019
JAVA : NOTIONS
AVANCÉES
Collections, Exceptions
Pr. Sarra ROUBI
LP Génie Informatique : S3
COLLECTIONS EN
JAVA
Syntaxe, usage, types
1
06/11/2019
Collection en Java : concept
■ Dans les programmes Java, il est parfois utile de définir des
classes paramétrées par un type de données (ou une classe).
■ Ceci parfois dans le cas où on traite des donnés élémentaires
liées entre elles (départements d’une entreprise, employés d’un
département, etc)
■ Pour ceci, , Java offre les collections
Collection en Java : concept
■ Une collection est un objet qui permet d’organiser, manipuler et
gérer un groupe de données multiples
■ Il s’agit d’interfaces de collection définit en langage Java
■ La racine de la hiérarchie est l’interface Collection ou Map
2
06/11/2019
Collection en Java : concept
Classes concrètes
Table de Tableau
Arbre binaire Liste chaînée
hachage variable
Set<E> HashSet<E> TreeSet<E>
LinkedList
Interfaces List<E> ArrayList<E>
<E>
TreeMap
Map<E> HashMap<E>
<K,V>
Collection en Java : List
■ Les objets appartenant à la catégorie List sont, pour simplifier, des
tableaux extensibles à volonté.
■ On y trouve les objets Vector, LinkedList et ArrayList.
3
06/11/2019
Collection en Java : List
■ LinkedList
– Une liste chaînée (LinkedList en anglais) est une liste dont chaque
élément est lié aux éléments adjacents par une référence à ces
derniers.
Collection en Java : List
■ LinkedList
4
06/11/2019
Collection en Java : List
■ ArrayList
– un objet bien pratique. ArrayList est un de ces objets qui n'ont pas de taille
limite et qui, en plus, acceptent n'importe quel type de données, y
compris null !.
■ Il existe tout un panel de méthodes fournies avec cet objet :
– add() permet d'ajouter un élément ;
– get(int index) retourne l'élément à l'indice demandé ;
– remove(int index) efface l'entrée à l'indice demandé ;
– isEmpty() renvoie « vrai » si l'objet est vide ;
– removeAll() efface tout le contenu de l'objet ;
– contains(Object element) retourne « vrai » si l'élément passé en paramètre est dans
l'ArrayList.
Collection en Java : Map
■ Une collection de type Map est une collection qui fonctionne avec
un couple clé - valeur.
■ On y trouve les objets Hashtable, HashMap, TreeMap …
■ La clé, qui sert à identifier une entrée dans la collection, est
unique. La valeur, au contraire, peut être associée à plusieurs clés.
5
06/11/2019
Collection en Java : Map
■ Ces objets ont comme point faible majeur leur rapport conflictuel
avec la taille des données à stocker.
■ En effet, plus vous aurez de valeurs à mettre dans un objet Map,
plus celles-ci seront lentes et lourdes : logique, puisque par
rapport aux autres collections, il stocke une donnée
supplémentaire par enregistrement..
LES EXÉPTIONS EN
JAVA
Principe, Syntaxe, usage
6
06/11/2019
Les exceptions en Java : Principe
■ Lorsqu’on écrit un programme, plusieurs erreurs peuvent survenir.
■ Les erreurs syntaxiques sont détectées à la compilation. Par
contre les erreurs sémantiques surviennent uniquement à
l'exécution.
■ Il faut les traiter par un processus à part.
Les exceptions en Java : Principe
■ Une exception est un objet Java
■ A la réception d'une exception, le code est arrêté, et Java
recherche en local puis dans la liste des appelants la façon de
traiter cette exception
■ Il existe plusieurs types d’exception :
7
06/11/2019
Les exceptions en Java : Principe
diviser un nombre par 0 ArithmeticException
envoyer un message sur une
NullPointerException
référence null
accéder à des cases d’un ArrayIndexOutOfBoundsException
tableau en dehors des indices,
Comparer des objets de
ClassCastException
classes différentes
etc. etc.
Les exceptions en Java : Principe
■ D'après le message affiché dans la console, le nom de l'exception
qui a été déclenchée est ArithmeticException.
8
06/11/2019
Les exceptions en Java : Mécanisme
■ Les mots clés try - catch permettent d'intercepter et de traiter une
exception
■ Le mot clé throws permet de lister les exceptions à intercepter lors
de l'appel d'une méthode
■ Le mot clé throw permet de lever une exception
■ PS : L'utilisateur peut créer ses propres exceptions
Les exceptions en Java : Mécanisme
■ Une exception levée et qui n’est pas attrapée provoque la fin du
programme, en indiquant à l ’utilisateur la pile de méthodes
traversées par l ’exception:
– pas de clause try...catch
– une méthode susceptible de lancer une exception sans l ’attraper
doit l’indiquer dans son entête : mot clé throws
9
06/11/2019
Les exceptions en Java : Mécanisme
■ Le couple try - catch permet de surveiller une portion de code,
d'intercepter et de traiter les exceptions en Java.
■ Le mot clé try délimite la portion de code à surveiller
■ Le mot clé catch permet de capturer et de traiter une exception
■ Dans un try peuvent survenir plusieurs exceptions. Chacune d'elle
est traitée par un catch approprié
Les exceptions en Java : Mécanisme
Principe Syntaxe
try {
// code pouvant lever une
//exception
■ Syntaxe complète d'une …
gestion d'exception } catch ( MyExceptiontype e) {
// code a exécuter si
//MyExceptiontype est
levée
…
} catch ( Exception e) {
[Link]([Link]())
;;
} finally {
// code toujours exécuté
}
10
06/11/2019
Les exceptions en Java : Mécanisme
Les exceptions en Java : Mécanisme
■ Nous initialisons deux variables de type int, l'une à 0 et l'autre à un
nombre quelconque.
■ Nous isolons le code susceptible de lever une exception
: [Link](j/i);.
■ Une exception de type ArithmeticException est levée lorsque le
programme atteint cette ligne.
■ Notre bloc catch contient justement un objet de
type ArithmeticException en paramètre. Nous l'avons appelé e.
■ L'exception étant capturée, l'instruction du bloc catch s'exécute !
■ Notre message d'erreur personnalisé s'affiche alors à l'écran
11
06/11/2019
Les exceptions en Java : Mécanisme
■ Le catch : Il permet de connaître le type d'exception qui doit être
capturé.
■ Et l'objet — ici, e — peut servir à préciser notre message grâce à
l'appel de la méthode getMessage() :
Les exceptions en Java : Personnalisation
■ Reprenons l’exemple : Ville / Capitale
■ La procédure pour faire ce tour de force est un peu particulière. En
effet, nous devons :
– créer une classe héritant de la classe Exception :
NombreHabitantException (par convention, les exceptions ont un
nom se terminant par « Exception ») ;
– renvoyer l'exception levée à notre
classe NombreHabitantException ;
– ensuite, gérer celle-ci dans notre
classe NombreHabitantException.
12
06/11/2019
Les exceptions en Java : Personnalisation
13