Programmation Orientée Objet Résumé des cours précédents

Programmation Orient´ee Objet
Bertrand Estellon
epartement d’Informatique de Luminy
Aix-Marseille Universit´e
26 avril 2012
Bertrand Estellon (DIL – Aix-Marseille) Programmation Orient´ee Objet 26 avril 2012 1 / 379
Java Cours 6
R´esum´e des cours pr´ec´edents
Premier cours :
IObjets, classes, instances, r´ef´erences
ID´efinir et instancier une classe
Deuxi`eme cours :
IDescription et impl´ementation d’interfaces
ITranstypage (vers le haut et vers le bas)
Troisi`eme cours :
IExtension de classes, red´efinition de m´ethodes
IClasses et m´ethodes abstraites
Cinqui`eme cours :
ISurcharge de m´ethodes
ITypes param´etr´es
Bertrand Estellon (DIL – Aix-Marseille) Programmation Orient´ee Objet 26 avril 2012 179 / 379
Java Cours 6
Structures de donn´ees Java
Des interfaces :
ICollection<V>: Groupe d’´el´ements
IList<V>: Liste d’´el´ements ordonn´es et accessibles via leur indice
ISet<V>: Ensemble d’´el´ements uniques
IQueue<V>: Une file d’´el´ements (FIFO)
IDeque<V>: Une file `a deux bouts (FIFO-LIFO)
IMap<K,V>: Ensemble de couples cl´e-valeur.
Il est pef´erable d’utiliser les interfaces pour typer les variables :
L i s t <Integer>l = new ArrayList<Integer >();
(code qui utilise l)
car on peut changer la structure de donn´ees facilement :
L i s t <Integer>l = new LinkedList<Integer >();
(code qui utilise l et qui n’a pas `a ˆetre modifi´e)
Bertrand Estellon (DIL – Aix-Marseille) Programmation Orient´ee Objet 26 avril 2012 180 / 379
Java Cours 6
Les collections
Les m´ethodes de l’interface Collection<V>:
Iboolean add(V e)
Iboolean addAll(Collection<? extends V> c)
Ivoid clear()
Iboolean contains(Object o)
Iboolean containsAll(Collection<?> c)
Iboolean isEmpty()
Iboolean remove(Object o)
Iboolean removeAll(Collection<?> c)
Iboolean retainAll(Collection<?> c)
Iint size()
IObject[] toArray()
I<T> T[] toArray(T[] a)
Bertrand Estellon (DIL – Aix-Marseille) Programmation Orient´ee Objet 26 avril 2012 181 / 379
Java Cours 6
Les listes
Les m´ethodes de l’interface List<V>:
Ivoid add(int index, V element)
Iboolean addAll(int index, Collection<? extends V> c)
IV get(int index)
Iint indexOf(Object o)
Iint lastIndexOf(Object o)
IV remove(int index)
Iint indexOf(Object o)
IV set(int index, V element)
IList<V> subList(int fromIndex, int toIndex)
I+ les m´ethodes de Collection<V>
Bertrand Estellon (DIL – Aix-Marseille) Programmation Orient´ee Objet 26 avril 2012 182 / 379
Java Cours 6
Les listes
Quelques impl´ementations de l’interface List<V>:
IArrayList<V>: Tableau dont la taille varie dynamiquement.
ILinkedList<V>: Liste chaˆın´ee.
IVector<V>: Comme ArrayList mais synchronis´e.
IStack<V>: Pile (mais une impl´ementation de Deque est pr´ef´erable).
Bertrand Estellon (DIL – Aix-Marseille) Programmation Orient´ee Objet 26 avril 2012 183 / 379
Java Cours 6
Les maps
Les m´ethodes de l’interface Map<K,V>:
Iclear()
Iboolean containsKey(Object key)
Iboolean containsValue(Object value)
ISet<Map.Entry<K,V>> entrySet()
IV get(Object key)
Iboolean isEmpty()
ISet<K> keySet()
IV put(K key, V value)
Ivoid putAll(Map<? extends K,? extends V> m)
IV remove(Object key)
Iint size()
ICollection<V> values()
Bertrand Estellon (DIL – Aix-Marseille) Programmation Orient´ee Objet 26 avril 2012 184 / 379
Java Cours 6
Les maps
Quelques impl´ementations de l’interface Map<K,V>:
IHashMap : table de hachage
ILinkedHashMap : table de hachage + listes chain´ees
ITreeMap : arbre rouge-noir (Les ´el´ements doivent ˆetre comparables)
Table de hachage :
John Smith
Lisa Smith
Sam Doe
872
873
998
999
0
1Lisa Smith +1-555-8976
John Smith +1-555-1234
Sam Doe +1-555-5030
Calcul de l’indice : int indice = key.hashcode() & (taille - 1) ;
Calcul du hashcode : int hashcode() (m´ethode de la classe Object)
Bertrand Estellon (DIL – Aix-Marseille) Programmation Orient´ee Objet 26 avril 2012 185 / 379
Java Cours 6
Les maps
Quelques impl´ementations de l’interface Map<K,V>:
IHashMap : table de hachage
ILinkedHashMap : table de hachage + listes chain´ees
ITreeMap : arbre rouge-noir (Les ´el´ements doivent ˆetre comparables)
Arbre rouge-noir :
Complexit´e
Rechercher O(log n)
Ins´erer O(log n)
Supprimer O(log n)
Bertrand Estellon (DIL – Aix-Marseille) Programmation Orient´ee Objet 26 avril 2012 185 / 379
Java Cours 6
Les maps
Quelques impl´ementations de l’interface Map<K,V>:
IHashMap : table de hachage
ILinkedHashMap : table de hachage + listes chain´ees
ITreeMap : arbre rouge-noir (Les ´el´ements doivent ˆetre comparables)
Arbre rouge-noir et interface Comparator :
Map<Carte, Integer>m = new TreeMap<Carte, Integer>(
new Comparator<Carte>() {
public int compare(Carte o1, Carte o2) {
...
}
}
) ;
Bertrand Estellon (DIL – Aix-Marseille) Programmation Orient´ee Objet 26 avril 2012 185 / 379
Java Cours 6
Les ensembles
Set<V>ne contient que les m´ethodes de Collection<V>
Quelques impl´ementations de l’interface Set<V>:
IHashSet<V>: avec une HashMap.
ILinkedHashSet<V>: avec une LinkedHashMap.
ITreeSet<V>: avec une TreeMap.
Bertrand Estellon (DIL – Aix-Marseille) Programmation Orient´ee Objet 26 avril 2012 186 / 379
Java Cours 6
Les files
Les m´ethodes de l’interface Queue<V>:
IV element()
Iboolean offer(V e)
IV peek()
IV poll()
IV remove()
I+ les m´ethodes de Collection<V>
Bertrand Estellon (DIL – Aix-Marseille) Programmation Orient´ee Objet 26 avril 2012 187 / 379
Java Cours 6
Les files `a deux bouts (Deque)
Les m´ethodes de l’interface Deque<V>:
Premier ´el´ement Dernier ´el´ement
avec exception avec null avec exception avec null
Ins´erer addFirst(e) offerFirst(e) addLast(e) offerLast(e)
Supprimer removeFirst() pollFirst() removeLast() pollLast()
Consulter getFirst() peekFirst() getLast() peekLast()
Correspondance avec les m´ethodes de Queue<V>:
Dans Queue Dans Deque
add(e) addLast(e)
offer(e) offerLast(e)
remove() emoveFirst()
poll() pollFirst()
element() getFirst()
peek() peekFirst()
Bertrand Estellon (DIL – Aix-Marseille) Programmation Orient´ee Objet 26 avril 2012 188 / 379
Java Cours 6
Les files `a deux bouts (Deque)
Quelques impl´ementations de l’interface Deque<V>:
IArrayDeque<V>: avec un tableau dynamique.
ILinkedList<V>: avec une liste chaˆın´ee.
Bertrand Estellon (DIL – Aix-Marseille) Programmation Orient´ee Objet 26 avril 2012 189 / 379
Java Cours 6
Les iterateurs
L’interface Collection<V>´etend Iterable<V>:
C o l l e c t i o n <Integer>l = new A r r a y L i s t <Integer >();
l . add ( 1 ) ; l . add ( 2 ) ; l . add ( 1 ) ;
f o r ( I n t e g e r i : l )
System . out . p r i n t ( i+ ” ) ;
System . out . p r i n t l n ( ) ;
Sortie : 121
C o l l e c t i o n <Integer>l = new HashSet<Integer >();
l . add ( 1 ) ; l . add ( 2 ) ; l . add ( 1 ) ;
f o r ( I n t e g e r i : l )
System . out . p r i n t ( i+ ” ) ;
System . out . p r i n t l n ( ) ;
Sortie : 1 2
Bertrand Estellon (DIL – Aix-Marseille) Programmation Orient´ee Objet 26 avril 2012 190 / 379
Java Cours 6
Les iterateurs
Exemple avec une HashMap :
Map<S t r i n g , I n t e g e r >m = new HashMap<S t r i n g , I n t e g e r >();
m. pu t ( t o to ” , 4 ) ;
m. pu t ( aaa , 3 ) ;
m. pu t ( ”bb ” , 2 ) ;
f o r ( I n t e g e r i : m. v a l u e s ( ) )
System . out . p r i n t ( i+ ” ) ;
System . out . p r i n t l n ( ) ;
f o r ( S t r i n g k : m. k eyS et ( ) )
System . out . p r i n t ( k+ ) ;
System . out . p r i n t l n ( ) ;
Sortie :
342
aaa toto bb
Bertrand Estellon (DIL – Aix-Marseille) Programmation Orient´ee Objet 26 avril 2012 191 / 379
Java Cours 6
Exceptions
ITout programme peut ˆetre confront´e `a une condition exceptionnelle
(ou exception) durant son ex´ecution.
IUne exception est une situation qui empˆeche l’ex´ecution normale du
programme (elle n’est pas un bug).
Exemple :
IUn fichier n´ecessaire `a l’ex´ecution du programme n’existe pas.
IDivision par z´ero
ID´ebordement dans un tableau
Ietc.
Bertrand Estellon (DIL – Aix-Marseille) Programmation Orient´ee Objet 26 avril 2012 192 / 379
Java Cours 6
M´ecanisme de gestion des exceptions
IJava propose un m´ecanisme de gestion des exceptions afin de
distinguer l’ex´ecution normale du traitement des erreurs et faciliter la
gestion des exceptions.
IEn Java, une exception est une instance d’une classe qui ´etend la
classe Exception
IPour lever (d´eclencher) une exception, on utilise le mot-cl´e throw :
i f ( pro blem ) throw new M yE xc ep ti o n ( ” e r r e u r d e t y p e 2 ” ) ;
IPour capturer une exception, on utilise la syntaxe try/catch :
try {
//Probl`eme possible
}catch (MyException e) {
TraiterException(e);
}
Bertrand Estellon (DIL – Aix-Marseille) Programmation Orient´ee Objet 26 avril 2012 193 / 379
Java Cours 6
D´efinir son propre type d’exception
Il suffit d’´etendre la classe Exception (ou une qui ´etend Exception) :
p u b l i c c l a s s MyException e x t e n d s E x c e p t i o n {
i n t number ;
p u b l i c MyException ( i n t number) {
t h i s . number = number ;
}
p u b l i c S t r i n g getM es sa ge ( ) {
return E r r e u r numero +number ;
}
}
Convention de nommage :quelquechoseException
Bertrand Estellon (DIL – Aix-Marseille) Programmation Orient´ee Objet 26 avril 2012 194 / 379
Java Cours 6
La syntaxe try/catch
p u bl i c s t a t i c void test(i n t i ) {
System . out . p r i n t ( A ” ) ;
try {
System . out . p r i n t l n ( B ) ;
i f ( i >12) throw new MyException ( i ) ;
System . out . p r i n t ( C ) ;
}catch ( MyException e){
System . out . p r i n t l n ( e ) ;
}
System . out . p r i n t l n ( D ) ;
}
test(11) :
A B
C D
test(13) :
A B
MyException: Erreur num´ero 13
D
Bertrand Estellon (DIL – Aix-Marseille) Programmation Orient´ee Objet 26 avril 2012 195 / 379
1 / 8 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !