DEUG MIAS Option Info Introduction JAVA - PowerPoint PPT Presentation

1 / 52
About This Presentation
Title:

DEUG MIAS Option Info Introduction JAVA

Description:

Certains cas d'erreurs peuvent tre pr vus l'avance par le programmeur. ... anciennement. Impl mentation. Interface. Page : 32. Introduction JAVA : pb d'h ritage et ... – PowerPoint PPT presentation

Number of Views:47
Avg rating:3.0/5.0
Slides: 53
Provided by: sig9
Category:

less

Transcript and Presenter's Notes

Title: DEUG MIAS Option Info Introduction JAVA


1
DEUG MIAS Option Info Introduction à JAVA
  • Olivier Sigaud
  • LIP6/AnimatLab
  • olivier.sigaud_at_lip6.fr
  • 01.44.27.88.53

2
Plan du cours 8
  • Exceptions
  • Nature
  • Emission / Capture dune exception
  • Comment faire vos exceptions ?
  • Des conteneurs les Collections
  • Vector
  • Set, Map, List
  • Tri dans les collections

3
Les Exceptions
4
Prévoir les erreurs d'utilisation
  • Certains cas d'erreurs peuvent être prévus à
    l'avance par le programmeur. Deux exemples
    typiques
  • Service de couche basse (I/O fichiers)
  • Saisie de données par lutilisateur
  • Le programmeur a trois options
  • Planter le programme à lendroit où lerreur
    est détectée
  • Manifester explicitement le problème à la couche
    supérieure
  • Tenter une correction

5
Les exceptions
  • Exception situation particulière imposant une
    rupture dans le cours dun programme erreur,
    impossibilité
  • En JAVA, un objet Exception est une bulle
    logicielle produite dans cette situation qui va
    remonter la pile dexécution pour trouver une
    zone de code apte à la traiter
  • Si cette zone nexiste pas, le programme sarrête
    en affichant la pile dexécution.
  • Sinon, la zone de code sert à pallier au problème
    (poursuite éventuelle, ou sortie commentée)

6
Nature des exceptions
  • En Java, les exceptions sont des objets ayant 3
    caractéristiques
  • Un type
  • Une chaîne de caractères (option) pour plus de
    précision.
  • Un  instantané  de la pile dexécution au
    moment de la création.
  • Les exceptions construites par l'utilisateur
    étendent la classe Exception
  • RunTimeException, Error sont des exceptions et
    erreurs standards gérées par Java (non
     checkées )

7
Arbre des exceptions
Throwable String (message d'erreur)
Error
Exception
OutOfMemoryError
RunTimeException
NullPointerException ClassCastException ...
VosExceptions...
8
Emission d'une exception
  • L'exception elle-même est levée par l'instruction
    throw suivi de la création d'un objet du type de
    l'exception
  • Une méthode susceptible de lever une exception
    est identifiée par le mot-clé throws suivi du
    type de l'exception Exemple
  • public void ouvrirFichier(String name) throws
    FichierSansNomException
  • if (namenull) throw new FichierSansNomExceptio
    n()
  • else
  • ...

9
Capture d'une exception
  • Try et catch servent à capturer l'exception dans
    la méthode appelante (attraper la bulle)
  • Exemple
  • public void lireFichier(String name)
  • try ouvrirFichier(name)
  • catch(FichierSansNomException e)
  • e.printStackTrace()
  • System.exit(-1)

Si une erreur se produit ici.
Je la récupère là.
10
Comment faire vos exceptions ?
  • Rappel Faites les hériter de la classe
    Exception et non pas de RunTimeException.
  • Sinon, les utilisateurs de votre code ne
    prévoiront pas le traitement des erreurs (pas
    derreur à la compilation...)
  • Cest une erreur de conception (Génie Logiciel)

11
Créer une exception exemple
  • Dans un fichier MonException.java
  • class MonException extends Exception
  • On peut difficilement faire plus simple !!!

12
Exercice Vecteur et exception
  • Dans la classe Vecteur développée lors des cours
    précédents, ajouter une méthode Object get(int
    index) dont le comportement est le suivant
  • Si l'index est à l'extérieur des bornes définies
    pour la taille du vecteur, la méthode lève
    l'exception NoSuchElementException
  • Sinon, elle renvoie l'objet stocké à la position
    spécifiée par l'index

13
Solution création de l'exception
  • class NoSuchElementException extends Exception

14
Solution suite
  • /
  • Renvoie le index_ième objet du vecteur
  • _at_param index numéro de lObject cherché
  • _at_return lObject trouvé ou null
  • /
  • public Object get(int index) throws
    NoSuchElementException
  • if ((indexlt0) (indexgtsize)) throw new
    NoSuchElementException()
  • else
  • return dataindex

15
Exercice (suite)
  • Dans la classe Vecteur développée lors des cours
    précédents, ajouter une méthode boolean add(int
    index, Object o) dont le comportement est le
    suivant
  • Si l'index est à l'extérieur des bornes définies
    pour la taille du vecteur, la méthode lève
    l'exception NoSuchElementException
  • S'il y a déjà un objet à l'index spécifié, la
    méthode ne fait rien et renvoie false
  • Sinon, elle y place l'objet et renvoie true

16
Solution méthode add()
  • class Vecteur
  • int size
  • Object data
  • public boolean add(int index, Object o) throws
    NoSuchElementException
  • if ((indexlt0) (indexgtsize)) throw new
    NoSuchElementException()
  • if (dataindex!null) return false
  • else
  • dataindexo
  • return true

17
Exercice (suite)
  • Dans une classe Main, écrivez une méthode main()
    qui
  • récupère un entier passé en argument au programme
    et le stocke dans la variable "index",
  • crée un Vecteur doté de 10 cases, supposées
    vides,
  • crée une Voiture de longueur 3.10m stockée dans
    une variable v1
  • tente de stocker v1 dans la case numéro index,
  • Si la méthode add() réussit, récupère l'objet
    dans une variable v2 de type Voiture.

18
Solution classe Main
  • class Main
  • public static void main(String args)
  • Vecteur v new Vecteur(10)
  • int index args0.intValue()
  • try
  • Voiture v1 new Voiture(2.89)
  • if (v.add(index,v1))
  • Voiture v2 (Voiture) v.get(index)
  • catch(NoSuchElementException e)
  • System.out.println( lindex est erroné )

19
La classe Vector
20
Quid ?
  • Fournit un tableau dobjets (de la classe Object)
    dont la taille peut évoluer dynamiquement
  • Se crée avec une taille par défaut ou une taille
    imposée
  • Alloue davantage de mémoire quand il se remplit à
    coups de addElement()
  • Note a été considérablement étendu pour être
    compatible avec les collections (Iterator,
    Collection)

21
Les Attributs
  • capacityIncrement
  • elementCount
  • elementData

22
Les Constructeurs
  • Vector()
  • Vector(Collection c)
  • Vector(int initialCapacity)
  • Vector(int initialCapacity, int
    capacityIncrement)

23
Les Ajouts
  • add(int index, Object element)
  • set(int index, Object element)
  • add(Object element)
  • addAll(int index, Collection c)
  • addAll(Collection c)
  • addElement(Object element)
  • insertElementAt(Object element, int index)
  • setElementAt(Object element, int index)

24
Les suppressions
  • remove(Object element)
  • removeElement(Object element)
  • removeAll(int index, Collection c)
  • removeAllElements()
  • remove(int initialCapacity)
  • removeElementAt(int index)
  • removeRange(int fromIndex, int toIndex)

25
Les accès
  • int size ()
  • int capacity()
  • boolean isEmpty()
  • Object elementAt(int index)
  • Object get(int index)
  • Object firstElement()
  • Object lastElement()
  • Enumeration elements()
  • int indexOf(Object element)
  • int indexOf(Object element, int index)
  • int lastIndexOf(Object element)

26
Divers
  • clear()
  • Object clone()
  • boolean isEmpty()
  • boolean contains(Object element)
  • boolean containsAll(Collection c)
  • boolean retainAll(Collection c)
  • List subList(int fromIndex, int toIndex)
  • Object toArray()
  • String toString()

27
Les Collections
28
Les Collections
  • Formellement une collection est un ensemble
  • 2 types Set (ensemble) et Map (couples
    clef-valeur)
  • Exemples de Set
  • Lettres de lalphabet, mots réservés de Java,
  • Exemples de Map
  • Adresse IP ? nom DNS,
  • clef -gt enregistrement dans base de données,
  • dictionnaire mots -gt signification
  • Intérêt
  • Encapsulent à la fois les structures ET les
    algorithmes qui les manipulent...

29
Fourni par Java
  • Offert (1)
  • Hiérarchie dinterfaces avec toutes les méthodes
    possibles.
  • Offert (2)
  • Implémentations performantes...

30
Hiérarchie des Interfaces
Collection
duplications autorisées
Set
List
Map
duplications interdites
duplications autorisées Index de position
SortedMap
SortedSet
31
Les implémentations
32
Interface Collection
  • Opérations de base
  • ajout boolean add(Object element)
  • retrait boolean remove(Object element)
  • un retrait ne retire quun élément
  • Requêtes
  • int size()
  • boolean isEmpty()
  • boolean contains(Object element)
  • Iterator iterator() pour parcourir la collection

33
Iterator
  • Méthodes
  • boolean hasNext()
  • Object next()
  • void remove() (enlève le dernier élément next())
  • Exemple
  • Collection collection new ArrayList()
  • Iterator iterator collection.iterator()
  • while(iterator.hasNext())
  • Object element iterator.next()
  • if(removalCheck(element))
  • iterator.remove()

34
Autres opérations
  • boolean containsAll(Collection collection)
  • Optionnelles
  • boolean addAll(Collection collection)
  • void clear()
  • void removeAll(Collection collection)
  • void retainAll(Collection collection)
  • Tout nétant pas implémenté
  • UnsupportedOperationException
  • Cest une RuntimeException et pas une Exception

35
Interface Set
  • Etend Collection mais duplications interdites
  • (les implémentations concrètes utilisent la
    méthode equals())
  • Sous interface de Set
  • SortedSet maintient un ordre dans ses éléments
  • 2 implémentations concrètes
  • HashSet ensemble simple
  • TreeSet Collection ordonnée qui implémente
    SortedSet

36
Exemple.
import java.util. public class ExempleSet
public static void main(String args) Set set
new HashSet() set.add("Bernard")
set.add("Elisabeth") set.add("Gilles")
set.add("Elisabeth") set.add("Zebulon")
set.add("Clara") System.out.println(set) //
Bernard, Zebulon, Clara, Elisabeth,
Gilles Set sortedSet new TreeSet(set) System
.out.println(sortedSet) // Bernard,
Clara, Elisabeth, Gilles, Zebulon
37
Interface List
  • collection ordonnée, duplications autorisées,
    opérations dindexation
  • Ajouts/retraits
  • Insertion délément ou de collection,
    consultation délément, retrait délément,
    remplacement délément
  • Indexation
  • Recherche délément avec retour dindex si
    trouvé
  • Sous listes
  • List sublist(int fromInInclus, int toInExclus)
  • Les modifications des sous-listes (add, remove,
    set) ont un effet sur la liste dorigine.

38
ListeIterator
  • Nouveau type qui étend Iterator avec parcours
    bidirectionnel
  • Exemple
  • List list
  • ListIterator iterator list.listIterator(list.siz
    e())
  • while(iterator.hasPrevious())
  • Object element iterator.previous()
  • // traitement de element...

39
Deux implémentations de List
  • ArrayList
  • Optimale pour gestion accès aléatoire, sans
    ajout/retrait ailleurs quà la fin.
  • LinkedList
  • Pour ajouts/retraits fréquents en milieu de
    liste, accès séquentiels...
  • Six méthodes supplémentaires de gestion des
    extrémités
  • addFirst(), addLast(), getFirst(), getLast(),
  • removeFirst(), removeLast()

40
Exemple de file dattente
LinkedList queue ... queue.addFirst(element) O
bject object queue.removeLast()
Exemple de pile FIFO
LinkedList stack ... stack.addFirst(element) O
bject object stack.removeFirst()
Vector et Stack sont des implémentations
historiques de List
41
Usage de List
import java.util. public class ExempleList
public static void main(String args) List
list new ArrayList() list.add("Bernard")
list.add("Elisabeth") list.add("Gilles")
list.add("Elisabeth") list.add("Zebulon")
list.add("Clara") System.out.println(list)
// ---gt Bernard, Elisabeth, Gilles, Elisabeth,
Zebulon, Clara System.out.println("2 "
list.get(2)) // ---gt 2 Gilles System.out.printl
n("0 " list.get(0)) // ---gt 0 Bernard ...
42
Usage de LinkedList
LinkedList queue new LinkedList() queue.addFirs
t("Bernard") queue.addFirst("Elisabeth") queue.a
ddFirst("Gilles") queue.addFirst("Elisabeth") qu
eue.addFirst("Zebulon") queue.addFirst("Clara")
System.out.println(queue) // ---gt Clara,
Zebulon, Elisabeth, Gilles, Elisabeth,
Bernard queue.removeLast() queue.removeLast() S
ystem.out.println(queue) // ---gt Clara,
Zebulon, Elisabeth, Gilles
43
Interface Map
  • Ensemble de relations clef - valeur, clef
    unique
  • Opérations daltérations
  • Object put(Object key, Object value)
  • Object remove(Object key)
  • void putAll(Map mapping)
  • void clear()
  • Requêtes
  • Object get(Object key)
  • boolean containsKey(Object key)
  • boolean containsValue(Object value)
  • boolean isEmpty()
  • int size()

44
Opérations de Map
  • Conversion de groupes de clefs ou de valeurs sous
    forme de Collections
  • public Set keySet() les clefs étant uniques, on
    obtient un Set en retour
  • public Collection values() les valeurs pouvant
    être répétées, on obtient une Collection en
    retour
  • public Set entrySet() retourne un Set
    déléments qui implémentent linterface
  • Map.entry un objet  Couple 

45
Deux implémentations de Map
  • HashMap
  • Optimale pour insérer/retirer et tester la
    présence déléments
  • TreeMap
  • Parcours des couples clef-valeur suivant un
    certain ordre
  • Il est plus rapide de tout entrer dans une
    HashMap et de convertir en TreeMap

46
Le tri dans les collections
47
Le tri (1)
  • Implantation du tri au cur du JDK 1.2
  • Ex String et Integer implémentent linterface
    java.lang.Comparable
  • Permet de décrire un ordre  naturel 
  • Lors dun tri, appel de ...
  • public int compareTo(Object element)
  • lt 0 si this avant element
  • gt 0 si this après element
  • 0 si même position

48
Le tri (2)
  • Classe non prévue pour être Comparable ?
  • Utilisation dun objet  tiers  qui prend en
    charge la comparaison entre deux objets
  • Cet objet tiers doit implémenter
    java.util.Comparator
  • public int compare(Object o1, Object o2)
  • Même signification que compareTo(), méthode de
    java.lang.Comparable

49
Exemple (1)
public class GuideMichelin implements
Comparator public int compare(Object rest1,
Object rest2) double qual1 (Restaurant)rest1.e
valuation() double qual2 (Restaurant)rest2.eva
luation() return (int) (qual1 - qual2)
class Restaurant public Restaurant(String
s) public double evaluation() double
qualite return qualite
cast
50
Exemple (2)
class Main public static void main(String
args) List listeRestos new
ArrayList() listeRestos.add(new
Restaurant( Tour dArgent )) listeRestos.add(n
ew Restaurant( Maxims )) listeRestos.add(new
Restaurant( Chez Mimile )) GuideMichelin
guide new GuideMichelin() Collections.sort(lis
teRestos, guide)
51
Exercices
  • Ecrire un programme qui remplit un ArrayList avec
    10 nombres entiers aléatoires entre 0 et 100, les
    trie puis les affiche dans l'ordre croissant
  • Ecrire un programme qui associe dix 10 nombres
    entiers aléatoires entre 0 et 100 à dix chaînes
    de caractères de "a" à "j" dans un TreeMap, trie
    les couples selon les nombres, puis affiche les
    chaînes dans l'ordre croissant des nombres

52
Une overdose de Java ?
Write a Comment
User Comments (0)
About PowerShow.com