311

Le livre de Java premier langage - informatique … programmation/java... · – Programmer en Turbo Pascal 7.0. N°8986, 1993-1997, 368 pages. PROGRAMMATION INTERNET A. PATZER et

  • Upload
    vocong

  • View
    260

  • Download
    0

Embed Size (px)

Citation preview

  • Gyozavignette couverture

  • Le livre deJavapremier langage

  • CHEZ LE MME DITEUR

    DANS LA MME COLLECTION

    C. DELANNOY. Le livre du C premier langage. Pour les dbutants en programmation. N8838, 1994, 280 pages.

    P. CHALAT, D. CHARNAY. Programmation HTML et JavaScript. N9182, 1998, 460 pages.

    C. DELANNOY. Programmer en langage C. Avec exercices corrigs.N8985, 1996, 296 pages.

    C. DELANNOY. La rfrence du C norme ANSI/ISO. N9036, 1998, 950 pages.

    C. DELANNOY. Programmer en langage C++.N9138, 5e dition, 2000, 648 pages.

    C. DELANNOY. Apprendre le C++ avec Visual C++ 6.N9088, 1999, 496 pages.

    C. DELANNOY. Exercices en langage C++. N9067, 2e dition, 1999, 296 pages.

    C. DELANNOY. Programmer en Turbo Pascal 7.0.N8986, 1993-1997, 368 pages.

    PROGRAMMATION INTERNET

    A. PATZER et al. Programmation Java ct serveur. Servlets, JSP et EJB. N9109, 2000, 984 pages.

    P. CHAN. Le dictionnaire officiel Java 2. N9089, 1999, 890 pages.

    N. MCFARLANE. JavaScript professionnel.N9141, 2000, 950 pages.

    J.-C. BERNADAC, F. KNAB. Construire une application XML. N9081, 1999, 500 pages.

    A. HOMER, D. SUSSMAN, B. FRANCIS. ASP 3.0 professionnel. N9151, 2000, 1 150 pages.

    L. LACROIX, N. LEPRINCE, C. BOGGERO, C. LAUER. Programmation Web avec PHP. N9113, 2000, 382 pages.

  • Anne Tasso

    Le livre deJavapremier langage

  • DITIONS EYROLLES61, Bld Saint-Germain75240 Paris Cedex 05

    www.editions-eyrolles.com

    Le code de la proprit intellectuelle du 1er juillet 1992 interdit en effetexpressment la photocopie usage collectif sans autorisation des ayantsdroit. Or, cette pratique s'est gnralise notamment dans les tablissementsd'enseignement, provoquant une baisse brutale des achats de livres, au pointque la possibilit mme pour les auteurs de crer des uvres nouvelles et deles faire diter correctement est aujourd'hui menace.

    En application de la loi du 11 mars 1957, il est interdit de reproduire intgralement ou par-tiellement le prsent ouvrage, sur quelque support que ce soit, sans autorisation de l'di-teur ou du Centre Franais d'exploitation du droit de Copie, 20, rue des Grands Augustins,75006 Paris. ditions Eyrolles, 2001, Version eBook (ISBN) de l'ouvrage : 2-212-28032-7

    DANGER

    LEPHOTOCOPILLAGE

    TUE LE LIVRE

    Sun, Sun Microsystems, le logo Sun, Java, JDK sont des marques de fabriqueou des marques dposes de Sun Microsystems, Inc.

    http://www.editiond-eyrolles.com

  • AVANT-PROPOS

    Organisation de louvrage

    Ce livre est tout particulirement destin aux dbutants qui souhaitent aborder lappren-tissage de la programmation en utilisant le langage Java comme premier langage.

    Les concepts fondamentaux de la programmation y sont prsents de faon volutive,grce un dcoupage de louvrage en trois parties, chacune couvrant un aspect diffrentdes outils et techniques de programmation.

    Le chapitre introductif, Naissance dun programme , constitue le pralable ncessaire la bonne comprhension des parties suivantes. Il introduit aux mcanismes de cons-truction dun algorithme, compte tenu du fonctionnement interne de lordinateur, etexplique les notions de langage informatique, de compilation et dexcution travers unexemple de programme crit en Java.

    La premire partie concerne ltude des Outils et techniques de base :

    Le chapitre 1, Stocker une information , aborde la notion de variables et detypes. Il prsente comment stocker une donne en mmoire, calculer des expressionsmathmatiques ou changer deux valeurs et montre comment le type dune variablepeut influencer sur le rsultat dun calcul.

    Le chapitre 2, Communiquer une information , explique comment transmettre desvaleurs lordinateur par lintermdiaire du clavier et montre comment lordinateurfournit des rsultats en affichant des messages lcran.

    Le chapitre 3, Faire des choix , examine comment tester des valeurs et prendre desdcisions en fonction du rsultat. Il traite de la comparaison de valeurs ainsi que delarborescence de choix.

    Le chapitre 4, Faire des rptitions , est consacr ltude des outils de rptition etditration. Il aborde les notions dincrmentation et daccumulation de valeurs(compter et faire la somme dune collection de valeurs).

    La deuxime partie, Initiation la programmation oriente objet , introduit lesconcepts fondamentaux indispensables la programmation objet.

    copyright ditions Eyrolles

  • Le livre de Java premier langageAVANT-PROPOS

    VI

    Le chapitre 5, De lalgorithme paramtr lcriture de fonctions , montre lintrtde lemploi de fonctions dans la programmation. Il examine les diffrentes tapes deleur cration.

    Le chapitre 6, Fonctions, notions avances , dcrit trs prcisment comment mani-puler les fonctions et leurs paramtres. Il dfinit les termes de variable locale et declasse et explique le passage de paramtres par valeur.

    Le chapitre 7, Les classes et les objets , explique, partir de ltude de la classeString, ce que sont les classes et les objets dans le langage Java. Il montre ensuitecomment dfinir de nouvelles classes et construire des objets propres lapplicationdveloppe.

    Le chapitre 8, Les principes du concept dobjet , dveloppe plus particulirementcomment les objets se communiquent linformation, en expliquant notamment le prin-cipe du passage de paramtres par rfrence. Il dcrit ensuite les principes fondateursde la notion dobjet, cest--dire lencapsulation des donnes (protection et contrledes donnes, constructeur de classe) ainsi que lhritage entre classes.

    La troisime partie, Outils et techniques orients objet , donne tous les dtails surlorganisation, le traitement et lexploitation intelligente des objets.

    Le chapitre 9, Collectionner un nombre fixe dobjets , concerne lorganisation desdonnes sous la forme dun tableau de taille fixe.

    Le chapitre 10, Collectionner un nombre indtermin dobjets , prsente les diff-rents outils qui permettent dorganiser dynamiquement en mmoire les ensembles dedonnes de mme nature. Il est galement consacr aux diffrentes techniquesdarchivage et la faon daccder aux informations stockes sous forme de fichiers.

    Le chapitre 11, Dessiner des objets , couvre une grande partie des outils graphiquesproposs par le langage Java. Il analyse le concept vnement-action et dcritcomment raliser une applet.

    Ce livre contient galement en annexe :

    Un guide dutilisation du CD-Rom expliquant comment utiliser les outils propossdans le CD-Rom.

    Un index, qui vous aidera retrouver une information sur un thme que vous recher-chiez (les mots-cls du langage, les exemples, les principes de fonctionnement, lesclasses et leurs mthodes, etc.).

    copyright ditions Eyrolles

  • Table des matires

    Avant-propos : organisation de louvrage . . . . . . . . . V

    Introduction : naissance dun programme . . . . . . . . 1

    Construire un algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

    Exemple : lalgorithme du caf chaud . . . . . . . . . . . . . . . . . . 2Vers une mthode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

    Passer de lalgorithme au programme . . . . . . . . . . . . . . . . 4

    Quest-ce quun ordinateur ? . . . . . . . . . . . . . . . . . . . . . . . . . 4Un premier programme en Java, ou comment parler un ordinateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

    Excuter un programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

    Compiler, ou traduire en langage machine . . . . . . . . . . . . . . 14Compiler un programme crit en Java . . . . . . . . . . . . . . . . . . 15Les environnements de dveloppement . . . . . . . . . . . . . . . . . 17

    Le projet Gestion dun compte bancaire . . . . . . . . . . . . 17

    Cahier des charges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18Les objets manipuls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19La liste des ordres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

    Rsum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

    Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

    Apprendre dcomposer une tche en sous-tches distinctes 21Observer et comprendre la structure dun programme Java . 21crire un premier programme Java . . . . . . . . . . . . . . . . . . . . 22

    copyright ditions Eyrolles

  • Le livre de Java premier langageTABLE DES MATIRES

    VIII

    PARTIE 1

    Les outils et techniques de base . . . . . . . . . . . . . . . . . . . . 23

    CHAPITRE 1

    Stocker une information . . . . . . . . . . . . . . . . . . . . . . . . . . . 25La notion de variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

    Les noms de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26La notion de type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26Les types de base en Java . . . . . . . . . . . . . . . . . . . . . . . . . . . 27Comment choisir un type de variable plutt quun autre ? . . 30Dclarer une variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

    Linstruction daffectation . . . . . . . . . . . . . . . . . . . . . . . . . . 31

    Rle et mcanisme de laffectation . . . . . . . . . . . . . . . . . . . . 31Dclaration et affectation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32Quelques confusions viter . . . . . . . . . . . . . . . . . . . . . . . . . 33changer les valeurs de deux variables. . . . . . . . . . . . . . . . . 34

    Les oprateurs arithmtiques . . . . . . . . . . . . . . . . . . . . . . . . 35

    La priorit des oprateurs entre eux . . . . . . . . . . . . . . . . . . . . 36Le type dune expression mathmatique . . . . . . . . . . . . . . . . 37La transformation de types . . . . . . . . . . . . . . . . . . . . . . . . . . 37

    Calculer des statistiques sur des oprations bancaires . . 39

    Cahier des charges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39Le code source complet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42Rsultat de lexcution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

    Rsum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

    Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

    Reprer les instructions de dclaration, observer la syntaxe dune instruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44Comprendre le mcanisme de laffectation . . . . . . . . . . . . . . 44Comprendre le mcanisme dchange de valeurs . . . . . . . . . 45Calculer des expressions mixtes . . . . . . . . . . . . . . . . . . . . . . 45Comprendre le mcanisme du cast . . . . . . . . . . . . . . . . . . . . 46

    Le projet Gestion dun compte bancaire . . . . . . . . . . . . 46

    Dterminer les variables ncessaires au programme . . . . . . . 46

    copyright ditions Eyrolles

  • Le livre de Java premier langageTABLE DES MATIRES

    IX

    CHAPITRE 2

    Communiquer une information . . . . . . . . . . . . . . . . . . . . 49La bibliothque System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

    Laffichage de donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

    Affichage de la valeur dune variable . . . . . . . . . . . . . . . . . . 50Affichage dun commentaire . . . . . . . . . . . . . . . . . . . . . . . . . 50Affichage de plusieurs variables . . . . . . . . . . . . . . . . . . . . . . 51Affichage de la valeur dune expression arithmtique . . . . . . 51Affichage dun texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

    La saisie de donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

    La classe Lire.java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

    Rsum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

    Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

    Comprendre les oprations de sortie . . . . . . . . . . . . . . . . . . . 57Comprendre les oprations dentre . . . . . . . . . . . . . . . . . . . 58Observer et comprendre la structure dun programme Java . 58

    Le projet Gestion dun compte bancaire . . . . . . . . . . . . 59

    Afficher le menu principal ainsi que ses options . . . . . . . . . . 59

    CHAPITRE 3

    Faire des choix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61Lalgorithme du caf chaud, sucr ou non . . . . . . . . . . . . . 61

    Dfinition des objets manipuls . . . . . . . . . . . . . . . . . . . . . . . 62Liste des oprations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62Ordonner la liste des oprations . . . . . . . . . . . . . . . . . . . . . . . 62

    Linstruction if-else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

    Syntaxe dif-else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65Comment crire une condition . . . . . . . . . . . . . . . . . . . . . . . . 66Rechercher le plus grand de deux lments . . . . . . . . . . . . . . 67Deux erreurs viter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69Des if-else imbriqus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

    Linstruction switch, ou comment faire des choix multiples 72

    Construction du switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72Calculer le nombre de jours dun mois donn . . . . . . . . . . . . 73Comment choisir entre if-else et switch ? . . . . . . . . . . . . . . 75

    Rsum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 copyright ditions Eyrolles

  • Le livre de Java premier langageTABLE DES MATIRES

    X

    Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

    Comprendre les niveaux dimbrication . . . . . . . . . . . . . . . . . 77Construire une arborescence de choix . . . . . . . . . . . . . . . . . . 78Manipuler les choix multiples, grer les caractres . . . . . . . . 79

    Le projet Gestion dun compte bancaire . . . . . . . . . . . . 79

    Accder un menu suivant loption choisie . . . . . . . . . . . . . 79

    CHAPITRE 4

    Faire des rptitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

    Combien de sucre dans votre caf ? . . . . . . . . . . . . . . . . . . 81

    La boucle do...while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3

    Syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83Principes de fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . 83Un distributeur automatique de caf . . . . . . . . . . . . . . . . . . . 84

    La boucle while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

    Syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89Principes de fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . 90Saisir un nombre entier au clavier . . . . . . . . . . . . . . . . . . . . . 90

    La boucle for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

    Syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96Principes de fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . 96Rechercher le code Unicode dun caractre donn . . . . . . . . 97Quelle boucle choisir ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

    Rsum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

    Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

    Comprendre la boucle dowhile . . . . . . . . . . . . . . . . . . . . . . . 102Apprendre compter, accumuler et rechercher une valeur . . 102Comprendre la boucle while, traduire une marche suivre en programme Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103Comprendre la boucle for . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

    Le projet Gestion dun compte bancaire . . . . . . . . . . . . 104

    Rendre le menu interactif . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

    copyright ditions Eyrolles

  • Le livre de Java premier langageTABLE DES MATIRES

    XI

    PARTIE 2

    Initiation la programmation oriente objet . . . . . . . . 105

    CHAPITRE 5

    De lalgorithme paramtr lcriture de fonctions 107

    Algorithme paramtr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

    Faire un th chaud, ou comment remplacer le caf par du th 108

    Des fonctions Java prdfinies . . . . . . . . . . . . . . . . . . . . . . . 110

    La librairie Math . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110Exemples dutilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111Principes de fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . 113

    Construire ses propres fonctions . . . . . . . . . . . . . . . . . . . . . 114

    Appeler une fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114Dfinir une fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

    Les fonctions au sein dun programme Java . . . . . . . . . . . 119

    Comment placer plusieurs fonctions dans un programme . . . 119Les diffrentes formes dune fonction . . . . . . . . . . . . . . . . . . 120

    Rsum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

    Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

    Apprendre dterminer les paramtres dun algorithme . . . . 124Comprendre lutilisation des fonctions . . . . . . . . . . . . . . . . . 124Dtecter des erreurs de compilation concernant les paramtres ou le rsultat dune fonction . . . . . . . . . . . . . 125crire une fonction simple . . . . . . . . . . . . . . . . . . . . . . . . . . . 126

    Le projet Gestion dun compte bancaire . . . . . . . . . . . . 126

    Dfinir une fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127Appeler une fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

    CHAPITRE 6

    Fonctions, notions avances . . . . . . . . . . . . . . . . . . . . . . 129

    La structure dun programme . . . . . . . . . . . . . . . . . . . . . . . 129

    La visibilit des variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130Variable locale une fonction . . . . . . . . . . . . . . . . . . . . . . . . 132Variable de classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134Quelques prcisions sur les variables de classe . . . . . . . . . . . 135

    copyright ditions Eyrolles

  • Le livre de Java premier langageTABLE DES MATIRES

    XII

    Les fonctions communiquent . . . . . . . . . . . . . . . . . . . . . . . . 138

    Le passage de paramtres par valeur . . . . . . . . . . . . . . . . . . . 138Le rsultat dune fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . 140Lorsquil y a plusieurs rsultats retourner . . . . . . . . . . . . . 142

    Rsum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

    Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144

    Reprer les variables locales et les variables de classe . . . . . 144Communiquer des valeurs lappel dune fonction . . . . . . . 145Transmettre un rsultat la fonction appelante . . . . . . . . . . . 146

    Le projet Gestion dun compte bancaire . . . . . . . . . . . . 146

    Comprendre la visibilit des variables . . . . . . . . . . . . . . . . . . 146Les limites du retour de rsultat . . . . . . . . . . . . . . . . . . . . . . . 147

    CHAPITRE 7

    Les classes et les objets . . . . . . . . . . . . . . . . . . . . . . . . . . . 149La classe String, une approche vers la notion dobjet . . . . 149

    Manipuler des mots en programmation . . . . . . . . . . . . . . . . . 150Les diffrentes mthodes de la classe String . . . . . . . . . . . . . 151Appliquer une mthode un objet . . . . . . . . . . . . . . . . . . . . . 157

    Construire et utiliser ses propres classes . . . . . . . . . . . . . . 159

    Dfinir une classe et un type . . . . . . . . . . . . . . . . . . . . . . . . . 159Dfinir un objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163Manipuler un objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164Une application qui utilise des objets Cercle . . . . . . . . . . . . . 165

    Rsum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

    Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170

    Utiliser les objets de la classe String . . . . . . . . . . . . . . . . . . . 170Crer une classe dobjets . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170Consulter les variables dinstance . . . . . . . . . . . . . . . . . . . . . 170Analyser les rsultats dune application objet . . . . . . . . . . . . 171

    Le projet Gestion dun compte bancaire . . . . . . . . . . . . 172

    Traiter les chanes de caractres . . . . . . . . . . . . . . . . . . . . . . 172Dfinir le type Compte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172Construire lapplication Projet . . . . . . . . . . . . . . . . . . . . . . . 173Dfinir le type LigneComptable . . . . . . . . . . . . . . . . . . . . . . . . 173Modifier le type Compte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173Modifier lapplication Projet . . . . . . . . . . . . . . . . . . . . . . . . . 174

    copyright ditions Eyrolles

  • Le livre de Java premier langageTABLE DES MATIRES

    XIII

    CHAPITRE 8

    Les principes du concept dobjet . . . . . . . . . . . . . . . . . . 175

    La communication objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

    Les donnes static . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176Le passage de paramtres par rfrence . . . . . . . . . . . . . . . . 178

    Les objets contrlent leur fonctionnement . . . . . . . . . . . . . 183

    La notion dencapsulation . . . . . . . . . . . . . . . . . . . . . . . . . . . 183La protection des donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . 184Les mthodes daccs aux donnes . . . . . . . . . . . . . . . . . . . . 185Les constructeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190

    Lhritage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192

    La relation est un . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192Le constructeur dune classe hrite . . . . . . . . . . . . . . . . . . . 194La protection des donnes hrites . . . . . . . . . . . . . . . . . . . . 195Le polymorphisme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196

    Rsum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197

    Le projet Gestion dun compte bancaire . . . . . . . . . . . . 198

    Encapsuler les donnes dun compte bancaire . . . . . . . . . . . 198Comprendre lhritage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199

    PARTIE 3

    Les outils et techniques orients objet . . . . . . . . . . . . . . 201

    CHAPITRE 9

    Collectionner un nombre fixe dobjets . . . . . . . . . . . . 203

    Les tableaux une dimension . . . . . . . . . . . . . . . . . . . . . . . . 203

    Dclarer un tableau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204Manipuler un tableau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206

    Quelques techniques utiles . . . . . . . . . . . . . . . . . . . . . . . . . . 208

    La ligne de commande . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208Trier un ensemble de donnes . . . . . . . . . . . . . . . . . . . . . . . . 212

    Les tableaux deux dimensions . . . . . . . . . . . . . . . . . . . . . . 218

    Dclaration dun tableau deux dimensions . . . . . . . . . . . . . 218Accder aux lments dun tableau . . . . . . . . . . . . . . . . . . . . 219

    copyright ditions Eyrolles

  • Le livre de Java premier langageTABLE DES MATIRES

    XIV

    Rsum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225

    Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226

    Les tableaux une dimension . . . . . . . . . . . . . . . . . . . . . . . . 226Les tableaux dobjets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226Les tableaux deux dimensions . . . . . . . . . . . . . . . . . . . . . . 227Pour mieux comprendre le mcanisme des boucles imbriques forfor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227

    Le projet Gestion dun compte bancaire . . . . . . . . . . . . 228

    Traiter dix lignes comptables . . . . . . . . . . . . . . . . . . . . . . . . . 228

    CHAPITRE 10

    Collectionner un nombre indtermin dobjets . . . 231

    La programmation dynamique . . . . . . . . . . . . . . . . . . . . . . 231

    Les vecteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232Les dictionnaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236

    Larchivage de donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242

    La notion de flux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242Les fichiers textes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242Les fichiers dobjets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247Grer les exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251

    Rsum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252

    Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254

    Comprendre les vecteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254Comprendre les dictionnaires . . . . . . . . . . . . . . . . . . . . . . . . 254Grer les erreurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255

    Le projet Gestion dun compte bancaire . . . . . . . . . . . . 255

    Les comptes sous forme de dictionnaire . . . . . . . . . . . . . . . . 255La sauvegarde des comptes bancaires . . . . . . . . . . . . . . . . . . 256La mise en place des dates dans les lignes comptables . . . . . 256

    CHAPITRE 11

    Dessiner des objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259

    La librairie AWT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259

    Les fentres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260Le dessin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261Les lments de communication graphique . . . . . . . . . . . . . . 266

    copyright ditions Eyrolles

  • Le livre de Java premier langageTABLE DES MATIRES

    XV

    Les vnements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269Les types dvnements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269Exemple : Associer un bouton une action . . . . . . . . . . . . . . 271Exemple : Fermer une fentre . . . . . . . . . . . . . . . . . . . . . . . . 273Quelques principes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275

    Les applets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275Une page HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275Construire une applet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276Lutilitaire AppletViewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277

    Rsum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278

    Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279Comprendre les techniques daffichage graphique . . . . . . . . 279Apprendre grer les vnements . . . . . . . . . . . . . . . . . . . . . 280

    Le projet Gestion dun compte bancaire . . . . . . . . . . . . 281Calcul de statistiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281Linterface graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282

    Contenu et exploitation du CD-Rom . . . . . . . . . . . . . . . 285

    Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287

    copyright ditions Eyrolles

  • INTRODUCTION

    Naissance dun programme

    Aujourdhui, linformatique en gnral et lordinateur en particulier sont dun usagecourant. Grce Internet, linformatique donne accs une information mondiale. Elledonne aussi la possibilit de traiter cette information pour analyser, grer, prvoir ouconcevoir des vnements dans des domaines aussi divers que la mto, la mdecine,lconomie, la bureautique, etc.

    Cette communication et ces traitements ne sont possibles quau travers de loutil informa-tique. Cependant, toutes ces facults rsultent davantage de lapplication dun programmersidant sur lordinateur que de lordinateur lui-mme. En fait, le programme est lordinateur ce que lesprit est ltre humain.

    Crer une application, cest apporter de lesprit lordinateur. Pour que cet esprit donnesa pleine mesure, il est certes ncessaire de bien connatre le langage des ordinateurs,mais, surtout, il est indispensable de savoir programmer. La programmation est lartdanalyser un problme afin den extraire la marche suivre, lalgorithme susceptible dersoudre ce problme.

    Cest pourquoi ce chapitre commence par aborder la notion dalgorithme. partir dunexemple tir de la vie courante, nous dterminons les tapes essentielles llabora-tion dun programme ( Construire un algorithme ). la section suivante, Quest-cequun ordinateur ? , nous examinons le rle et le fonctionnement de lordinateur dans lepassage de lalgorithme au programme. Nous tudions ensuite, travers un exemplesimple, comment crire un programme en Java et lexcuter ( Un premier programmeen Java, ou comment parler un ordinateur ). Enfin, nous dcrivons, la section Leprojet Gestion dun compte bancaire , le cahier des charges de lapplication projet quele lecteur assidu peut raliser en suivant les exercices dcrits la fin de chaque chapitre.

    Construire un algorithmeUn ordinateur muni de lapplication adquate traite une information. Il sait calculer,compter, trier ou rechercher linformation, dans la mesure o un programmeur lui adonn les ordres excuter et la marche suivre pour arriver au rsultat.

    Cette marche suivre sappelle un algorithme. copyright ditions Eyrolles

  • Le livre de Java premier langageINTRODUCTION

    2

    Dterminer lalgorithme, cest trouver un cheminement de tches fournir lordinateurpour quil les excute. Voyons comment sy prendre pour construire cette marche suivre.

    Ne faire quune seule chose la fois

    Avant de raliser une application concrte, telle que celle propose en projet dans cetouvrage, ncessairement complexe par la diversit des tches quelle doit raliser,simplifions-nous la tche en ne cherchant rsoudre quun problme la fois.

    Considrons que crer une application, cest dcomposer cette dernire en plusieurssous-applications qui, leur tour, se dcomposent en micro-applications, jusqudescendre au niveau le plus lmentaire. Cette dmarche est appele analyse descen-dante. Elle est le principe de base de toute construction algorithmique.

    Pour bien comprendre cette dmarche, penchons-nous sur un problme rel et simple rsoudre : comment faire un caf chaud non sucr ?

    Exemple : lalgorithme du caf chaudConstruire un algorithme, cest avant tout analyser lnonc du problme afin de dfinirlensemble des objets manipuler pour obtenir un rsultat.

    Dfinition des objets manipuls

    Analysons lnonc suivant :

    Comment faire un caf chaud non sucr ?

    Chaque mot a son importance, et non sucr est aussi important que caf ou chaud . Le terme non sucr implique quil ne soit pas ncessaire de prendre dusucre ni une petite cuillre.

    Remarquons que tous les ingrdients et ustensiles ncessaires ne sont pas cits danslnonc. En particulier, nous ne savons pas si nous disposons dune cafetire lectriqueou non. Pour rsoudre notre problme, nous devons prendre certaines dcisions, et cesdernires vont avoir une influence sur lallure gnrale de notre algorithme.

    Supposons que, pour raliser notre caf, nous soyons en possession des ustensiles etingrdients suivants :

    caf moulufiltreeaupichet cafetire lectriquetasselectricittable

    En fixant la liste des ingrdients et des ustensiles, nous dfinissons un environnement,une base de travail. Nous sommes ainsi en mesure dtablir une liste de toutes les actions mener pour rsoudre le problme et de construire la marche suivre permettantdobtenir un caf.

    copyright ditions Eyrolles

  • Naissance dun programmeINTRODUCTION

    3

    Liste des oprationsVerser leau dans la cafetire, le caf dans la tasse, le caf dans le filtre.Remplir le pichet deau.Prendre du caf moulu, une tasse, de leau, une cafetire lectrique, un filtre, le pichet de la cafetire. Brancher, allumer ou teindre la cafetire lectrique. Attendre que le caf remplisse le pichet. Poser la tasse, la cafetire sur la table, le filtre dans la cafetire, le pichet dans la cafetire.

    Cette numration est une description de toutes les actions ncessaires la ralisationdun caf chaud.

    Chaque action est un fragment du problme donn et ne peut plus tre dcoupe. Chaqueaction est lmentaire par rapport lenvironnement que nous nous sommes donn.

    En dfinissant lensemble des actions possibles, nous crons un langage minimal quinous permet de raliser le caf. Ce langage est compos de verbes (Prendre, Poser,Verser, Faire, Attendre) et dobjets (Caf moulu, Eau, Filtre, Tasse).

    La taille du langage, cest--dire le nombre de mots quil renferme, est dtermine parlenvironnement. Pour cet exemple, nous avons, en prcisant les hypothses, volontaire-ment choisi un environnement restreint. Nous aurions pu dcrire des tches commeprendre un contrat EDF ou planter une graine de caf, mais elles ne sont pas utiles notre objectif pdagogique.

    Telle que nous lavons dcrite, la liste des oprations ne nous permet pas encore de faireun caf chaud. En suivant cette liste, tout y est, mais dans le dsordre. Pour raliser cefameux caf, nous devons ordonner cette liste.

    Ordonner la liste des oprations1. Prendre une cafetire lectrique.2. Poser la cafetire sur la table.3. Prendre un filtre.4. Poser le filtre dans la cafetire.5. Prendre du caf moulu.6. Verser le caf moulu dans le filtre.7. Prendre le pichet de la cafetire.8. Remplir le pichet deau. 9. Verser leau dans la cafetire.10. Poser le pichet dans la cafetire. 11. Brancher la cafetire.12. Allumer la cafetire.13. Attendre que le caf remplisse le pichet.14. Prendre une tasse.15. Poser la tasse sur la table.16. Eteindre la cafetire.17. Prendre le pichet de la cafetire.18. Verser le caf dans la tasse.

    Lexcution de lensemble ordonn de ces tches nous permet maintenant dobtenir ducaf chaud non sucr.

    copyright ditions Eyrolles

  • Le livre de Java premier langageINTRODUCTION

    4

    Remarquons que lordre dexcution de cette marche suivre est important. En effet, silutilisateur ralise lopration 10 (Allumer la cafetire) avant lopration 8 (Verserleau dans la cafetire), le rsultat est sensiblement diffrent. La marche suivreainsi dsordonne risque de dtriorer la cafetire lectrique.

    Cet exemple tir de la vie courante montre que, pour rsoudre un problme, il est essen-tiel de dfinir les objets utiliss puis de trouver la suite logique de tous les ordres nces-saires la rsolution dudit problme.

    Vers une mthodeLa tche consistant dcrire comment rsoudre un problme nest pas simple. Elledpend en partie du niveau de difficult du problme et rclame un savoir-faire : la faonde procder pour dcouper un problme en actions lmentaires.

    Pour aborder dans les meilleures conditions possibles la tche difficile dlaborationdun algorithme, nous devons tout dabord :

    dterminer les objets utiles la rsolution du problme ;

    construire et ordonner la liste de toutes les actions ncessaires cette rsolution.

    Pour cela, il est ncessaire :

    danalyser en dtail la tche rsoudre ;

    de fractionner le problme en actions distinctes et lmentaires.

    Ce fractionnement est ralis en tenant compte du choix des hypothses de travail. Ceshypothses imposent un ensemble de contraintes, qui permettent de savoir si lactiondcrite est lmentaire et peut ne plus tre dcoupe.

    Cela fait, nous avons construit un algorithme.

    Passer de lalgorithme au programmePour construire un algorithme, nous avons dfini des hypothses de travail, cest--diresuppos une base de connaissances minimales ncessaires la rsolution du problme.Ainsi, le fait de prendre lhypothse davoir du caf moulu nous autorise ne pas dcrirelensemble des tches prcdant lacquisition du caf moulu. Cest donc la connaissance delenvironnement de travail qui dtermine en grande partie la construction de lalgorithme.

    Pour passer de lalgorithme au programme, le choix de lenvironnement de travail nestplus de notre ressort. Jusqu prsent, nous avons suppos que lexcutant tait humain.Maintenant, notre excutant est lordinateur. Pour crire un programme, nous devonssavoir ce dont est capable un ordinateur et connatre son fonctionnement de faon tablir les connaissances et capacits de cet excutant.

    Quest-ce quun ordinateur ?Notre intention nest pas de dcrire en dtail le fonctionnement de lordinateur et de cescomposants mais den donner une image simplifie.

    copyright ditions Eyrolles

  • Naissance dun programmeINTRODUCTION

    5

    Pour tenter de comprendre comment travaille lordinateur et, surtout, comment il seprogramme, nous allons schmatiser lextrme ses mcanismes de fonctionnement.

    Un ordinateur est compos de deux parties distinctes, la mmoire centrale et lunitcentrale.

    La mmoire centrale permet de mmoriser toutes les informations ncessaires lexcu-tion dun programme. Ces informations correspondent des donnes ou des ordres excuter (instructions). Les ordres placs en mmoire sont effectus par lunitcentrale, la partie active de lordinateur.

    Lorsquun ordinateur excute un programme, son travail consiste en grande partie grer la mmoire, soit pour y lire une instruction, soit pour y stocker une information. Ence sens, nous pouvons voir lordinateur comme un robot qui sait agir en fonction desordres qui lui sont fournis. Ces actions, en nombre limit, sont dcrites ci-dessous.

    Dposer ou lire une information dans une case mmoire

    La mmoire est forme dlments, ou cases, qui possdent chacune un numro (uneadresse). Chaque case mmoire est en quelque sorte une bote aux lettres pouvant conte-nir une information (une lettre). Pour y dposer cette information, lordinateur (lefacteur) doit connatre ladresse de la bote. Lorsque le robot place une information dansune case mmoire, il mmorise ladresse o se situe celle-ci afin de retrouver linforma-tion en temps ncessaire.

    Le robot sait dposer une information dans une case, mais il ne sait pas la retirer (au sensde prendre un courrier dpos dans une bote aux lettres). Lorsque le robot prend linfor-mation dpose dans une case mmoire, il ne fait que la lire. En aucun cas il ne la retireni ne lefface. Linformation lue reste toujours dans la case mmoire.

    Pour effacer une information dune case mmoire, il est ncessaire de placer unenouvelle information dans cette mme case. Ainsi, la nouvelle donne remplace lancienne,et linformation prcdente est dtruite.

    Figure I1.

    La mmoire de lordi-nateur est compose de cases possdant une adresse et pouvant contenir tout moment une valeur.

    copyright ditions Eyrolles

  • Le livre de Java premier langageINTRODUCTION

    6

    Excuter des oprations simples telles que laddition ou la soustraction

    Le robot lit et excute les oprations dans lordre o elles lui sont fournies. Pour faireune addition, il va chercher les valeurs additionner dans les cases mmoire appropries(stockes, par exemple, aux adresses a et b) et ralise ensuite lopration demande. Ilenregistre alors le rsultat de cette opration dans une case dadresse c. De telles opra-tions sont dcrites laide dordres, appels aussi instructions.

    Comparer des valeurs

    Le robot est capable de comparer deux valeurs entre elles pour dterminer si lunedentre elle est plus grande, plus petite, gale ou diffrente de lautre valeur. Grce lacomparaison, le robot est capable de tester une condition et dexcuter un ordre pluttquun autre, en fonction du rsultat du test.

    La ralisation dune comparaison ou dun test fait que le robot ne peut plus excuter lesinstructions dans leur ordre dapparition. En effet, suivant le rsultat du test, il doitrompre lordre de la marche suivre, en sautant une ou plusieurs instructions. Cestpourquoi il existe des instructions particulires dites de branchement. Grce ce typedinstructions, le robot est mme non seulement de sauter des ordres mais aussi derevenir un ensemble doprations afin de les rpter.

    Figure I2.

    Le programme excute les instructions dans lordre de leur apparition.

    Figure I3.

    Suivant le rsultat du test, lordinateur excute lune ou lautre instruction en sautant celle quil ne doit pas excuter.

    copyright ditions Eyrolles

  • Naissance dun programmeINTRODUCTION

    7

    Communiquer une information lmentaire

    Un programme est essentiellement un outil qui traite linformation. Cette informationest transmise lordinateur par lutilisateur. Linformation est saisie par lintermdiairedu clavier ou de la souris. Cette transmission de donnes lordinateur est appelecommunication dentre (input en anglais). On parle aussi de saisie ou encore de lecturede donnes.

    Aprs traitement, le programme fournit un rsultat lutilisateur, soit par lintermdiairede lcran, soit sous forme de fichiers, que lon peut ensuite imprimer.

    Il sagit alors de communication de sortie (output) ou encore daffichage ou dcriturede donnes.

    Coder linformation

    De par la nature de ses composants lectroniques, le robot ne peroit que deux tats :composant allum et composant teint. De cette perception dcoule le langage binaire,qui utilise par convention les deux symboles 0 (teint) et 1 (allum).

    Ne connaissant que le 0 et le 1, lordinateur utilise un code pour reprsenter une infor-mation aussi simple quun nombre entier ou un caractre. Ce code est un programme,qui diffrencie chaque type dinformation et transforme une information (donne num-rique ou alphabtique) en valeurs binaires. linverse, ce programme sait aussi transfor-mer un nombre binaire en valeur numrique ou alphabtique. Il existe autant de codesque de types dinformations. Cette diffrenciation du codage (en fonction de ce qui doittre reprsent) introduit le concept de type de donnes.

    Signalons en outre que toute information fournie lordinateur est, au bout du compte,code en binaire. Linformation peut tre un simple nombre ou une instruction deprogramme.

    Figure I4..

    La saisie au clavier dune valeur correspond une opration dentre, et laffichage dun rsultat une opration de sortie.

    Figure I5.

    Toute information est code en binaire. Il existe autant de codes que de types dinformations .

    copyright ditions Eyrolles

  • Le livre de Java premier langageINTRODUCTION

    8

    Exemple

    Pour additionner deux nombres, lordinateur fait appel aux trois lments qui lui sontncessaires pour raliser cette opration. Ces lments sont les suivants :

    Le code binaire reprsentant lopration daddition (par exemple 0101).

    Ladresse de la case mmoire o est stock le premier nombre (par exemple 011101).

    Ladresse de la case mmoire o se trouve la deuxime valeur (par exemple 010101).

    Pour finir, linstruction daddition de ces deux nombres scrit en assemblant les troiscodes binaires (soit, dans notre exemple, 0101011101010101).

    Remarquons que le code binaire associ chaque code dopration (addition, test, etc.)nest pas ncessairement identique dun ordinateur un autre. Ce code binaire est dter-min par le constructeur de lordinateur. De ce fait, une instruction telle que ladditionde deux nombres na pas le mme code binaire dune machine une autre. Il existedonc, pour un mme programme, un code binaire qui diffre suivant le type dordinateurutilis.

    Lordinateur nest quun excutant

    En pratique, le robot est trs habile raliser lensemble des tches nonces ci-dessus.Il les excute beaucoup plus rapidement quun tre humain.

    En revanche, le robot nest pas dou dintelligence. Il nest ni capable de choisir uneaction plutt quune autre, ni apte excuter de lui-mme lensemble de ces actions.Pour quil puisse excuter une instruction, il faut quun tre humain dtermine linstruc-tion la plus approprie et lui donne lordre de lexcuter.

    Le robot est un excutant capable de comprendre des ordres. Compte tenu de ses capaci-ts limites, les ordres ne peuvent pas lui tre donns dans le langage naturel propre ltre humain. En effet, le robot ne comprend pas le sens des ordres quil excute maisseulement leur forme. Chaque ordre doit tre crit avec des mots particuliers et uneforme, ou syntaxe, prtablie. Lensemble de ces mots constitue un langage informati-que. Les langages C, C++, Pascal, Basic, Fortran, Cobol et Java sont des langages deprogrammation, constitus de mots et dordres dont la syntaxe diffre selon le langage.

    Pour crire un programme, il est ncessaire de connatre un de ces langages, de faon traduire un algorithme en un programme compos dordres.

    Figure I6.

    Pour un mme programme, le code binaire diffre en fonction de lordinateur utilis.

    copyright ditions Eyrolles

  • Naissance dun programmeINTRODUCTION

    9

    Un premier programme en Java, ou comment parler un ordinateurPour crer une application, nous allons avoir dcrire une liste ordonne doprationsdans un langage comprhensible par lordinateur. La contrainte est de taille et se porteessentiellement sur la faon de dfinir et de reprsenter les objets ncessaires la rsolu-tion du problme en fonction du langage de lordinateur.

    Pour bien comprendre la difficult du travail accomplir, regardons comment fairecalculer un ordinateur la circonfrence dun cercle de rayon quelconque.

    Calcul de la circonfrence dun cercle

    Lexercice consiste calculer le primtre dun cercle de rayon quelconque. Noussupposons que lutilisateur emploie le clavier pour transmettre au programme la valeurdu rayon.

    Dfinition des objets manipuls

    Pour calculer la circonfrence du cercle, lordinateur a besoin de stocker dans ses casesmmoire la valeur du rayon ainsi que celle du primtre. Les objets manipuler sontdeux valeurs numriques appartenant lensemble des rels . Nous appelons P lavaleur correspondant au primtre et R la valeur du rayon.

    La liste des oprations

    La circonfrence dun cercle est calcule partir de la formule : P = 2 R.La valeur du rayon est fournie par lutilisateur laide du clavier. Elle nest donc pasconnue au moment de lcriture du programme. En consquence, il est ncessairedcrire lordre (instruction) de saisie au clavier avant de calculer la circonfrence.

    La liste des oprations est la suivante :

    1. Rserver deux cases mmoire pour y stocker les valeurs correspondant au rayon (R) et au primtre (P).

    2. Demander lutilisateur de saisir la valeur du rayon au clavier et la placer dans la case mmoire associe.

    3. Connaissant la valeur du rayon, calculer la circonfrence.4. Afficher le rsultat.

    La valeur du rayon puis, aprs calcul, celle de la circonfrence sont les donnes princi-pales de ce programme. Lordinateur doit les stocker en mmoire pour les utiliser.

    Lopration 1 consiste donner un nom aux cases mmoire qui vont servir stocker cesdonnes. Lors de cette opration, appele dclaration de variables, lordinateur rserveune case mmoire pour chaque nom de variable dfini. Ici, ces variables ont pour nom Pet R. Au cours de cette rservation demplacements mmoire, lordinateur associe le nomde la variable et ladresse relle de la case mmoire.

    Pour le programmeur, le nom et ladresse dune case ne font quun, car il ne manipuleles variables que par leur nom, alors que lordinateur travaille avec leur adresse. Endonnant un nom une case, ltre humain sait facilement identifier les objets quil mani-pule, alors quil lui serait pnible de manipuler les adresses binaires correspondantes.

    copyright ditions Eyrolles

  • Le livre de Java premier langageINTRODUCTION

    10

    Inversement, en associant un nom une adresse code en binaire, lordinateur peut vri-tablement manipuler ces objets.

    Lopration 2 permet de saisir au clavier la valeur du rayon. Pour que lutilisateur noniniti sache quoi correspond la valeur saisie, il est ncessaire, avant de procder cettesaisie, dafficher un message explicatif lcran. Lopration 2 se dcompose en deuxinstructions lmentaires, savoir :

    Afficher un message demandant lutilisateur du programme de saisir une valeur pour le rayonUne fois la valeur saisie par lutilisateur, la placer dans sa case mmoire

    Les oprations 3 et 4 sont des actions lmentaires directement traduisibles en langageinformatique.

    La traduction en Java

    Une application, ou programme, ne scrit pas en une seule fois. Nous verrons lalecture de cet ouvrage que programmer cest toujours dcomposer une difficult endiffrentes tches plus aises raliser. Cette dcomposition sapplique aussi bien pourconstruire un algorithme que pour lcriture du programme lui-mme.

    Dune manire gnrale, la meilleure faon de procder pour fabriquer un programmerevient crire une premire bauche et la tester. De ces tests, il ressort des fautes corriger et, surtout, de nouvelles ides. Le programme final consiste en lassemblage detoutes ces corrections et de ces amliorations.

    Pour traduire la marche suivre dfinie prcdemment selon les rgles de syntaxe dulangage Java, nous allons utiliser cette mme dmarche. Nous nous intresserons, dansun premier temps, la traduction du cur du programme (oprations 1 4 dcrites lasection prcdente). Nous verrons pour finir comment insrer lensemble de ces instruc-tions dans une structure de programme Java.

    Lopration 1 consiste dclarer les variables utilises pour le calcul de la circonf-rence. Cette opration se traduit par linstruction :

    double R, P ;

    Par cette instruction, le programme demande lordinateur de rserver deux casesmmoire, nommes R et P, pour y stocker les valeurs du rayon et de la circonfrence.Le mot rserv double permet de prciser que les valeurs numriques sont relles avec une double prcision , cest--dire avec une prcision pouvant aller jusqu17 chiffres aprs la virgule.

    Pour plus dinformations sur la dfinition des types de variables, reportez-vous au chapitre 1, Stocker une information .

    Pour raliser lopration 2, nous devons faire afficher un message demandant lutili-sateur de saisir une valeur. Cette opration se traduit par linstruction :

    System.out.print("Valeur du rayon : ") ;

    System.out.print() est ce que lon appelle un programme, ou une fonction, prdfini

    copyright ditions Eyrolles

  • Naissance dun programmeINTRODUCTION

    11

    par le langage Java. Ce programme permet dcrire lcran le message spcifi lintrieur des parenthses. Le message affich est ici un fragment de texte, appel,dans le jargon informatique, une chane de caractres. Pour que lordinateur com-prenne que la chane de caractres nest pas un nom de variable mais un texte afficher, il faut placer entre guillemets (" ") tous les caractres composant la chane.

    Lopration 2 est termine lorsque la valeur demande est effectivement saisie etstocke en mmoire. Pour ce faire, nous devons crire linstruction suivante :

    R = Lire.d() ;

    Lire.d()est un programme propos par lauteur, qui permet de communiquer unevaleur numrique au programme par lintermdiaire du clavier. Ce programme estune fonction qui donne lordre lordinateur dattendre la saisie dune valeur de dou-ble prcision. La saisie est effective lorsque lutilisateur valide sa rponse en appuy-ant sur la touche entre du clavier. Cette fonction ntant pas prdfinie par lelangage Java, elle figure dans le CD-Rom livr avec le manuel.

    Une fois la valeur saisie, elle est place dans la variable R grce au signe =.

    Pour plus de prcisions sur les deux mthodes System.out.print() et Lire.d(),reportez-vous au chapitre 2, Communiquer une information . Pour le signe =, voir le chapitre 1, Stocker une information .

    Lopration 3 permet de calculer la valeur de la circonfrence. Elle se traduit de lafaon suivante :

    P = 2 * Math.PI * R ;

    Le signe * est le symbole qui caractrise lopration de multiplication. Math.PI est leterme qui reprsente la valeur numrique du nombre avec une prcision de17 chiffres aprs la virgule. Le mot-cl Math dsigne la bibliothque de mathma-tiques accompagnant le langage Java. Cette bibliothque contient, outre des con-stantes telles que , des fonctions standards, comme sqrt() (racine carre) ou sin()(sinus). Une fois les oprations de multiplication effectues, la valeur calcule estplace dans la variable P grce au signe =.

    La dernire opration (4) de notre programme a pour rle dafficher le rsultat ducalcul prcdent. Cet affichage est ralis grce linstruction :

    System.out.print("Le cercle de rayon " + R + " a pour perimetre : " + P);

    Ce deuxime appel la fonction System.out.print() est plus complexe que le pre-mier. Il mlange laffichage de chanes de caractres (texte entre guillemets) et decontenu de variables.

    Si les caractres R et P ne sont pas placs entre guillemets, cest pour que lordinateurles interprte non pas comme des caractres afficher mais comme les variables quiont t dclares en dbut de programme. De ce fait, il affiche le contenu des vari-ables et non les lettres R et P.

    copyright ditions Eyrolles

  • Le livre de Java premier langageINTRODUCTION

    12

    Les signes +, qui apparaissent dans lexpression "Le cercle de rayon " + R + " apour perimetre : " + P", indiquent que chaque lment du message doit treaffich en le collant aux autres : dabord la chane de caractres "Le cercle derayon ", puis la valeur de R, puis la chane "a pour primtre :" et, pour finir, lavaleur de P.

    En rsum, la partie centrale du programme contient les cinq instructions suivantes :

    double R, P ; System.out.print("Valeur du rayon : ") ; R = Lire.d() ; P = 2 * Math.PI * R ; System.out.print("Le cercle de rayon " + R + " a pour perimetre : " + P);

    Pour amliorer la lisibilit du programme, il est possible dinsrer dans le programme,des commentaires, comme suit :

    // Dclaration des variablesdouble R, P ; // Afficher le message "Valeur du rayon : " lcranSystem.out.print("Valeur du rayon : ") ; // Lire au clavier une valeur, placer cette valeur dans la variable RR = Lire.d() ; // Calculer la circonfrence en utilisant la formule consacreP = 2 * Math.PI * R ; // Afficher le rsultatSystem.out.print("Le cercle de rayon " + R + " a pour perimetre : " + P);

    Les lignes du programme qui dbutent par les signes // sont considres par lordinateurnon pas comme des ordres excuter mais comme des lignes de commentaire. Ellespermettent dexpliquer en langage naturel ce que ralise linstruction associe.

    crites de la sorte, ces instructions constituent le cur de notre programme. Elles nepeuvent cependant pas encore tre interprtes correctement par lordinateur. En effet,celui-ci excute les instructions dun programme dans lordre de leur arrive. Une appli-cation doit donc tre constitue dune instruction qui caractrise le dbut du programme.Pour ce faire, nous devons crire notre programme ainsi :

    public static void main(String [] argument) { // Dclaration des variables double R, P ; // Afficher le message "Valeur du rayon : " lcran System.out.print("Valeur du rayon : ") ; // Lire au clavier une valeur, placer cette valeur dans la variable R R = Lire.d() ; // Calculer la circonfrence en utilisant la formule consacre P = 2 * Math.PI * R ; // Afficher le rsultat System.out.print("Le cercle de rayon " + R + " a pour perimetre : "+ P) ; } // Fin de la fonction main()

    copyright ditions Eyrolles

  • Naissance dun programmeINTRODUCTION

    13

    La ligne public static void main(String [] argument) est linstruction qui permetdindiquer lordinateur le dbut du programme. Ce dbut est identifi par ce que lonappelle la fonction main(), cest--dire la fonction principale du programme. De cettefaon, lorsque le programme est excut, lordinateur recherche le mot-cl main. Unefois ce mot-cl trouv, lordinateur excute une une chaque instruction constituant lafonction.

    Les autres mots-cls, tels que public, static ou void, dterminent certaines caractris-tiques de la fonction main(). Ces mots-cls, obligatoirement placs et crits dans cetordre, sont expliqus au fur et mesure de leur apparition dans le livre et plus particuli-rement la section Quelques techniques utiles du chapitre Collectionner un nombrefixe d'objets .

    Pour finir, nous devons insrer la fonction main() dans ce qui est appel une classe Java.En programmation objet, un programme nest excutable que sil est dfini lintrieurdune classe. Une classe est une entit interprte par lordinateur comme tant uneunit de programme, quil peut excuter ds quun utilisateur le souhaite.

    Aucun programme ne peut tre crit en dehors dune classe. Nous devons donc placer lafonction main() lintrieur dune classe dfinie par linstruction public class Cercle{}, comme suit :

    public class Cercle{ public static void main(String [] argument) { // Dclaration des variables double R, P ; // Afficher le message "Valeur du rayon : " lcran System.out.print("Valeur du rayon : ") ; // Lire au clavier une valeur, placer cette valeur dans la variable R R = Lire.d() ; // Calculer la circonfrence en utilisant la formule consacre P = 2*Math.PI*R ; // Afficher le rsultat System.out.print("Le cercle de rayon "+ R +" a pour perimetre : "+ P); }} // Fin de la classe Cercle

    Nous obtenons ainsi le programme dans son intgralit. La ligne public class Cerclepermet de dfinir une classe. Puisque notre programme effectue des oprations sur uncercle, nous avons choisi dappeler cette classe Cercle. Nous aurions pu lui donner untout autre nom, comme Rond ou Exemple. Ainsi dfinie, la classe Cercle devient unprogramme part entire

    Pour voir le rsultat de lexcution de ce programme, reportez-vous la section Exemple surplate-forme Unix , ci-aprs.

    copyright ditions Eyrolles

  • Le livre de Java premier langageINTRODUCTION

    14

    En observant la Figure 7, nous remarquons que ce programme, de mme que tous ceux venir, est constitu de deux blocs encastrs dfinis par les deux lignes public classCercle{} et public static void main(String [] argument){}.

    Ces deux blocs constituent la charpente principale et ncessaire tout programme critavec le langage Java. Cet exemple montre en outre que les mots rservs par le langageJava sont nombreux et varis et quils constituent une partie du langage Java.

    Si la syntaxe, cest--dire la forme, de ces instructions peut paratre trange de primeabord, nous verrons la lecture de cet ouvrage que leur emploi obit des rgles strictes.En apprenant ces rgles et en les appliquant, vous pourrez vous initier aux techniques deconstruction dun programme, qui reviennent dcomposer un problme en actionslmentaires puis traduire celles-ci laide du langage Java.

    Excuter un programmeNous avons crit un programme constitu dordres, dont la syntaxe obit des rglesstrictes. Pour obtenir le rsultat des calculs dcrits dans le programme, nous devons lefaire lire par lordinateur, cest--dire lexcuter.

    Pour cela, nous devons traduire le programme en langage machine. En effet, nouslavons vu, lordinateur ne comprend quun seul langage, le langage binaire.

    Compiler, ou traduire en langage machineCette traduction du code source (le programme crit en langage informatique) en codemachine excutable (le code binaire) est ralise par un programme appel compila-teur. Lopration de compilation consiste lancer un programme qui lit chaque instruc-tion du code source et vrifie si celles-ci ont une syntaxe correcte. Sil ny a pas derreur,le compilateur cre un code binaire directement excutable par lordinateur.

    Il existe autant de compilateurs que de langages. Un programme crit en langage Pascalest traduit en binaire laide dun compilateur Pascal, et un programme crit en Java estcompil par un compilateur Java. Le compilateur Java ne travaille pas tout fait commeun compilateur classique, traduisant un code source en code excutable. Pour mieuxcomprendre cette diffrence, voyons son fonctionnement et comment lutiliser.

    Figure I7 .

    Un programme Java est constitu de deux blocs encastrs. Le premier bloc reprsente la classe associe au programme, tandis que le second dtermine la fonction principale.

    copyright ditions Eyrolles

  • Naissance dun programmeINTRODUCTION

    15

    Compiler un programme crit en Java

    Lobjectif premier de J. Gosling, le crateur du langage Java, a t de raliser un langageindpendant de lordinateur. Dans cette optique, un programme crit sur PC, par exem-ple, doit pouvoir sexcuter sur un PC (de type IBM), un Macintosh (Apple) ou unestation Unix (de type Sun), et ce sans rcriture ni compilation du code source.

    Or, le code binaire est spcifique de chaque machine, comme nous lavons vu lasection Coder linformation . Il est impossible de faire tourner un mme programmesource dune machine une autre sans le compiler nouveau. En effet, lors de lanouvelle compilation, des erreurs apparaissent, dues aux diffrences de matriel infor-matique. Pour corriger cet inconvnient majeur, lide de J.Gosling a t de crer uncode intermdiaire entre le code source et le code binaire. Ce code intermdiaire estappel pseudo-code, ou encore byte code.

    En effet, en crant un pseudo-code, identique pour tous les ordinateurs, il est possibledexcuter ce code sur diffrentes machines, sans avoir le recompiler. Cette excutionest ralise par un programme spcifique de la machine utilise, qui interprte et excutele pseudo-code, compte tenu des ressources propres de lordinateur.

    Ce programme sappelle un interprteur Java. Il en existe autant que de types dordina-teurs (plates-formes). Lensemble des ces interprteurs constitue ce que lon appelle lamachine virtuelle Java, ou JVM (Java Virtual Machine).

    Le compilateur Java ne cre pas de code binaire, la diffrencedes autres compilateurs,tels que les compilateurs C ou C++. Il fabrique un pseudo-code, qui est ensuite inter-prt par un programme spcifique de lordinateur. Ce dernier programme transforme lepseudo-code en code directement excutable par lordinateur choisi. Lavantage dun telsystme est que le dveloppeur dapplications est certain de crer des programmes tota-lement compatibles avec les diffrents ordinateurs du march sans avoir rcrire unepartie du code.

    Le kit de dveloppement Java (JDK)

    Le tout premier compilateur Java a t crit par J. Gosling linitiative de Sun, le cons-tructeur de stations de travail sous Unix, au dbut des annes 90.

    Figure I8 .

    Le compilateur (javac) transforme le code source en pseudo-code. Ce dernier est excut grce un interprteur (java) spcifique de chaque type de machine. Lensemble des interprteurs constitue la JVM.

    copyright ditions Eyrolles

  • Le livre de Java premier langageINTRODUCTION

    16

    Aujourdhui, le compilateur Java est tlchargeable depuis le site Internet de Sun. Il estfourni avec le kit de dveloppement Java (JDK Java Development Kit ou encore SDKSandard Development Kit). Cet environnement est disponible sur les ordinateurs de typeSolaris, PC sous Windows 95/98 ou NT et Mac OS. Si vous souhaitez installer le JDK survotre machine, consultez sur le CD-Rom fourni avec l'ouvrage le fichier outils .

    Le JDK est ce que lon appelle une bote outils de dveloppement dapplications. Celarevient dire quil est constitu doutils, ou programmes, que lon utilise sous forme decommande, ou ordre. Pour transmettre une commande un ordinateur, le programmeurdoit saisir le nom de cette commande au clavier, dans une fentre spcifique du typedordinateur utilis. Les deux principales commandes connatre pour cet ouvrage sontles commandes de compilation (javac) et dexcution (java).

    Exemple sur plate-forme Unix

    La marche suivre est la suivante :

    1. Entrez le programme qui calcule la circonfrence dun cercle (exemple donn lasection crire un programme ) laide dun diteur de texte, cest--dire un logi-ciel permettant de saisir du texte au clavier. Les diteurs de texte les plus couram-ment utiliss sous Unix, sont vi et emacs.

    2. Sauvegardez votre programme en choisissant comme nom de fichier celui qui suitles termes public class. Pour notre exemple, nous avons crit public classCercle. Le fichier est donc sauvegarder sous le nom Cercle.java

    3. partir du CD-Rom fourni avec louvrage, copiez le fichier Lire.java dans votrerpertoire de travail. La prsence de ce fichier est ncessaire pour que lordinateurdemande la saisie dune valeur au clavier. Pour plus dinformations, reportez-vousau chapitre 2, Communiquer une information .

    4. Lancez lordre de compilation en saisissant sous Unix la commande :

    javac Cercle.java

    La compilation est lance. Le compilateur excute sa tche et compile les fichiersCercle.java et Lire.java. Au final, si aucune erreur nest dtecte, le compilateurcre un nouveau fichier, appel Cercle.class, ainsi quun fichier Lire.class. Cesdeux fichiers correspondent au pseudo-code relatif chacun des programmes com-pils.

    5. Excutez le programme en lanant la commande :

    java Cercle

    La commande java lance le programme, qui interprte le pseudo-code cr ltapeprcdente. Ce programme traduit le pseudo-code dans le code binaire conforme lamachine sur laquelle il est lanc. Aprs excution, le rsultat obtenu lcran est :

    Valeur du rayon : 55Le cercle de rayon 5 a pour perimetre : 31.41592653589793

    o 55 est une valeur entre au clavier par lutilisateur. copyright ditions Eyrolles

  • Naissance dun programmeINTRODUCTION

    17

    Pour excuter un programme, les deux tapes suivantes sont ncessaires :

    La compilation du programme laide de la commande javac suivie du nom duprogramme. Une fois la commande ralise, le pseudo-code est cr et enregistr dansun fichier, dont le nom correspond au nom du programme suivi de lextension .class .

    Lexcution du programme en appelant linterprteur au moyen de la commandejava, suivie du nom du programme (sans extension). Cette commande interprte lefichier .class cr ltape prcdente et excute le programme.

    Les environnements de dveloppementLe JDK fournit un ensemble de commandes pour compiler et interprter. Cest un environ-nement courant et facile demploi dans le monde Unix. Il lest beaucoup moins, en revan-che, sous Windows 95/98/NT. En effet, lcriture dune commande telle que donner lordrede compiler un programme ne peut se raliser quen ouvrant une fentre CommandesMS-DOS .

    Un certain nombre denvironnements de programmation permettent cependant dcrire,de compiler puis dexcuter de faon conviviale un programme Java. Citons, titredexemples les environnements de travail, tels que le logiciel Kawa (Tek-Tools), sur PC,ou Visual Caf (Symantec), sur Macintosh.

    Ces logiciels offrent, sous forme dinterface graphique conviviale, un ensemble doutilsde dveloppement dapplications. Les outils les plus utiliss sont, en gnral, lessuivants :

    Lditeur de texte pour crire le programme.

    Les menus et botes outils, pour lancer la compilation et lexcution.

    La fentre de compilation, qui affiche les ventuelles erreurs de syntaxe.

    La fentre dexcution, qui affiche les messages et rsultats du programme en cours.

    La fentre qui visualise les projets en cours, dans le cas dun programme dfini partirde plusieurs fichiers diffrents.

    Vous trouverez toutes les informations ncessaires au tlchargement de ces interfaces dans lefichier Outils prsent sur le CD-Rom fourni avec l'ouvrage.

    Le projet Gestion dun compte bancaire Pour vous permettre de mieux matriser les diffrentes notions abordes dans cetouvrage, nous vous proposons de construire une application plus labore que lessimples exercices appliqus donns en fin de chapitre.

    Dans ce projet, nous avons volontairement vit lemploi dinterfaces graphiques. Bienquattrayantes, ces dernires sont difficiles matriser pour des dbutants en program-mation. Le projet consiste btir une application autour du concept de menu interactif. lheure du tout-graphique, il nest pas vain dapprendre crire des menus texte .Le fait de passer par cet apprentissage permet dapprhender toutes les notions fonda-

    copyright ditions Eyrolles

  • Le livre de Java premier langageINTRODUCTION

    18

    mentales de la programmation, sans avoir svertuer tudier la syntaxe de toutes lesmthodes de la librairie graphique Java.

    Cahier des chargesIl sagit dcrire une application interactive qui permet de grer lensemble des comptesbancaires dune personne. Les fonctionnalits fournies par le programme de gestion decomptes bancaires sont les suivantes :

    Cration, Suppression dun compteAffichage dun compte donnSaisie dune ligne comptable pour un compte donnCalcul de statistiquesSauvegarde des donnes (n de compte, lignes comptables)

    Niveau 1 : programme interactif sous forme de choix dans un menu

    Lexcution du programme affiche le menu suivant :

    1. Crer un compte2. Afficher un compte3. Crer une ligne comptable4. Sortir5. De laide

    Votre choix :

    Lutilisateur choisit une valeur pour excuter lopration souhaite.

    Si lutilisateur choisit loption 1, les informations fournir concernent :

    Le type du compte [Types possibles : Compte courant, joint, pargne]Le numro du compteLa premire valeur crdite Le taux de placement dans le cas dun compte pargne

    Si lutilisateur choisit loption 2, le programme affiche les caractristiques duncompte (type, valeur courante, taux), ainsi que les dix dernires oprations compta-bles dans lordre des dates o ont t effectues les oprations.

    Pour loption 3, il sagit de fournir des informations pour crer une ligne comptable.Ces informations sont les suivantes :

    Le numro du compte concern (avec vrification de son existence)La somme crditer (valeur positive) ou dbiter (valeur ngative)La date de loprationLe motif de lachat ou de la vente [thmes possibles : Salaire, Loyer,

    Alimentation, Divers]Le mode de paiement[Types possibles : CB, n du Chque, Virement]

    Loption 4. Sortir du menu gnral permet de sortir du programme.

    Loption 5. Aide du menu gnral affiche une information relative chaque option dumenu.

    copyright ditions Eyrolles

  • Naissance dun programmeINTRODUCTION

    19

    Niveau 2 : structure de donnes optimise en termes dutilisation de la mmoire

    Le programme doit pouvoir grer autant de comptes que ncessaire. Pour chaquecompte, le nombre doprations comptables doit tre infini et est donc indterminableau moment de lcriture du programme.

    En consquence, la rservation des cases mmoire ne peut pas tre ralise de faondfinitive en tout dbut de programme. chaque ligne comptable et chaque nouveaucompte crs, le programme doit tre capable de rserver lui-mme le nombre suffi-sant demplacements mmoire pour la bonne marche du programme. Lorsque leprogramme gre lui-mme la rservation des emplacements mmoire, on dit quilgre sa mmoire de manire dynamique.

    Loption permettant la suppression dun compte est dpendante de la faon dont eststocke linformation. Cette option ne peut tre aborde avant davoir choisi le modede gestion des emplacements mmoire.

    Loption 5. Sortir du menu gnral doit contrler la sauvegarde de linformation. Lesdonnes sont sauvegardes sur disque sous forme dun fichier portant le nom compte.dat.

    Niveau 3 : sinitier aux graphiques

    Un nouveau choix est ajout loption 2. Afficher un compte du menu gnral : ilsagit dafficher les statistiques pour un compte donn sous diffrentes formes graphi-ques (histogramme, camembert, etc.).

    Les objets manipulsUn compte bancaire est dfini par un ensemble de donnes :

    un numro du compte ;

    un type de compte ( courant, pargne, joint, etc.) ;

    des lignes comptables possdant chacune une valeur, une date, un thme et un moyende paiement.

    Ces donnes peuvent tre reprsentes de la faon suivante :

    Nous verrons, au chapitre 1, Stocker une information , puis tout au long du chapitre 7, Les classes et les objets , comment dfinir et reprsenter les objets utiles et ncessai-res la ralisation de cette application.

    Donnes Exemple Type de lobjet

    Numro du compte 4010.205.530 Caractre

    Type du compte Courant Caractre

    Valeur 1 520,30 Numrique

    Date 04 03 1978 Date

    Thme Loyer Caractre

    Moyen de paiement CB Caractre

    copyright ditions Eyrolles

  • Le livre de Java premier langageINTRODUCTION

    20

    La liste des ordresPour crer une application de gestion de comptes bancaires, nous devons dcomposerlensemble de ses fonctionnalits en tches lmentaires. Pour ce faire, nous partageonslapplication en trois niveaux, de difficult croissante. Les niveaux 1 et 2 doivent treabords dans cet ordre et sont ncessaires la ralisation du niveau 3. La mise en uvredu niveau 1 permet de raliser les actions suivantes :

    construire un menu (voir les chapitres 2, Communiquer une information , et 3, Faire des choix ) ;

    crer des comptes diffrents ou saisir plusieurs lignes comptables (voir leschapitres 4, Faire des rptitions , et 9, Collectionner un nombre fixe dobjets ) ;

    dfinir les comptes et les lignes comptables comme des objets informatiques, au sensde la programmation objet (voir les chapitre 5, De lalgorithme paramtr lcri-ture dune fonction , et 7, Les classes et les objets ).

    Pour rsoudre le niveau 2, nous allons apprendre les tches suivantes :

    grer la mmoire de lordinateur (voir les chapitres 9, Collectionner un nombre fixedobjets , et 10, Collectionner un nombre indtermin dobjets ) ;

    sauvegarder des informations pour que celles-ci ne disparaissent pas une fois lordi-nateur teint (voir le chapitre 10, Collectionner un nombre indtermin dobjets ).

    Le niveau 3 va nous initier aux oprations suivantes : calculer des statistiques (voir les chapitres 1, Stocker une information et 9,

    Collectionner un nombre fixe dobjets ) ;

    dessiner, en particulier des histogrammes (voir le chapitre 11, Dessiner desobjets ).

    Ltude tape par tape de lensemble de cet ouvrage va nous permettre de raliser cetteapplication.

    RsumEn informatique, rsoudre un problme cest trouver la suite logique de tous lesordres ncessaires la solution dudit problme. Cette suite logique est appele algo-rithme. La construction dun algorithme passe par lanalyse du problme, avec pour objectifde le dcouper en une succession de tches simplifies et distinctes. Ainsi, partir delnonc clair, prcis et crit en franais dun problme, nous devons accomplir lesdeux oprations suivantes :

    Dcomposer lnonc en tapes distinctes qui conduisent lalgorithme.

    Dfinir les objets manipuls par lalgorithme.

    Une fois lalgorithme construit, il faut crire le programme , cest--dire traduirelalgorithme de faon quil soit compris par lordinateur. En effet, un programme,cest un algorithme traduit dans un langage comprhensible par les ordinateurs.

    copyright ditions Eyrolles

  • Naissance dun programmeINTRODUCTION

    21

    ExercicesApprendre dcomposer une tche en sous-tches distinctes

    crivez la marche suivre qui explique comment accrocher un tableau au centredun mur. Pour cela, vous devez :

    a. Dfinir les objets ncessaires la rsolution du problme.

    b. tablir la liste des oprations.

    c. Ordonner cette liste.

    Plusieurs solutions sont possibles, mais chacune doit rester logique lgard des hypothses prisesen a. Par exemple, un clou et une perceuse ne vont pas ensemble.

    Observer et comprendre la structure dun programme JavaObservez le programme suivant :

    public class Premier{

    Un ordinateur est compos des deux lments principaux suivants :

    La mmoire centrale, qui sert mmoriser des ordres ainsi que des informationsmanipules par le programme. Schmatiquement, on peut dire quelle estcompose demplacements reprs chacun par un nom (ct programmeur) et parune adresse (ct ordinateur).

    Lunit centrale, qui excute une une les instructions du programme dans leurordre de lecture. Elle constitue la partie active de lordinateur. Ces actions, ennombre limit, sont les suivantes :

    dposer une information dans une case mmoire ;

    excuter des oprations simples, telles que laddition, la soustraction, etc. ;

    comparer des valeurs ;

    communiquer une information lmentaire par lintermdiaire du clavier ou delcran ;

    coder linformation.

    Du fait de la technologie, toutes les informations manipules par un ordinateur sontcodes en binaire (0 ou 1). Pour saffranchir du langage machine binaire, on faitappel un langage de programmation dit volu, tel que les langages Pascal, C ouJava. Un tel programme se compose dinstructions dfinies par le langage, dontlenchanement ralise la solution du problme pos.

    Pour traduire ce programme dans le langage binaire directement excutable par lordi-nateur, nous devons utiliser un programme appropri, appel compilateur ou interpr-teur. Dans cet ouvrage, nous nous proposons dtudier comment construire unprogramme en prenant comme support de langage, le langage et le compilateur Java.

    I.1

    I.2

    copyright ditions Eyrolles

  • Le livre de Java premier langageINTRODUCTION

    22

    public static void main(String [] argument) { double a; System.out.print("Entrer une valeur : ") ; a = Lire.d() ; System.out.print(" Vous avez entre : " + a) ; }}

    a. Reprez les instructions dfinissant la fonction main() et celles dlimitant la classePremier.

    b. Recherchez les instructions daffichage.

    c. Quel est le rle de linstruction double a; ?

    d. Dcrivez lexcution de ce programme, en supposant que lutilisateur entre auclavier la valeur 10.

    En suivant la structure ci-dessous et en vous aidant du programme donn lasection Calcul de la circonfrence dun cercle , crivez un programme quicalcule le primtre dun carr (rappel : primtre = 4 ct) :

    public class // Donner un nom la classe

    { public static void main(String [] argument) { // Dclaration des variables reprsentant le primtre et le ct // Afficher le message "Valeur du ct : " lcran // Lire au clavier une valeur // placer cette valeur dans la variable correspondante // Calculer le primtre du carr // Afficher le rsultat }}

    crire un premier programme JavaEn suivant la structure de lexercice prcdent, crivez un programme qui calculela surface dun rectangle (rappel : surface = largeur longueur). En observant la formule :

    a. Combien de variables faut-il dclarer pour excuter le calcul ?

    b. Combien de valeurs faut-il saisir au clavier ?

    I.3

    I.4

    copyright ditions Eyrolles

  • PARTIE 1

    Les outils et techniques de base

    CHAPITRE 1

    Stocker une information . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

    CHAPITRE 2

    Communiquer une information . . . . . . . . . . . . . . . . . . . . 49

    CHAPITRE 3

    Faire des choix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

    CHAPITRE 4

    Faire des rptitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

    copyright ditions Eyrolles

  • 1Stocker une information

    En dcrivant, au chapitre introductif, Naissance dun programme , lalgorithme deconfection dun caf chaud non sucr, nous avons constat que la toute premire tapepour construire une marche suivre consistait dterminer les objets utiles la rsolutiondu problme. En effet, pour faire du caf, nous devons prendre le caf, leau, le filtre, etc.

    De la mme faon, lorsquun dveloppeur dapplications conoit un programme, il doit nonpas prendre, au sens littral du mot, les donnes numriques mais dfinir ces donnesainsi que les objets ncessaires la ralisation du programme. Cette dfinition consiste nommer ces objets et dcrire leur contenu afin quils puissent tre stocks en mmoire.

    Cest pourquoi nous tudions dans ce chapitre ce quest une variable et comment la dfi-nir ( La notion de variable ). Nous examinons ensuite, la section Linstructiondaffectation , comment placer une valeur dans une variable, par lintermdiaire delinstruction daffectation. Enfin, nous analysons lincidence du type des variables sur lersultat dun calcul arithmtique ( Les oprateurs arithmtiques ).

    Afin de clarifier les explications, vous trouverez tout au long du chapitre des exemplessimples et concis. Ces exemples ne sont pas des programmes complets mais de simplesextraits, qui clairent un point prcis du concept abord. Vous trouverez en fin de chapi-tre ( Calculer des statistiques sur des oprations bancaires ), un programme entier quiaborde et rsume toutes les notions rencontres au fil de ce chapitre.

    La notion de variableUne variable permet la manipulation de donnes et de valeurs. Elle est caractrise parles lments suivants :

    Un nom, qui sert reprer un emplacement en mmoire dans lequel une valeur estplace. Le choix du nom dune variable est libre. Il existe cependant des contraintes,que nous prsentons la section Les noms de variables .

    copyright ditions Eyrolles

  • Les outils et techniques de basePARTIE 1

    26

    Un type, qui dtermine la faon dont est traduite la valeur en code binaire ainsi que lataille de lemplacement mmoire. Nous examinons ce concept la section La notionde type . Plusieurs types simples sont prdfinis dans le langage Java, et nous endtaillons les caractristiques la section Les types de base en Java .

    Les noms de variablesLe choix des noms de variables nest pas limit. Il est toutefois recommand dutiliserdes noms vocateurs. Par exemple, les noms des variables utilises dans une applicationqui gre les codes-barres de produits vendus en magasin sont plus certainement article, prix, codebarre que xyz1, xyz2, xyz3 . Les premiers, en effet, voquentmieux linformation stocke que les seconds.

    Les contraintes suivantes sont respecter dans lcriture des noms de variables :

    Le premier caractre dune variable doit obligatoirement tre diffrent dun chiffre.

    Aucun espace ne peut figurer dans un nom.

    Les majuscules sont diffrentes des minuscules, et tout nom de variable possdant unemajuscule est diffrent du mme nom crit en minuscule.

    Les caractres &, ~, ", #, , {, }, (, ), [, ], -, |, `, \, ^, @, =, %, *, ?, , :, /, , !, , , ainsi que ; et , ne peuvent tre utiliss dans lcriture dun nom de variable.

    Tout autre caractre peut tre utilis, y compris les caractres accentus, le caractrede soulignement (_) et les caractres $, et .

    Le nombre de lettres composant le nom dune variable est indfini. Nanmoins,lobjectif dun nom de variable tant de renseigner le programmeur sur le contenu dela variable, il nest pas courant de rencontrer des noms de variables de plus de trentelettres.

    Exemples

    La notion de typeUn programme doit grer des informations de nature diverse. Ainsi, les valeurs tellesque 123 ou 2.4 sont de type numrique tandis que Spinoza est un mot compos de carac-tres. Si ltre humain sait, dun simple coup dil, faire la distinction entre un nombreet un mot, lordinateur nen est pas capable. Le programmeur doit donc expliquer lordinateur la nature de chaque donne. Cette explication passe par la notion de type.

    Le type dune valeur permet de diffrencier la nature de linformation stocke dans unevariable.

    Nom de variable autoris Nom de variable interdit

    compte

    num_2 (" _ " et non pas " - ")undeux (et non pas un deux)VALEUR_temporaire

    Val$solde

    pourquoi#pas caractre # interdit2001espace pas de chiffre en dbut de variable-plus caractre - interdit@adresse caractre @ interditah!ah! caractre ! interdit

    copyright ditions Eyrolles

  • Stocker une informationCHAPITRE 1

    27

    chaque type sont associs les lments suivants :

    Un code spcifique permettant la traduction de linformation en binaire et rciproque-ment.

    Un ensemble doprations ralisables en fonction du type de variable utilis. Parexemple, si la division est une opration cohrente pour deux valeurs numriques, ellene lest pas pour deux valeurs de type caractre.

    Un intervalle de valeurs possibles dpendant du codage utilis. Par dfinition, chaque type correspond un mme nombre doctets et, par consquent, un nombrelimit de valeurs diffrentes.

    En effet, un octet, est un regroupement de 8 bits, sachant quun bit ne peut tre quun 0 ouun 1. Lorsquune donne est code sur 1 octet, elle peut prendre les valeurs 00000000(8 zros), ou encore 111111111 (8 un) et toutes les valeurs intermdiaires entre ces deuxextrmes (par exemple 10101010, 11110000 ou 10010110).

    En fait, une donne code sur 8 bits peut, par le jeu des combinaisons de 0 et de 1, pren-dre 28 valeurs diffrentes, soit 256 valeurs possibles comprises entre 128 et 127.Lintervalle [ 128, 127] est en effet compos de 256 valeurs et possde autant devaleurs positives que ngatives.

    Pour reprsenter la valeur numrique 120, un codage sur 1 octet suffit, mais pour repr-senter la valeur 250, 1 octet ne suffit pas, et il est ncessaire dutiliser un codage sur2 octets.

    Les types de base en JavaChaque langage de programmation propose un ensemble de types de base permettant lamanipulation de valeurs numriques entires, relles ou caractres. Ces types sont :

    reprsents par un mot-cl prdfini par le langage.

    dits simples, car, un instant donn, une variable de type simple ne peut contenirquune et une seule valeur.

    loppos, il existe des types appels types structurs qui permettent le stockage, sousun mme nom de variable, de plusieurs valeurs de mme type ou non. Il sagit destableaux, des classes, des vecteurs ou encore des dictionnaires. Ces types structurs sonten gnral dfinis par le programmeur. Nous les tudions en dtail dans la troisimepartie de cet ouvrage, intitule Outils et techniques orients objet .

    Pour slectionner un type plutt quun autre, le langage Java dfinit huit types simples,qui appartiennent, selon ce quils reprsentent, lune ou lautre des quatre catgoriessuivantes : logique, texte, entier, rel.

    Catgorie logique

    Il sagit du type boolean. Les valeurs logiques ont deux tats : true (vrai) ou false (faux). Elles ne peuvent prendre aucune autre valeur que ces deux tats.

    Catgorie caractre

    Deux types dfinissent cette catgorie, le type char et le type String. copyright ditions Eyrolles

  • Les outils et techniques de basePARTIE 1

    28

    Le type char permet de reprsenter les caractres isols, alors que le type String sert dcrire des squences de caractres. En ce sens, il ne sagit pas dun type simple.

    Voir, au chapitre 7, Les classes et les objets , la section La classe String, une approche versla notion dobjet .

    Pour dcrire une variable de type char, lordinateur utilise un code sur 2 octets. De cettefaon, il lui est possible dutiliser jusqu 216 caractres, soit 65 536 caractres diff-rents. En ralit, Java utilise une table de correspondance, appele jeu de caractresUnicode. Cette table associe un caractre une valeur numrique.

    Par exemple, dans la table Unicode, le caractre A majuscule a pour valeur dcimale 65,et le caractre a minuscule la valeur dcimale 97.

    La table Unicode est organise comme suit :

    Les 31 premiers caractres ne peuvent tre affichs (