Click here to load reader

Les fondements du langage java

  • View
    113

  • Download
    0

Embed Size (px)

Text of Les fondements du langage java

  1. 1. __________________ Les fondements du langage Java _______________ Cours dinitiation la programmation en Java RM di Scala : rvision du 05 Septembre 2004 392 pages
  2. 2. Les fondements du langage Java - ( rv. 05.09.2004) page 2 Pour pouvoir sinitier Java avec ce cours et peu de frais dans un premier temps, il faut tlcharger gratuitement la dernire version du J2SE (n 1.4.2 en Aot 2004) disponible sur le site de SUN http://sun java.com, puis utiliser un environnement pdagogique permettant dditer, de compiler et dexcuterdes programmes Java avec le J2SE ; le logiciel JGrasp de luniversit dAburn est un tel environnement tlchargeable gratuitement (utiliser Google et taper Jgrasp pour connatre lURL du site de tlchargement) Remerciements : (pour les corrections d'erreurs) A [email protected], internaute averti sur la syntaxe de base C++ commune Java et C#. A mon pouse Dominique pour son soutien et sa patience qui me permettent de consacrer de nombreuses heures la construction du package et des cours inclus et surtout comme la seule personne en dehors de moi qui a eu la constance de relire entirement toutes les pages de l'ouvrage, alors que l'informatique n'est pas sa tasse de th. Remerciements : (diffusion de la connaissance) A l'universit de Tours qui supporte et donne accs la partie Internet du package pdagogique partir de sa rubrique "cours en ligne", partir duquel ce document a t labor. Au club des dveloppeurs francophones qui hberge un site miroir du prcdent et qui recommande le package pdagogique ( http://rmdiscala.developpez.com/cours/ ) ses visiteurs dbutants. Cette dition a t corrige duran tles 2 mois lt 2004, elle a t optimise en nombre de pages papier imprimables. Remerciements : (anticips) Aux lecteurs qui trouveront ncessairement des erreurs, des oublis, et autres imperfections et qui voudront bien les signaler lauteur afin damliorer le cours, e-mail : [email protected]
  3. 3. Les fondements du langage Java - ( rv. 05.09.2004) page 3 SOMMAIRE Types, oprateurs, instructions Introduction ... P.5 Les types primitifs ... P.6 Les oprateurs ..... P.11 Les instructions .. P.26 Les conditions .... P.29 Les itrations .. P.38 Instructions de rupture de squence .. P.43 Classes avec mthodes static .. P.49 Structures de donnes de base Classe String ... P.68 Tableaux, matrices ... P.75 Tableaux dynamiques, listes .... P.81 Flux et fichiers ... P.85 Java et la Programmation Objet Les classes .... P.95 Les objets ...... P.107 Les membres de classe ... P.118 Les interfaces .... P.133 Les Awt et les vnements + exemples ...... P.138 Les Swing et l'architecture MVC + exemples .... P.190 Les Applets Java .. P.231 Redessiner composants et Applets .... P.248
  4. 4. Les fondements du langage Java - ( rv. 05.09.2004) page 4 Les classes internes .... P.256 Les exceptions . .... .. P.271 Le multi-threading .... P.292 EXERCICES Exercices algorithmiques noncs P.303 Exercices algorithmiques solutions .P.325 Les chanes avec Java .... P.340 Trier des tableaux en Java ... P.347 Rechercher dans un tableau ... P.352 Liste et pile Lifo ... P.360 Fichiers texte .. P.375 Thread pour baignoire et robinet ......P.380 Annexe .......P.387 Bibliographie ...P.392
  5. 5. Les fondements du langage Java - ( rv. 05.09.2004) page 5 Introduction aux bases de Java 2 Apparu fin 1995 dbut 1996 et dvelopp par Sun Microsystems Java s'est trs rapidement taill une place importante en particulier dans le domaine de l'internet et des applications client-serveur. Destin au dpart la programmation de centraux tlphoniques sous l'appellation de langage "oak", la socit Sun a eu l'ide de le recentrer sur les applications de l'internet et des rseaux. C'est un langage en volution permanente Java 2 est la version stabilise de java fonde sur la version initiale 1.2.2 du JDK (Java Development Kit de Sun : http://java.sun.com) Les objectifs de java sont d'tre multi-plateformes et d'assurer la scurit aussi bien pendant le dveloppement que pendant l'utilisation d'un programme java. Il est en passe de dtrner le langage C++ dont il hrite partiellement la syntaxe mais non ses dfauts. Comme C++ et Delphi, java est algorithmique et orient objet ce titre il peut effectuer comme ses compagnons, toutes les tches d'un tel langage (bureautiques, graphiques, multimdias, bases de donnes, environnement de dveloppement, etc...). Son point fort qui le dmarque des autres est sa portabilit due (en thorie) ses bibliothques de classes indpendantes de la plate-forme, ce qui est le point essentiel de la programmation sur internet ou plusieurs machines dissemblables sont interconnectes. La ralisation multi-plateformes dpend en fait du systme d'exploitation et de sa capacit possder des outils de compilation et d'interprtation de la machine virtuelle Java. Actuellement ceci est totalement ralis d'une manire correcte sur les plates-formes Windows et Solaris, un peu moins bien sur les autres semble-t-il. Notre document se posant en manuel d'initiation nous ne comparerons pas C++ et java afin de voir les points forts de java, sachons que dans java ont t limins tous les lments qui permettaient dans C++ d'engendrer des erreurs dans le code (pointeurs, allocation- dsallocation, hritage multiple,...). Ce qui met java devant C++ au rang de la maintenance et de la scurit. En Java l'on dveloppe deux genres de programmes : Les applications qui sont des logiciels classiques s'excutant directement sur une plate-forme spcifique soit travers une machine virtuelle java soit directement en code excutable par le systme d'exploitation. (code natif). les applets qui sont des programmes java insrs dans un document HTML s'excutant travers la machine virtuelle java du navigateur lisant le document HTML.
  6. 6. Les fondements du langage Java - ( rv. 05.09.2004) page 6 Les types primitifs Java 2 1 - Les types lmentaires et le transtypage Tout n'est pas objet dans Java, par souci de simplicit et d'efficacit, Java est un langage fortement typ. Comme en Delphi, en Java vous devez dclarer un objet ou une variable avec son type avant de l'utiliser. Java dispose de mme de types prdfinis ou types lmentaires ou primitifs. Les types servent dterminer la nature du contenu d'une variable, du rsultat d'une opration, d'un retour de rsultat de fonction. Tableau synthtique des types lmentaires de Java type lmentaire intervalle de variation nombre de bits boolean false , true 1 bit byte [-128 , +127 ] 8 bits char caractres unicode (valeurs de 0 65536) 16 bits double Virgule flottante double prcision ~5.10 308 64 bits float Virgule flottante simple prcision ~9.10 18 32 bits int entier sign : [-231 , +231 - 1] 32 bits long entier sign long : [-263 , +263 - 1 ] 64 bits short entier sign court : [-215 , +215 -1] 16 bits Signalons qu'en java toute variable qui sert de conteneur une valeur d'un type lmentaire prcis doit pralablement avoir t dclare sous ce type.
  7. 7. Les fondements du langage Java - ( rv. 05.09.2004) page 7 Il est possible d'indiquer au compilateur le type d'une valeur numrique en utilisant un suffixe : l ou L pour dsigner un entier du type long f ou F pour dsigner un rel du type float d ou D pour dsigner un rel du type double. Exemples : 45l ou 45L reprsente la valeur 45 en entier sign sur 64 bits. 45f ou 45F reprsente la valeur 45 en virgule flottante simple prcision sur 32 bits. 45d ou 45D reprsente la valeur 45 en virgule flottante double prcision sur 64 bits. 5.27e-2f ou 5.27e-2F reprsente la valeur 0.0527 en virgule flottante simple prcision sur 32 bits. Transtypage : oprateur ( ) Les conversions de type en Java sont identiques pour les types numriques aux conversions utilises dans un langage fortement typ comme Delphi par exemple (pas de conversion implicite). Si vous voulez malgr tout, convertir une valeur immdiate ou une valeur contenue dans une variable il faut explicitement transtyper cette valeur l'aide de l'oprateur de transtypage not: ( ). int x ; x = (int) y ; signifie que vous demander de transtyper la valeur contenue dans la variable y en un entier sign 32 bits avant de la mettre dans la variable x. Tous les types lmentaires peuvent tre transtyps l'exception du type boolean qui ne peut pas tre converti en un autre type (diffrence avec le C). Les conversions peuvent tre restrictives quant au rsultat; par exemple le transtypage du rel 5.27e-2 en entier ( x = (int)5.27e-2) mettra l'entier zro dans x. 2 - Variables, valeurs, constantes
  8. 8. Les fondements du langage Java - ( rv. 05.09.2004) page 8 Identificateurs de variables Dclarations et affectation de variables Les constantes en Java Base de reprsentation des entiers Comme en Delphi, une variable Java peut contenir soit une valeur d'un type lmentaire, soit une rfrence un objet. Les variables jouent le mme rle que dans les langages de programmation classiques impratifs, leur visibilit est tudie ailleurs. Les identificateurs de variables en Java se dcrivent comme ceux de tous les langages de programmation : Identificateur Java : Attention Java est sensible la casse et fait donc une diffrence entre majuscules et minuscules, c'est dire que la variable BonJour n'est pas la mme que la variable bonjour ou encore la variable Bonjour. En plus des lettres, les caractres suivants sont autoriss pour construire un identificateur Java : "$" , "_" , "" et les lettres accentues. Exemples de dclaration de variables : int Bonjour ; int Enumration_fin$; float Valeur ; char UnCar ; boolean Test ; etc ... Exemples d'affectation de valeurs ces variables : Affectation Dclaration avec initialisation Bonjour = 2587 ; Valeur = -123.5687 UnCar = 'K' ; int Bonjour = 2587 ; float Valeur = -123.5687 char UnCar = 'K' ;
  9. 9. Les fondements du langage Java - ( rv. 05.09.2004) page 9 Test = false ; boolean Test = false ; Exemple avec transtypage : int Valeur ; char car = '8' ; Valeur = (int)car - (int)'0'; fonctionnement de l'exemple : Lorsque la variable car est l'un d

Search related