Universit´e d’Aix-Marseille Facult´e des Sciences
Le langage Java
Master CCI, I, BBSG, IMSA, etc.
Henri Garreta
D´epartement d’Informatique & LIF
TABLE DES MATI `ERES TABLE DES MATI `ERES
Le langage Java
Henri Garreta
Universit´ e d’Aix-Marseille, Facult´ e des Sciences, Luminy
Table des mati` eres
1 Introduction 7
1.1 Pratique effective de Java . . . 7
2 Consid´erations lexicales 9 2.1 Jeu de caract`eres . . . 9
2.2 Commentaires . . . 9
2.3 Identificateurs . . . 9
2.4 Constantes litt´erales . . . 10
3 Types 11 3.1 Les types de donn´ees de Java . . . 11
3.2 Conversions entre types primitifs . . . 11
3.3 R´ef´erences . . . 12
3.3.1 S´emantique des valeurs et s´emantique des r´ef´erences . . . 12
3.3.2 R´ef´erence “sur rien” . . . 13
3.3.3 Cas des param`etres des m´ethodes . . . 13
3.4 Tableaux . . . 13
3.4.1 D´eclaration et initialisation . . . 13
3.4.2 Acc`es aux ´el´ements . . . 14
3.4.3 Tableaux `a plusieurs indices . . . 14
3.4.4 Tableaux initialis´es et tableaux anonymes. . . 15
3.5 Conversions entre types tableaux ou classes . . . 16
3.6 Copie et comparaison des objets . . . 17
3.6.1 Copie . . . 18
3.6.2 D´efinir la m´ethodeclone . . . 19
3.6.3 Comparaison . . . 21
3.7 Chaˆınes de caract`eres . . . 22
3.7.1 Les classesStringet StringBuffer . . . 22
3.7.2 Copie et comparaison des chaˆınes . . . 23
4 Expressions et instructions 24 4.1 Rupture ´etiquet´ee . . . 24
5 Classes, paquets, fichiers et r´epertoires 25
5.1 Paquets et classes . . . 25
5.1.1 Les noms des paquets et l’instructionpackage . . . 25
5.1.2 Les noms des classes et l’instructionimport . . . 25
5.2 Classes, fichiers et r´epertoires . . . 26
5.2.1 Classes publiques et non publiques . . . 26
5.2.2 Point d’entr´ee d’un programme. . . 26
5.2.3 O`u placer les fichiers des classes ? . . . 27
5.2.4 Comment distribuer une application Java ? . . . 28
6 Les objets 29 6.1 ♥Introduction : les langages orient´es objets . . . 29
6.2 Classes, variables et m´ethodes . . . 29
6.2.1 D´eclaration des classes et des objets, instanciation des classes . . . 29
6.2.2 Instances et membres d’instance . . . 30
6.2.3 Membres de classe (membres statiques) . . . 31
6.3 Surcharge des noms . . . 33
6.4 Contrˆole de l’accessibilit´e . . . 34
6.4.1 Membres priv´es, prot´eg´es, publics . . . 34
6.4.2 ♥L’encapsulation . . . 34
6.5 Initialisation des objets . . . 35
6.5.1 Constructeurs . . . 36
6.5.2 Membres constants (final) . . . 37
6.5.3 Blocs d’initialisation statiques . . . 38
6.5.4 Destruction des objets . . . 38
6.6 Classes internes et anonymes . . . 39
6.6.1 Classes internes . . . 39
6.6.2 Classes anonymes . . . 40
7 H´eritage 41 7.1 ♥Introduction : raffiner, abstraire . . . 41
7.2 Sous-classes et super-classes . . . 42
7.2.1 D´efinition de sous-classe . . . 42
7.2.2 ♥L’arbre de toutes les classes . . . 43
7.3 Red´efinition des m´ethodes . . . 43
7.3.1 Surcharge et masquage . . . 43
7.3.2 Red´efinition des m´ethodes . . . 44
7.4 H´eritage et constructeurs . . . 45
7.5 Membres prot´eg´es . . . 46
7.6 ♥Le polymorphisme . . . 47
7.6.1 G´en´eralisation et particularisation . . . 47
7.6.2 Les m´ethodes red´efinies sont “virtuelles” . . . 49
7.6.3 M´ethodes et classes finales . . . 51
7.7 ♥Abstraction . . . 52
7.7.1 M´ethodes abstraites . . . 52
7.7.2 Classes abstraites . . . 53
7.7.3 Interfaces . . . 53
8 Exceptions 57 8.1 Interception des exceptions . . . 57
8.2 Lancement des exceptions . . . 58
8.2.1 Hi´erarchie des exceptions . . . 58
8.2.2 D´eclaration des exceptions lanc´ees par une m´ethode . . . 58
8.3 Assert . . . 60
9 Quelques classes utiles 62 9.1 Nombres et outils math´ematiques . . . 62
9.1.1 Classes-enveloppes des types primitifs . . . 62
9.1.2 Fonctions math´ematiques . . . 63
9.1.3 Nombres en pr´ecision infinie . . . 64
9.2 Collections et algorithmes . . . 65
TABLE DES MATI `ERES TABLE DES MATI `ERES
9.2.1 Collections et tables associatives . . . 65
9.2.2 It´erateurs . . . 69
9.2.3 Quelques m´ethodes des collections . . . 70
9.2.4 Algorithmes pour les collections . . . 71
9.2.5 Algorithmes pour les tableaux . . . 73
9.3 R´eflexion et manipulation des types . . . 74
9.4 Entr´ees-sorties . . . 76
9.4.1 Les classes de flux . . . 76
9.4.2 Exemples . . . 79
9.4.3 Analyse lexicale . . . 82
9.4.4 Mise en forme de donn´ees . . . 84
9.4.5 Repr´esentation des dates . . . 87
9.4.6 La s´erialisation . . . 88
9.5 Expressions r´eguli`eres . . . 90
9.5.1 Principe . . . 90
9.5.2 Exemples . . . 90
10 Threads 94 10.1 Cr´eation et cycle de vie d’un thread . . . 94
10.1.1 D´eclaration, cr´eation et lancement de threads . . . 94
10.1.2 Terminaison d’un thread . . . 96
10.2 Synchronisation . . . 96
10.2.1 Sections critiques . . . 97
10.2.2 M´ethodes synchronis´ees . . . 98
11 Interfaces graphiques 100 11.1 JFC =AWT +Swing . . . 100
11.2 Le haut de la hi´erarchie . . . 101
11.3 Le point de d´epart :JFrameet une application minimale. . . 103
11.4 Lethread de gestion des ´ev´enements . . . 105
11.5 ´Ev´enements . . . 106
11.5.1 Exemple : d´etecter les clics de la souris. . . 107
11.5.2 Adaptateurs et classes anonymes . . . 109
11.5.3 Principaux types d’´ev´enements . . . 110
11.5.4 Exemple : fermeture “prudente” du cadre principal . . . 114
11.6 Peindre et repeindre . . . 115
11.6.1 La m´ethodepaint . . . 115
11.6.2 Les classesGraphicsetGraphics2D . . . 116
11.6.3 Exemple : lamauvaise mani`ere de dessiner . . . 118
11.6.4 Exemple : labonne mani`ere de dessiner. . . 119
11.7 Gestionnaires de disposition . . . 120
11.7.1 FlowLayout . . . 121
11.7.2 BorderLayout . . . 122
11.7.3 GridLayout . . . 122
11.7.4 GridBagLayout . . . 123
11.7.5 Exemple : un panneau muni d’unGridBagLayout . . . 123
11.7.6 Exemple : imbrication de gestionnaires de disposition . . . 125
11.7.7 Bordures . . . 125
11.8 Composants pr´ed´efinis . . . 125
11.8.1 Exemple : mise en place et emploi de menus . . . 126
11.8.2 Exemple : construire une boite de dialogue . . . 128
11.8.3 Exemple : saisie de donn´ees . . . 131
11.8.4 Exemple : choisir un fichier . . . 133
11.8.5 Exemple : une table pour afficher des donn´ees . . . 134
11.8.6 Exemple : s´election et modification dans une table . . . 136
11.9 Le mod`ele MVC (Mod`ele-Vue-Controleur) . . . 137
11.9.1 Exemple : les vues arborescentes (JTree) . . . 138
11.10Images . . . 143
11.10.1 Exemple : utiliser des icˆones . . . 144
11.10.2 Exemple : charger une image depuis un fichier . . . 145
11.10.3 Exemple : construire une image pixel par pixel . . . 147