Programmer en Java - institutdelyl.mr Delannoy.pdf · Programmer en Java Programmer en Java...

816
Programmer en Java CLAUDE DELANNOY E Y R O L L E S Best f o 5 e édition Java 5 et 6

Transcript of Programmer en Java - institutdelyl.mr Delannoy.pdf · Programmer en Java Programmer en Java...

  • Programmeren Java

    Programmer en Java

    CLAUDE DELANNOY

    E Y R O L L E S

    Bestf o

    E Y R O L L E S

    Best f o

    Le best-seller de Claude Delannoy,pour une parfaite matrise du langage JavaRdition au format semi-poche de la cinquime dition du classiqueProgrammer en Java de Claude Delannoy, qui a guid plus de35000 tudiants et professionnels dans lapprentissage du langage Java.

    Louvrage vous conduira une parfaite matrise de la programmationoriente objet et des possibilits les plus avances de Java dans sesversions 5 et 6. Aprs avoir assimil la syntaxe de base du langage,vous dcouvrirez toutes les subtilits de la programmation objet en Java,avant daborder la programmation dapplications graphiques laide dela bibliothque Swing et le dveloppement Web avec les servlets etles JSP.

    Chaque notion nouvelle et chaque fonction du langage est illustre deprogrammes complets dont le code source est fourni sur le sitewww.editions-eyrolles.com. Cette cinquime dition met tout particuli-rement laccent sur les nouveauts des versions 5 et 6 de Java SE : pro-grammation gnrique, types numrs, annotations, etc.

    Au sommaire

    Prsentation du langage Un premier exemple en Java Instructions de base Rgles dcriture du code Types primitifs en Java Initialisation de variableset constantes Le mot cl final Oprateurs et expressions Instructions decontrle : if, switch, do while, while, for, for each Classes et objets Constructeurs Ramasse-miettes Autorfrence this Champs et mthodesde classes Surdfinition de mthodes Objets membres et classes internes Paquetages Tableaux Arguments variables en nombre Hritage etpolymorphisme Redfinition de mthodes Classes et mthodes finales Classes abstraites Interfaces Classes enveloppes Classes anonymes Chanes de caractres et types numrs Gestion des exceptions Gestiondes threads Bases de la programmation vnementielle et graphique(fentres, vnements) Les contrles usuels Botes de dialogue Menus,actions et barres doutils vnements de bas niveau (souris, clavier) Ges-tionnaires de mise en forme Textes et graphiques, fontes, couleurs, images Applets Java Flux et fichiers La programmation gnrique Collections(listes, vecteurs dynamiques, ensembles, queues) Algorithmes (recherchede minimum, tri, mlanges) Tables associatives (HashMap, TreeMap) Programmation Java ct serveur : servlets et JSP Lintrospection et lesannotations. Annexes. Droits daccs aux classes, interfaces, membres etclasses internes La classe Clavier Fonctions et constantes mathmatiques Exceptions standards Les composants graphiques et leurs mthodes vnements et couteurs Collections (depuis JSE 5, avant JSE 5).

    Claude DelannoyIngnieur informaticien au CNRS,Claude Delannoy possde unegrande pratique de la formationcontinue et de lenseignementsuprieur. Rputs pour la qualitde leur dmarche pdagogique,ses ouvrages sur les langages etla programmation totalisent plusde 250 000 exemplaires vendus.

    Cod

    e d

    iteur

    : G

    12326

    ISBN

    : 978-2

    -212-1

    2326-5

    19

    978

    2212

    1232

    65Con

    cept

    ion

    Nor

    d Com

    po

    5e ditionJava 5 et 6

    C.

    DE

    LA

    NN

    OY

    Best

    fo

    Java

    5e

    d

    itio

    nJa

    va 5

    et

    6

    12326_ProgJava_BestOF_5e 4/03/08 10:16 Page 1

  • ProgrammerenJava

    PDT_ProgJava_BestOf 26/02/08 11:39 Page 1

  • AUX EDITIONS EYROLLES

    Du mme auteur

    C. Delannoy. Exercices en Java. N11989, 2e dition, 2006, 340 pages.

    C. Delannoy. Apprendre le C++. N12135, 2007, 760 pages.

    C. Delannoy. C++ pour les programmeurs C. N12231, 2007, 620 pages.

    C. Delannoy. Exercices en langage C++. N12201, 3e dition 2007, 336 pages.

    Autres ouvrages sur Java/JEE

    e. Puybaret. Cahier du programmeur Java 1.4 et 5.0. N11916, 3e dition, 2006, 380 pages.

    e. Puybaret. Cahier du programmeur Swing. N12019, 2007, 500 pages.

    a. Goncalves. Cahier du programmeur Java EE 5. EJB 3.0, JPA, JSP, JSF, Web Services, JMS, GlassFish, Ant. N12038, 2007, 340 pages.

    K. Djaafar. Dveloppement JEE 5 avec Eclipse Europa. N12061, 2008, 390 pages.

    A. Patricio. Java Persistence et Hibernate. N12259, 2008, 390 pages.

    j. Dubois, j.-P. retaill, t. temPlier. Spring par la pratique. Mieux dvelopper ses applications Java/J2EE avec Spring, Hibernate, Struts, Ajax... N11710, 2006, 518 pages.

    R. fleury. Cahier du programmeur Java/XML. Mthodes et frameworks : Ant, Junit, Eclipse, Struts-Stxx, Cocoon, Axis, Xerces, Xalan, JDom, XIndiceN11316, 2004, 228 pages.

    J. Weaver, K. muKhar, j. crume. J2EE 1.4. N11484, 2004, 662 pages.

    PDT-BEST-OF JAVA-12326.indd 1 26/02/08 18:43:22

  • ProgrammerenJava

    CLAUDE DELANNOY

    E Y R O L L E S

    Bestf o

    5e ditionJava 5 et 6

    PDT_ProgJava_BestOf 26/02/08 11:39 Page 2

  • La 5e dition de cet ouvrage a fait lobjet dun reconditionnement loccasion de son 2e tirage (format semi-poche et nouvelle couverture).

    Le texte de louvrage reste inchang par rapport au tirage prcdent.

    DITIONS EYROLLES61, bd Saint-Germain75240 Paris Cedex 05

    www.editions-eyrolles.com

    Le code de la proprit intellectuelle du 1er juillet 1992 interdit en effet expressment la photocopie usage collectif sans autorisation des ayants droit. Or, cette pratique sest gnralise notamment dans les tablissements denseignement, provoquant une baisse brutale des achats de livres, au point que la possibilit mme pour les auteurs de crer des uvres nouvelles et de les faire diter correctement est aujourdhui menace.En application de la loi du 11 mars 1957, il est interdit de reproduire intgralement ou partiellement

    le prsent ouvrage, sur quelque support que ce soit, sans autorisation de lditeur ou du Centre Franais dExploitation du Droit de Copie, 20, rue des Grands-Augustins, 75006 Paris. Groupe Eyrolles, 2000-2007 pour le texte de la prsente dition. Groupe Eyrolles, 2008 pour la nouvelle prsentation, ISBN : 978-2-212-12326-5

    PDT-BEST-OF JAVA-12326.indd 2 26/02/08 18:43:22

  • Table des matires

    Avant-propos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

    Chapitre 1 : Prsentation de Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 - Petit historique du langage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

    2 - Java et la programmation oriente objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.1 Les concepts dobjet et dencapsulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.2 Le concept de classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.3 Lhritage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.4 Le polymorphisme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.5 Java est presque un pur langage de P.O.O. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

    3 - Java et la programmation vnementielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93.1 Interface console ou interface graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

    3.1.1 Les programmes interface console (ou en ligne de commande) . . . . . . . . . . . . . . . . . . 93.1.2 Les programmes interface graphique (G.U.I.) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    3.2 Les fentres associes un programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103.2.1 Cas dune interface console . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103.2.2 Cas dune interface graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    3.3 Java et les interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103.3.1 La gestion des interfaces graphiques est intgre dans Java . . . . . . . . . . . . . . . . . . . . 103.3.2 Applications et applets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113.3.3 On peut disposer dune interface console en Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

    4 - Java et la portabilit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

  • Programmer en JavaVI

    Chapitre 2 : Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 - Premier exemple de programme Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

    1.1 Structure gnrale du programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141.2 Contenu du programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

    2 - Excution dun programme Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

    3 - Quelques instructions de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

    4 - Lecture dinformations au clavier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214.1 Prsentation dune classe de lecture au clavier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214.2 Utilisation de cette classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224.3 Boucles et choix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

    5 - Rgles gnrales dcriture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255.1 Les identificateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255.2 Les mots-cls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265.3 Les sparateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275.4 Le format libre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275.5 Les commentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

    5.5.1 Les commentaires usuels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285.5.2 Les commentaires de fin de ligne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

    5.6 Emploi du code Unicode dans le programme source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

    Chapitre 3 : Les types primitifs de Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311 - La notion de type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

    2 - Les types entiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322.1 Reprsentation mmoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

    2.1.1 Cas dun nombre positif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322.1.2 Cas dun nombre ngatif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

    2.2 Les diffrents types dentiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332.3 Notation des constantes entires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

    3 - Les types flottants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343.1 Les diffrents types et leur reprsentation en mmoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343.2 Notation des constantes flottantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

    4 - Le type caractre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374.1 Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374.2 criture des constantes de type caractre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

    5 - Le type boolen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

    6 - Initialisation et constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406.1 Initialisation dune variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406.2 Cas des variables non initialises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416.3 Constantes et expressions constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

    6.3.1 Le mot-cl final . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416.3.2 Notion dexpression constante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426.3.3 Linitialisation dune variable final peut tre diffre . . . . . . . . . . . . . . . . . . . . . . . . . . 42

  • Table des matiresVII

    Chapitre 4 : Les oprateurs et les expressions . . . . . . . . . . . . . . . . . . . . . . . . . 451 - Originalit des notions doprateur et dexpression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

    2 - Les oprateurs arithmtiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472.1 Prsentation des oprateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472.2 Les priorits relatives des oprateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482.3 Comportement en cas dexception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

    2.3.1 Cas des entiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492.3.2 Cas des flottants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

    3 - Les conversions implicites dans les expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503.1 Notion dexpression mixte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503.2 Les conversions dajustement de type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513.3 Les promotions numriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513.4 Consquences des rgles de conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523.5 Le cas du type char . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

    4 - Les oprateurs relationnels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544.1 Prsentation gnrale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544.2 Cas particulier des valeurs Infinity et NaN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564.3 Cas des caractres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564.4 Cas particulier des oprateurs == et != . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

    5 - Les oprateurs logiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575.1 Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575.2 Les oprateurs de court-circuit && et || . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585.3 Priorits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

    6 - Loprateur daffectation usuel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596.1 Restrictions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596.2 Associativit de droite gauche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606.3 Conversions par affectation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

    6.3.1 Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606.3.2 Quelques consquences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 616.3.3 Cas particulier des expressions constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

    7 - Les oprateurs dincrmentation et de dcrmentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637.1 Leur rle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637.2 Leurs priorits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647.3 Leur intrt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

    7.3.1 Allger lcriture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647.3.2 viter des conversions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

    8 - Les oprateurs daffectation largie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658.1 Prsentation gnrale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658.2 Conversions forces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

    9 - Loprateur de cast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 679.1 Prsentation gnrale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 679.2 Conversions autorises par cast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689.3 Rgles exactes des conversions numriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

  • Programmer en JavaVIII

    10 - Les oprateurs de manipulation de bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7110.1 Prsentation gnrale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7110.2 Les oprateurs bit bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7210.3 Les oprateurs de dcalage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7310.4 Exemples dutilisation des oprateurs de bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

    11 - Loprateur conditionnel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

    12 - Rcapitulatif des priorits des oprateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

    Chapitre 5 : Les instructions de contrle de Java . . . . . . . . . . . . . . . . . . . . . . . 771 - Linstruction if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

    1.1 Blocs dinstructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 781.2 Syntaxe de linstruction if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 791.3 Exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 791.4 Imbrication des instructions if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

    2 - Linstruction switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 812.1 Exemples dintroduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

    2.1.1 Premier exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 812.1.2 Ltiquette default . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 832.1.3 Un exemple plus gnral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

    2.2 Syntaxe de linstruction switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

    3 - Linstruction do... while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 863.1 Exemple dintroduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 863.2 Syntaxe de linstruction do... while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

    4 - Linstruction while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 884.1 Exemple dintroduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 894.2 Syntaxe de linstruction while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

    5 - Linstruction for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 905.1 Exemple dintroduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 905.2 Linstruction for en gnral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 915.3 Syntaxe de linstruction for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

    6 - Les instructions de branchement inconditionnel break et continue . . . . . . . . . . . . . . . . . . . . . 956.1 Linstruction break ordinaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 956.2 Linstruction break avec tiquette . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 966.3 Linstruction continue ordinaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 976.4 Linstruction continue avec tiquette . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

    Chapitre 6 : Les classes et les objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1011 - La notion de classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

    1.1 Dfinition dune classe Point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1021.1.1 Dfinition des champs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1031.1.2 Dfinition des mthodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

    1.2 Utilisation de la classe Point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1051.2.1 La dmarche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

  • Table des matiresIX

    1.2.2 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1061.3 Mise en uvre dun programme comportant plusieurs classes . . . . . . . . . . . . . . . . . . . . . . . 107

    1.3.1 Un fichier source par classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1071.3.2 Plusieurs classes dans un mme fichier source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

    2 - La notion de constructeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1102.1 Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1102.2 Exemple de classe comportant un constructeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1102.3 Quelques rgles concernant les constructeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1112.4 Construction et initialisation dun objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113

    2.4.1 Initialisation par dfaut des champs dun objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1132.4.2 Initialisation explicite des champs dun objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1132.4.3 Appel du constructeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1142.4.4 Cas des champs dclars avec lattribut final . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

    3 - lments de conception des classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1173.1 Les notions de contrat et dimplmentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1173.2 Typologie des mthodes dune classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

    4 - Affectation et comparaison dobjets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1194.1 Premier exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1194.2 Second exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1204.3 Initialisation de rfrence et rfrence nulle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1214.4 La notion de clone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1224.5 Comparaison dobjets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

    5 - Le ramasse-miettes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

    6 - Rgles dcriture des mthodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1256.1 Mthodes fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1256.2 Les arguments dune mthode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126

    6.2.1 Arguments muets ou effectifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1266.2.2 Conversion des arguments effectifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126

    6.3 Proprits des variables locales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

    7 - Champs et mthodes de classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1297.1 Champs de classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

    7.1.1 Prsentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1297.1.2 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130

    7.2 Mthodes de classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1327.2.1 Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1327.2.2 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1327.2.3 Autres utilisations des mthodes de classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133

    7.3 Initialisation des champs de classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1347.3.1 Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1347.3.2 Bloc dinitialisation statique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134

    8 - Surdfinition de mthodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1358.1 Exemple introductif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1358.2 En cas dambigut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1368.3 Rgles gnrales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

  • Programmer en JavaX

    8.4 Surdfinition de constructeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1388.5 Surdfinition et droits daccs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140

    9 - change dinformations avec les mthodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1419.1 Java transmet toujours les informations par valeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1419.2 Consquences pour les types primitifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1419.3 Cas des objets transmis en argument . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142

    9.3.1 Lunit dencapsulation est la classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1429.3.2 Consquences de la transmission de la rfrence dun objet . . . . . . . . . . . . . . . . . . . . 144

    9.4 Cas de la valeur de retour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1479.5 Autorfrence : le mot-cl this . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148

    9.5.1 Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1489.5.2 Exemples dutilisation de this . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1489.5.3 Appel dun constructeur au sein dun autre constructeur . . . . . . . . . . . . . . . . . . . . . . . 149

    10 - La rcursivit des mthodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

    11 - Les objets membres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152

    12 - Les classes internes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15512.1 Imbrication de dfinitions de classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15512.2 Lien entre objet interne et objet externe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15612.3 Exemple complet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158

    13 - Les paquetages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16113.1 Attribution dune classe un paquetage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16113.2 Utilisation dune classe dun paquetage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16213.3 Les paquetages standard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16313.4 Paquetages et droits daccs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164

    13.4.1 Droits daccs aux classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16413.4.2 Droits daccs aux membres dune classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164

    Chapitre 7 : Les tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1671 - Dclaration et cration de tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167

    1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1671.2 Dclaration de tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1681.3 Cration dun tableau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

    1.3.1 Cration par loprateur new . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1691.3.2 Utilisation dun initialiseur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

    2 - Utilisation dun tableau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1702.1 Accs individuel aux lments dun tableau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1702.2 Affectation de tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1712.3 La taille dun tableau : length . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1732.4 Exemple de tableau dobjets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1732.5 Utilisation de la boucle for... each (JDK 5.0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1742.6 Cas particulier des tableaux de caractres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

    3 - Tableau en argument ou en retour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

    4 - Les tableaux plusieurs indices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176

  • Table des matiresXI

    4.1 Prsentation gnrale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1774.2 Initialisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1784.3 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1794.4 For... each et les tableaux plusieurs indices (JDK 5.0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1804.5 Cas particulier des tableaux rguliers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181

    5 - Arguments variables en nombre (JDK 5.0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1815.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1815.2 Quelques rgles concernant lellipse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1835.3 Adaptation des rgles de recherche dune mthode surdfinie . . . . . . . . . . . . . . . . . . . . . . . 183

    Chapitre 8 : Lhritage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1851 - La notion dhritage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186

    2 - Accs dune classe drive aux membres de sa classe de base . . . . . . . . . . . . . . . . . . . . . . . . 1892.1 Une classe drive naccde pas aux membres privs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1892.2 Elle accde aux membres publics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1892.3 Exemple de programme complet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190

    3 - Construction et initialisation des objets drivs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1923.1 Appels des constructeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192

    3.1.1 Exemple introductif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1933.1.2 Cas gnral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195

    3.2 Initialisation dun objet driv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197

    4 - Drivations successives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

    5 - Redfinition et surdfinition de membres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1995.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1995.2 La notion de redfinition de mthode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1995.3 Redfinition de mthode et drivations successives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2025.4 Surdfinition et hritage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2025.5 Utilisation simultane de surdfinition et de redfinition . . . . . . . . . . . . . . . . . . . . . . . . . . . 2035.6 Cas particulier des mthodes ellipse (JDK 5.0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2045.7 Contraintes portant sur la redfinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204

    5.7.1 Valeur de retour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2045.7.2 Cas particulier des valeurs de retour covariantes (JDK 5.0) . . . . . . . . . . . . . . . . . . . 2055.7.3 Les droits daccs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206

    5.8 Rgles gnrales de redfinition et de surdfinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2075.9 Duplication de champs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208

    6 - Le polymorphisme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2096.1 Les bases du polymorphisme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2096.2 Gnralisation plusieurs classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2136.3 Autre situation o lon exploite le polymorphisme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2146.4 Polymorphisme, redfinition et surdfinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2176.5 Conversions des arguments effectifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217

    6.5.1 Cas dune mthode non surdfinie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2186.5.2 Cas dune mthode surdfinie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218

    6.6 Les rgles du polymorphisme en Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219

  • Programmer en JavaXII

    6.7 Les conversions explicites de rfrences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2206.8 Le mot-cl super . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2216.9 Limites de lhritage et du polymorphisme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221

    7 - La super-classe Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2227.1 Utilisation dune rfrence de type Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2227.2 Utilisation de mthodes de la classe Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223

    7.2.1 La mthode toString . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2237.2.2 La mthode equals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224

    8 - Les membres protgs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225

    9 - Cas particulier des tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226

    10 - Classes et mthodes finales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227

    11 - Les classes abstraites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22811.1 Prsentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22811.2 Quelques rgles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22811.3 Intrt des classes abstraites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22911.4 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230

    12 - Les interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23112.1 Mise en uvre dune interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232

    12.1.1 Dfinition dune interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23212.1.2 Implmentation dune interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232

    12.2 Variables de type interface et polymorphisme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23312.3 Interface et classe drive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23412.4 Interfaces et constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23512.5 Drivation dune interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23512.6 Conflits de noms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23612.7 Linterface Cloneable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237

    13 - Les classes enveloppes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23713.1 Construction et accs aux valeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23813.2 Comparaisons avec la mthode equals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23813.3 Emballage et dballage automatique (JDK 5.0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239

    13.3.1 Prsentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23913.3.2 Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23913.3.3 Consquences sur la surdfinition des mthodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240

    14 - lments de conception des classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24014.1 Respect du contrat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24014.2 Relations entre classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24114.3 Diffrences entre interface et hritage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242

    15 - Les classes anonymes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24215.1 Exemple de classe anonyme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24215.2 Les classes anonymes dune manire gnrale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244

    15.2.1 Il sagit de classes drives ou implmentant une interface . . . . . . . . . . . . . . . . . . . . 24415.2.2 Utilisation de la rfrence une classe anonyme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244

  • Table des matiresXIII

    Chapitre 9 : Les chanes de caractres et les types numrs . . . . . . . 2451 - Fonctionnalits de base de la classe String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246

    1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2461.2 Un objet de type String nest pas modifiable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2461.3 Entres-sorties de chanes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2471.4 Longueur dune chane : length . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481.5 Accs aux caractres dune chane : charAt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481.6 Concatnation de chanes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2491.7 Conversions des oprandes de loprateur + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2501.8 Loprateur += . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2511.9 criture des constantes chanes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252

    2 - Recherche dans une chane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253

    3 - Comparaisons de chanes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543.1 Les oprateurs == et != . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543.2 La mthode equals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2553.3 La mthode compareTo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256

    4 - Modification de chanes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257

    5 - Tableaux de chanes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258

    6 - Conversions entre chanes et types primitifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2596.1 Conversion dun type primitif en une chane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2596.2 Les conversions dune chane en un type primitif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261

    7 - Conversions entre chanes et tableaux de caractres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263

    8 - Les arguments de la ligne de commande . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264

    9 - La classe StringBuffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265

    10 - Les types numrs (JDK 5.0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26610.1 Dfinition dun type numr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26710.2 Comparaisons de valeurs dun type numr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267

    10.2.1 Comparaisons dgalit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26710.2.2 Comparaisons bases sur un ordre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26710.2.3 Exemple rcapitulatif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268

    10.3 Utilisation dun type numr dans une instruction switch . . . . . . . . . . . . . . . . . . . . . . . . . 26810.4 Conversions entre chanes et types numrs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26910.5 Itration sur les valeurs dun type numr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27010.6 Lecture des valeurs dun type numr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27110.7 Ajout de mthodes et de champs une classe dnumration . . . . . . . . . . . . . . . . . . . . . . . 272

    10.7.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27210.7.2 Cas particulier des constructeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273

    Chapitre 10 : La gestion des exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2751 - Premier exemple dexception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276

    1.1 Comment dclencher une exception avec throw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2761.2 Utilisation dun gestionnaire dexception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2771.3 Le programme complet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277

  • Programmer en JavaXIV

    1.4 Premires proprits de la gestion dexception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278

    2 - Gestion de plusieurs exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280

    3 - Transmission dinformation au gestionnaire dexception . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2823.1 Par lobjet fourni linstruction throw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2823.2 Par le constructeur de la classe exception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283

    4 - Le mcanisme de gestion des exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2844.1 Poursuite de lexcution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2854.2 Choix du gestionnaire dexception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2864.3 Cheminement des exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2884.4 La clause throws . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2884.5 Redclenchement dune exception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2894.6 Le bloc finally . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291

    5 - Les exceptions standard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293

    Chapitre 11 : Les threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2951 - Exemple introductif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296

    2 - Utilisation de linterface Runnable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298

    3 - Interruption dun thread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3013.1 Dmarche usuelle dinterruption par un autre thread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3013.2 Threads dmons et arrt brutal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303

    4 - Coordination de threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3054.1 Mthodes synchronises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3054.2 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3064.3 Notion de verrou . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3084.4 Linstruction synchronized . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3094.5 Interblocage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3094.6 Attente et notification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310

    5 - tats dun thread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314

    6 - Priorits des threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315

    Chapitre 12 : Les bases de la programmation graphique . . . . . . . . . . . . . . 3171 - Premire fentre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318

    1.1 La classe JFrame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3181.2 Arrt du programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3201.3 Cration dune classe fentre personnalise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3201.4 Action sur les caractristiques dune fentre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321

    2 - Gestion dun clic dans la fentre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3232.1 Implmentation de linterface MouseListener . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3232.2 Utilisation de linformation associe un vnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3262.3 La notion dadaptateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3272.4 La gestion des vnements en gnral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329

    3 - Premier composant : un bouton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330

  • Table des matiresXV

    3.1 Cration dun bouton et ajout dans la fentre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3303.2 Affichage du bouton : la notion de gestionnaire de mise en forme . . . . . . . . . . . . . . . . . . . . 3303.3 Gestion du bouton avec un couteur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333

    4 - Gestion de plusieurs composants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3344.1 La fentre coute les boutons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335

    4.1.1 Tous les boutons dclenchent la mme rponse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3354.1.2 La mthode getSource . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3364.1.3 La mthode getActionCommand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338

    4.2 Classe couteur diffrente de la fentre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3404.2.1 Une classe couteur pour chaque bouton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3404.2.2 Une seule classe couteur pour les deux boutons . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341

    4.3 Dynamique des composants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343

    5 - Premier dessin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3465.1 Cration dun panneau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3475.2 Dessin dans le panneau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3485.3 Forcer le dessin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3505.4 Ne pas redfinir inutilement paintComponent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3525.5 Notion de rectangle invalide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353

    6 - Dessiner la vole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353

    7 - Gestion des dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3567.1 Connatre les dimensions de lcran . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3567.2 Connatre les dimensions dun composant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3567.3 Agir sur la taille dun composant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357

    7.3.1 Agir sur la "taille prfrentielle" dun composant . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3577.3.2 Agir sur la taille maximale ou la taille minimale dun composant . . . . . . . . . . . . . . . 359

    Chapitre 13 : Les contrles usuels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3611 - Les cases cocher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362

    1.1 Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3621.2 Exploitation dune case cocher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362

    1.2.1 Raction laction sur une case cocher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3621.2.2 tat dune case cocher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363

    1.3 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363

    2 - Les boutons radio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3652.1 Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3652.2 Exploitation de boutons radio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366

    2.2.1 Raction laction sur un bouton radio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3662.2.2 tat dun bouton radio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367

    2.3 Exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367

    3 - Les tiquettes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3713.1 Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3713.2 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371

    4 - Les champs de texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373

  • Programmer en JavaXVI

    4.1 Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3734.2 Exploitation usuelle dun champ de texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3734.3 Exploitation fine dun champ de texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378

    5 - Les botes de liste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3795.1 Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3795.2 Exploitation dune bote de liste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381

    5.2.1 Accs aux informations slectionnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3815.2.2 vnements gnrs par les botes de liste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382

    5.3 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383

    6 - Les botes combo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3856.1 Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385

    6.1.1 La bote combo pour lutilisateur du programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3856.1.2 Construction dune bote combo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386

    6.2 Exploitation dune bote combo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3866.2.1 Accs linformation slectionne ou saisie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3876.2.2 Les vnements gnrs par une bote combo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3876.2.3 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388

    6.3 volution dynamique de la liste dune bote combo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3896.3.1 Les principales possibilits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3896.3.2 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389

    7 - Exemple dapplication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391

    Chapitre 14 : Les botes de dialogue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3951 - Les botes de message . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395

    1.1 La bote de message usuelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3961.2 Autres possibilits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397

    2 - Les botes de confirmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3982.1 La bote de confirmation usuelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3982.2 Autres possibilits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400

    3 - Les botes de saisie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4013.1 La bote de saisie usuelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4013.2 Autres possibilits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402

    4 - Les botes doptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402

    5 - Les botes de dialogue personnalises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4055.1 Construction et affichage dune bote de dialogue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405

    5.1.1 Construction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4055.1.2 Affichage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4065.1.3 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4065.1.4 Utilisation dune classe drive de JDialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407

    5.2 Exemple simple de bote de dialogue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4085.2.1 Introduction des composants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4085.2.2 Gestion du dialogue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4095.2.3 Rcupration des informations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410

  • Table des matiresXVII

    5.2.4 Gestion de lobjet bote de dialogue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4105.2.5 Exemple complet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410

    5.3 Canevas gnral dutilisation dune bote de dialogue modale . . . . . . . . . . . . . . . . . . . . . . . 413

    6 - Exemple dapplication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414

    Chapitre 15 : Les menus, les actions et les barres doutils . . . . . . . . . . . 4191 - Les principes des menus droulants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420

    1.1 Cration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4201.2 vnements gnrs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4211.3 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421

    2 - Les diffrentes sortes doptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423

    3 - Les menus surgissants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426

    4 - Raccourcis clavier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4294.1 Les caractres mnmoniques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4294.2 Les acclrateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4304.3 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431

    5 - Les bulles daide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432

    6 - Composition des options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4336.1 Exemple avec des menus droulants usuels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4336.2 Exemple avec un menu surgissant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434

    7 - Menus dynamiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4357.1 Activation et dsactivation doptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4357.2 Modification du contenu dun menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436

    8 - Les actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4368.1 Prsentation de la notion daction abstraite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437

    8.1.1 Dfinition dune classe action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4378.1.2 Rattachement dune action un composant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4378.1.3 Gestion des vnements associs une action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4378.1.4 Exemple complet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438

    8.2 Association dune mme action plusieurs composants . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4398.3 Cas des boutons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4418.4 Autres possibilits de la classe AbstractAction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443

    8.4.1 Informations associes la classe AbstractAction . . . . . . . . . . . . . . . . . . . . . . . . . . . 4438.4.2 Activation/dsactivation doptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444

    9 - Les barres doutils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4449.1 Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4459.2 Barres doutils flottantes ou intgres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4469.3 Utilisation dicnes dans les barres doutils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4479.4 Association dactions une barre doutils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447

    10 - Exemple dapplication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448

  • Programmer en JavaXVIII

    Chapitre 16 : Les vnements de bas niveau . . . . . . . . . . . . . . . . . . . . . . . . . . . 4531 - Les vnements lis la souris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454

    1.1 Gestion de lappui et du relchement des boutons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4541.2 Identification du bouton et clics multiples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4561.3 Gestion des dplacements de la souris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4581.4 Exemple de slection de zone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460

    2 - Les vnements lis au clavier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4622.1 Les vnements gnrs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4622.2 Identification des touches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4632.3 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4652.4 tat des touches modificatrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4662.5 Source dun vnement clavier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4672.6 Capture de certaines actions du clavier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467

    2.6.1 Capture par la fentre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4672.6.2 Capture par des actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468

    2.7 Exemple combinant clavier et souris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470

    3 - Les vnements lis aux fentres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4723.1 Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4723.2 Arrt du programme sur fermeture de la fentre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473

    4 - Les vnements lis la focalisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4734.1 Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4734.2 Forcer le focus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4744.3 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475

    Chapitre 17 : Les gestionnaires de mise en forme . . . . . . . . . . . . . . . . . . . . . 4771 - Le gestionnaire BorderLayout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478

    2 - Le gestionnaire FlowLayout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480

    3 - Le gestionnaire CardLayout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482

    4 - Le gestionnaire GridLayout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485

    5 - Le gestionnaire BoxLayout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4865.1 Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4865.2 Exemple de box horizontal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4875.3 Exemple de box vertical . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4885.4 Modifier lespacement avec strut et glue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489

    6 - Le gestionnaire GridBagLayout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4916.1 Prsentation gnrale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4916.2 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492

    7 - Le gestionnaire GroupLayout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4947.1 Exemple dintroduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4957.2 Exemple avec deux groupes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497

  • Table des matiresXIX

    Chapitre 18 : Textes et graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5011 - Dterminer la position du texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502

    1.1 Deux textes conscutifs sur une mme ligne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5021.2 Affichage de deux lignes conscutives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5041.3 Les diffrentes informations relatives une fonte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505

    2 - Choix de fontes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5062.1 Les fontes logiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5072.2 Les fontes physiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509

    3 - Les objets couleur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5123.1 Les constantes couleur prdfinies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5123.2 Construction dun objet couleur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512

    4 - Les tracs de lignes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5134.1 Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5134.2 Lignes droites, rectangles et ellipses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5144.3 Rectangles coins arrondis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5154.4 Polygones et lignes brises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5164.5 Tracs darcs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518

    5 - Remplissage de formes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    6 - Mode de dessin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521

    7 - Affichage dimages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5247.1 Formats dimages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5247.2 Charger une image et lafficher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524

    7.2.1 Chargement dune image avec attente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5257.2.2 Chargement dune image sans attente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527

    Chapitre 19 : Les applets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5291 - Premire applet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529

    2 - Lancement dune applet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5312.1 Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5312.2 Fichier HTML de lancement dune applet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532

    3 - La mthode init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5333.1 Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5333.2 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534

    4 - Diffrents stades de la vie dune applet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535

    5 - Transmission dinformations une applet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537

    6 - Restrictions imposes aux applets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539

    7 - Transformation dune application graphique en une applet . . . . . . . . . . . . . . . . . . . . . . . . . 539

    Chapitre 20 : Les flux et les fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5451 - Cration squentielle dun fichier binaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546

    1.1 Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5461.2 Exemple de programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547

  • Programmer en JavaXX

    2 - Liste squentielle dun fichier binaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5492.1 Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5492.2 Exemple de programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549

    3 - Accs direct un fichier binaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5523.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5523.2 Exemple daccs direct un fichier existant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5523.3 Les possibilits de laccs direct . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5533.4 En cas derreur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554

    3.4.1 Erreur de pointage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5543.4.2 Positionnement hors fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554

    4 - Les flux texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5564.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5564.2 Cration dun fichier texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557

    4.2.1 Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5574.2.2 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558

    4.3 Exemple de lecture dun fichier texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5594.3.1 Accs aux lignes dun fichier texte . . . . . . . . . .