Université de la Méditerranée Faculté des Sciences de

Universit´e de la M´editerran´ee
Facult´e des Sciences de Luminy
Le poly de Java
Henri Garreta
D´epartement d’Informatique - LIF
TABLE DES MATI `
ERES TABLE DES MATI `
ERES
Table des mati`eres
Introduction 5
UtilisationeectivedeJava .......................................... 5
1 Consid´erations lexicales 6
1.1 Jeudecaract`eres............................................. 6
1.2 Commentaires............................................... 6
1.3 Identicateurs............................................... 6
1.4 Constanteslitt´erales ........................................... 7
2 Types 8
2.1 Lestypesdedonn´eesdeJava ...................................... 8
2.2 Conversions entre types primitifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.3 R´ef´erences................................................. 9
2.3.1 S´emantique des valeurs et emantique des ef´erences . . . . . . . . . . . . . . . . . . . . . 9
2.3.2 R´ef´erencesurrien” ....................................... 10
2.3.3 Cas des param`etres des ethodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.4 Tableaux ................................................. 10
2.4.1 D´eclaration et initialisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.4.2 Acc`esaux´el´ements........................................ 11
2.4.3 Tableaux `a plusieurs indices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.4.4 Tableaux initialis´es et tableaux anonymes. . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.5 Conversions entre types tableaux ou classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.6 Copieetcomparaisondesobjets .................................... 14
2.6.1 Copie ............................................... 14
2.6.2 D´efinir la m´ethode clone .................................... 15
2.6.3 Comparaison ........................................... 17
2.7 Chaˆınesdecaract`eres .......................................... 18
2.7.1 Les classes String et StringBuffer .............................. 18
2.7.2 Copie et comparaison des chaˆınes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3 Expressions et instructions 20
3.1 Rupture´etiquet´ee ............................................ 20
4 Classes, paquets, fichiers et r´epertoires 21
4.1 Paquetsetclasses............................................. 21
4.1.1 Les noms des paquets et l’instruction package ........................ 21
4.1.2 Les noms des classes et l’instruction import .......................... 21
4.2 Classes,chiersetr´epertoires ...................................... 22
4.2.1 Classes publiques et non publiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.2.2 Point d’entr´ee d’un programme. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.2.3 O`u placer les fichiers des classes ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
5 Les objets 24
5.1 Introduction : les langages orient´es objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
5.2 Classes,variablesetm´ethodes...................................... 24
5.2.1 D´eclaration des classes et des objets, instanciation des classes . . . . . . . . . . . . . . . . 24
5.2.2 Instances et membres d’instance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
5.2.3 Membres de classe (membres statiques) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
5.3 Surchargedesnoms ........................................... 27
5.4 Contrˆoledelaccessibilit´e ........................................ 28
5.4.1 Membres priv´es, prot´eg´es, publics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.4.2 Lencapsulation ........................................ 28
5.5 Initialisationdesobjets ......................................... 29
5.5.1 Constructeurs........................................... 30
5.5.2 Membres constants (final)................................... 31
5.5.3 Blocs d’initialisation statiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5.5.4 Destructiondesobjets...................................... 32
5.6 Classesinternesetanonymes ...................................... 33
5.6.1 Classesinternes.......................................... 33
5.6.2 Classesanonymes......................................... 34
2c
°H. Garreta, 2004
TABLE DES MATI `
ERES TABLE DES MATI `
ERES
6 H´eritage 35
6.1 Sous-classesetsuper-classes....................................... 35
6.1.1 D´enitiondesous-classe..................................... 35
6.1.2 Larbredetouteslesclasses ................................. 35
6.2 Red´enitiondesm´ethodes........................................ 36
6.2.1 Surchargeetmasquage...................................... 36
6.2.2 Red´enitiondesm´ethodes.................................... 36
6.3 H´eritageetconstructeurs ........................................ 37
6.4 Lepolymorphisme........................................... 38
6.4.1 G´en´eralisation et particularisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
6.4.2 Les ethodes sont “virtuelles” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
6.4.3 M´ethodesetclassesnales.................................... 41
6.5 Abstraction............................................... 42
6.5.1 M´ethodesabstraites ....................................... 42
6.5.2 Classesabstraites......................................... 43
6.5.3 Interfaces ............................................. 43
7 Exceptions 46
7.1 Interceptiondesexceptions ....................................... 46
7.2 Lancementdesexceptions ........................................ 47
7.2.1 Hi´erarchiedesexceptions .................................... 47
7.2.2 D´eclaration des exceptions lanc´ees par une m´ethode . . . . . . . . . . . . . . . . . . . . . 47
8 Quelques classes utiles 49
8.1 Nombres et outils math´ematiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
8.1.1 Classes-enveloppes des types primitifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
8.1.2 Fonctionsmath´ematiques .................................... 50
8.1.3 Nombres en pr´ecision infinie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
8.2 Collectionsetalgorithmes ........................................ 52
8.2.1 Collections et tables associatives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
8.2.2 It´erateurs ............................................. 56
8.2.3 Quelques ethodes des collections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
8.2.4 Algorithmes pour les collections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
8.2.5 Algorithmes pour les tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
8.3 R´eflexion et manipulation des types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
8.4 Entr´ees-sorties .............................................. 62
8.4.1 Lesclassesdeux ........................................ 62
8.4.2 Exemples ............................................. 66
8.4.3 Analyselexicale.......................................... 68
8.4.4 Miseenformededonn´ees .................................... 69
8.4.5 Repr´esentationdesdates .................................... 73
8.4.6 Las´erialisation.......................................... 74
9 Threads 76
9.1 Cr´eation et cycle de vie d’un thread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
9.1.1 D´eclaration, cr´eation et lancement de threads . . . . . . . . . . . . . . . . . . . . . . . . . 76
9.1.2 Terminaisondunthread..................................... 78
9.2 Synchronisation.............................................. 78
9.2.1 Sectionscritiques......................................... 79
9.2.2 M´ethodessynchronis´ees ..................................... 80
10 Interfaces graphiques 82
10.1 AWT +Swing =JFC .......................................... 82
10.2Lehautdelahi´erarchie ......................................... 83
10.3 Le point de d´epart : JFrame et une application minimale. . . . . . . . . . . . . . . . . . . . . . . 85
10.4 Le thread degestiondes´ev´enements .................................. 87
10.5 ´
Ev´enements................................................ 88
10.5.1 Exemple : etecter les clics de la souris. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
10.5.2 Adaptateurs et classes anonymes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
10.5.3 Principaux types d’´ev´enements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
10.5.4 Exemple : fermeture “prudente” du cadre principal . . . . . . . . . . . . . . . . . . . . . . 96
c
°H. Garreta, 2004 3
TABLE DES MATI `
ERES TABLE DES MATI `
ERES
10.6Peindreetrepeindre ........................................... 97
10.6.1 La m´ethode paint ........................................ 97
10.6.2 Les classes Graphics et Graphics2D .............................. 98
10.6.3 Exemple : la mauvaise mani`erededessiner ..........................100
10.6.4 Exemple : la bonne mani`erededessiner.............................101
10.7Gestionnairesdedisposition.......................................102
10.7.1 Exemple : un panneau muni d’un GridBagLayout ......................105
10.7.2 Bordures .............................................107
10.8Composantspr´ed´enis..........................................107
10.8.1 Exemple : mise en place et emploi de menus . . . . . . . . . . . . . . . . . . . . . . . . . . 108
10.8.2 Exemple : construire une boite de dialogue . . . . . . . . . . . . . . . . . . . . . . . . . . 110
10.8.3 Exemple : saisie de donn´ees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
10.8.4 Exemple : choisir un fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
10.8.5 Exemple : une table pour afficher des donn´ees . . . . . . . . . . . . . . . . . . . . . . . . . 116
10.8.6 Exemple : election et modification dans une table . . . . . . . . . . . . . . . . . . . . . . 118
10.9 Le mod`ele MVC (Mod`ele-Vue-Controleur) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
10.9.1 Exemple : les vues arborescentes (JTree) ...........................119
10.10Images...................................................125
10.10.1 Exemple : utiliser des icˆones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
10.10.2 Exemple : charger une image depuis un fichier . . . . . . . . . . . . . . . . . . . . . . . . 127
10.10.3 Exemple : construire une image pixel par pixel . . . . . . . . . . . . . . . . . . . . . . . . 128
11 Nouveaut´es des versions r´ecentes de Java 130
11.1Version1.4 ................................................130
11.1.1 assert ...............................................130
11.1.2 Expressionsr´eguli`eres ......................................131
11.2Version1.5 ................................................132
11.2.1 Importation de membres statiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
11.2.2 M´ethodes avec liste d’arguments variable . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
11.2.3 Boucle for am´elior´ee.......................................134
11.2.4 Emballage et eballage automatiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
11.2.5 Types´enum´er´es .........................................135
11.2.6 Annotations............................................136
11.3G´en´ericit´e.................................................136
11.3.1 Classes et types param´etr´es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
11.3.2 Typesbruts............................................138
11.3.3 Les types param´etr´es ne sont pas covariants . . . . . . . . . . . . . . . . . . . . . . . . . . 138
11.3.4 M´ethodesg´en´eriques.......................................140
Index 140
Ce poly est en chantier (c’est son ´etat normal)
Ceci est la version du 27 avril 2004
4c
°H. Garreta, 2004
TABLE DES MATI `
ERES TABLE DES MATI `
ERES
Introduction
Ce polycopi´e est le support de plusieurs cours de Java donn´es `a la Facult´e des Sciences de Luminy. Tr`es
succinct, il ne remplace pas la consultation d’ouvrages plus approfondis et illustr´es, parmi lesquels :
pour d´ebuter : deuxi`eme lecture :
Patrick Niemeyer & Jonathan Knudsen Ian Darwin
Introduction `a Java, 2 eme ´edition Java en action
O’Reilly, 2002 O’Reilly, 2002
Ces notes s’adressent `a des lecteurs connaissant le langage C. De nombreux ´el´ements fondamentaux de
Java, comme les expressions, les instructions, l’appel des fonctions, etc., ne sont pas repris ici, tout simplement
parce qu’ils sont r´ealis´es en Java comme en C. En outre, ces notes ne sont pas progressives ; chaque notion est
introduite comme si les autres concepts du langage avaient d´ej`a ´et´e expliqu´es. Cela rend la lecture initiale de
ce document plus ´eprouvante, mais la consultation ult´erieure plus efficace.
Ces notes concernent la version du langage Java appel´ee Plate-forme Java 2 , c’est-`a-dire (au moment
o`u ceci est ´ecrit) les versions allant jusqu’`a la livraison 1.4 du J2SDK (Java 2 Standard Development Kit), le
kit de d´eveloppement qu’on peut t´el´echarger librement depuis le site de Sun Microsystems, la maison m`ere de
Java, `a l’adresse http://java.sun.com/j2se/
Un document est rigoureusement indispensable pour programmer en Java : la documentation en ligne de
l’API (Interface du Programmeur d’Applications). C’est un fichier hypertexte qui contient tout ce qu’il faut
savoir `a propos de tous les paquets, interfaces, classes, variables et m´ethodes de la plate-forme Java. On peut
le consulter en ligne et le t´el´echarger `a l’adresse http://java.sun.com/j2se/1.4/docs/api/
Enfin, un excellent document pour apprendre Java est le tutoriel officiel, qu’on peut consulter en ligne ou
t´el´echarger `a l’adresse http://java.sun.com/docs/books/tutorial/
Utilisation effective de Java
Nous supposons que vous travaillez sur un syst`eme Windows, Linux ou Solaris. Certains des produits men-
tionn´es ici ont ´egalement des versions pour des syst`emes plus confidentiels.
Pour pratiquer le langage Java, c’est-`a-dire pour saisir, compiler et ex´ecuter vos programmes, il vous faut un
environnement de d´eveloppement, comportant un compilateur, une machine Java, des biblioth`eques – au moins
la biblioth`eque standard. Vous obtenez tout cela en installant J2SDK que vous pouvez t´el´echarger librement
depuis le site de Sun, `a l’adresse http://java.sun.com/j2se/
Vous pouvez utiliser n’importe quel ´editeur de textes pour saisir vos programmes. Supposons que vous ayez
tap´e le texte de la c´el`ebre classe Bonjour :
public class Bonjour {
public static void main(String[] args) {
System.out.println("Bonjour `a tous!");
}
}
Le fichier dans lequel vous avez enregistr´e ce texte doit s’appeler Bonjour.java. Vous en obtenez la compi-
lation en tapant la commande
javac Bonjour.java
Si le programme est correct, la compilation se d´eroule sans produire aucun message. Vous lancez alors l’ex´ecution
de votre programme (pour obtenir l’affichage du texte Bonjour `a tous !) en tapant la commande
java Bonjour
Notez bien qu’`a la commande javac on donne un nom de fichier (Bonjour.java), tandis qu’`a la commande
java on doit donner un nom de classe (Bonjour).
Quel que soit le syst`eme d’exploitation que vous utilisez, vous pouvez vous constituer un environnement
de travail plus agr´eable en installant J2SDK puis Jext, un petit ´editeur de textes oriene Java que vous pouvez
vous procurer `a l’adresse http://www.jext.org/
Vous obtenez un confort incomparablement sup´erieur si, apr`es J2SDK, vous installez Eclipse, un puissant
IDE (environnement de eveloppement int´egr´e) avec de nombreuses fonctionnalit´es pour aider `a la program-
mation en Java, telles que la compl´etion automatique des expressions tap´ees, la compilation au fur et `a mesure
de la frappe, la suggestion de la mani`ere de corriger les erreurs, etc. Vous pouvez t´el´echarger Eclipse `a l’adresse
http://www.eclipse.org/
c
°H. Garreta, 2004 5
1 / 145 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 !