[PDF] [PDF] Java : Programmation graphique - Cours, tutoriaux et travaux

L'op rateur ] sert d'acc s d'op rateur d'acc s aux l ments d'un tableau Tab classe Carr e, Cercle, Ligne etc seront des classes d riv es de la classe Forme



Previous PDF Next PDF





[PDF] électrons

Interaction commence à 1 02 MeV et est importante et/ou prédominante pour énergies > 6 à 10 MeV ◦ Le photon est transformé dans un électron et positon



[PDF] LAPAROSCOPIE EN CHIRURGIE, GYNÉCOLOGIE ET - Karl Storz

GYNÉCOLOGIE 18 GYN-ACC 371-406 ACCESSOIRES POUR UROLOGIE LAPAROSCOPIQUE elle décrit un demi-cercle d'un rayon de 1,5 à 3 cm Seule la pointe de rateur des conditions de travail commodes et déten- dues même au 



[PDF] Java : Programmation graphique - Cours, tutoriaux et travaux

L'op rateur ] sert d'acc s d'op rateur d'acc s aux l ments d'un tableau Tab classe Carr e, Cercle, Ligne etc seront des classes d riv es de la classe Forme



[PDF] MATHÉMATIQUES - Numdam

2 nov 2020 · valeur que si elle était calculée tout le long d'un cercle ayant pour centre bas du cercle géné- rateur passant par M ; son lieu dans le plan P est la base renze finite ( Extr des Rend della R Acc dei Lincei) Rome, 1896



[PDF] Productfolder 2019pdf

Cercle acc l rateur sous volant type GHOST Andere mogelijkheden: Montage levier combin acc l rateur et frein • Gaspedaal links P dale 



[PDF] Communications ACC 1-2019 / 20 Juillet 2019

fédéral Celles provenant des cercles de gauche reposent avant tout sur des com - rateurs qui entrent au service de la Confédération à partir du 1er mai 2019



[PDF] Guide du LHC

une collision est de 14 TeV, ce qui en fait l'acc l rateur de parti- cules le plus puissant du Le LHC n'est pas un cercle parfait Il est constitu de huit arcs et

[PDF] Cercle accelerateur par cercle

[PDF] CERCLE AERONAUTIQUE LOUIS MOUILLARD Sylvain FLOIRAT

[PDF] Cercle Affirmations Positives

[PDF] Cercle AN OZEGANED « LES LUTINS » Locoal - Anciens Et Réunions

[PDF] Cercle Archi photo membres 2014-2015

[PDF] Cercle C.R.E.D.O - Guide mesure et recette - Fonds De Couverture

[PDF] Cercle celtique "Korollerien Kraon" (Crozon)

[PDF] Cercle Celtique de Fouesnant - Anciens Et Réunions

[PDF] CERCLE CERVANTÈS-CAMOENS FACULTÉ DES LETTRES - Mexique Et Amérique Centrale

[PDF] Cercle chromatique - E

[PDF] cercle circonscrit a un triangle rectangle - Anciens Et Réunions

[PDF] Cercle circonscrit à un triangle rectangle I. Cercle circonscrit à un

[PDF] cercle circonscrit au triangle - Anciens Et Réunions

[PDF] Cercle circonscrit au triangle rectangle 62 Carrés - Radio

[PDF] Cercle Commercial Suisse - franzoesisch-lernen

TouraivaneT?l:?33? 49188538Fax:?33? 491885 18??33? 49188510Touraivane?gbm?esil?uni v?mr s?f rhttp:??gbm?esil?univ?mrs?fr? tour ai

LelangageJavaVersion V?0Mise ? jour : 5 juin 1998

ESILEcole Sup?rieure d?Ing?nieurs de LuminyD?partement G?nie Bio M?dical 2

Toura?vane

Tabledesmati?resIJava:Lelangage91Des pro c?dures aux ob jets152C?est quoi Java?213El?ments de base234Op ?rations et expressions295Les structures de contr?le396Classes et Ob jets457H?ritage558Les interfaces639Packages6710 Exceptions7311 Tableaux et cha?nes de caract?res7912 Conversions et promotions8713 Classes imbriqu?es9114 La hi?rarchie des classes9515 Entr?es?Sorties9716 Serialization11717 Compression des donn?es12318 Le package java?util12519 Les typ es13320 Programmation syst?me14121 Programmation dynamique14722 Threads155IIJava:Programmationgraphique17123 Applets et applications autonomes17524 D?couvrir la programmation graphique18525 Gestion des ?v?nements1913

4TABLE DES MATI?RES

26 Les widgets21527 Ranger les widgets24728 Dessiner sur une fen?tre graphique26329 Couleurs et Fontes27130 Images27731 Le son289IIIJava:JFC29132 JavaFoundation Class29533 Les comp osants Swing30534 Gestion des ?v?nements swing30735 Transfert de donn?es30936 Java2D31737 Java3D31938 Quelques classes Swing321IVJava:Programmationavanc?e33139 Programmation r?seau33540 App el de m?tho des distantes ?RMI?35341 Intro duction aux bases de donn?es35742 Intro duction ? JDBC35943 Co de natif ?JNI?36544 Corba379VJava:Beans38145 Intro duction ? Java Beans385VIJava:Annexes38746 javado c39147 Le langage SQL39548 Fromat jar et zip397

Toura?vane

TABLE DES MATI?RES5

VI IJava:Travauxdirig?s399VIIIJava:Corrig?s421IXJava:Travauxpratiques461XJava:Corrig?sdestravauxpratiques471

Toura?vane

6TABLE DES MATI?RES

Toura?vane

Avantprop osCe do cument est une s?rie de notes de cours sur le langageJava? Il s?adresse aux ?tdudiants ayant une b onne pratique d?unlangage de programmation pro c?durale? La connaissance d?un langage orient? ob jet n?est pas n?cessaire?Pour r?aliser ces notes de cours? je me suis bas? sur les do cuments suivants :Sp ?ci?cation du langage Java?voir 39?3?la do cumentation de jdk ?voir 39?3? qui contiennent les descriptions des API et de nombreuses sp ?ci?cationsle tutorial de jdk ?voir 39?3?le langage Java?voir 39?3?Java in a NutShell ?voir 39?3?Java distributed Computing ?voir 39?3?Exploring Java?voir 39?3?JDBC ?voir 39?3?certains article de JavaWorld ?voir 39?3? et Java Connection ?voir 39?3?La pr?sentation de ces notes de cours o ccup entenviron 100 heures de cours?TD?TP :

Le langage30 heures de cours et 20 heures de TD

La programmation graphique30 heures de TP

La programmation avanc?e15 heures de TP

7

8TABLE DES MATI?RES

Toura?vane

Premi?repartieJava:Lelangage9

12TABLE DES MATI?RES

Toura?vane

TABLE DES MATI?RES13

Toura?vane

14TABLE DES MATI?RES

Toura?vane

1?Despro c?duresauxob jetsSommaire

La programmation par ob jets est une technique de programmation? Un langage de programmation qui supp orte un stylede programmation particulier fournit des facilit?s qui p ermettent d?utiliser ce style de mani?re ais?e ainsi que des garde?fousn?cessaires au contr?le du style de programmation? Ainsi?Javaest un langage adapt? ? la programmation ob jet? m?me si ?au prixd?un plus gros e?ort?? les langages pro c?duraux comme C ou Pascal p ermettent ?galement d?utiliser ce style de programmation?1?1Laprogrammationpro c?duraleLa programmation pro c?durale est celle que vous connaissez? Dans ce style de programmation? l?accent est mis sur l?ex?cutiondu programme? Les facilit?s de base o?ertes par les langages qui supp ortentcestyle de programmation sont les fonctions quiadmettent des arguments et qui renvoient des valeurs? Comme exemple? consid?rons la fonction qui calcule lepgcdde deuxentiers p ositifslong pgcd?long x? long y? {

unsigned long r ;if?x x = pgcd?4356? y? ;???}15

161?3? Flexibilit?

1?2Programmationmo dulaireAvec l?augmentation de la taille des programmes? la programmation pro c?durale atteint ses limites ; la programmation mo d?ulaire voit alors le jour? Ce style de programmation utilise les princip es d?encapsulation des donn?es? L?ensemble des pro c?duresou fonctions d?p endantes et les donn?es qu?elles manipulentsont regroup ?s dans un mo dule? Un programme est alors constitu?de plusieurs mo dules et la communication inter?mo dules se fait ? traversune interface ; les d?tails d?implantation de chaquemo dule sontcach?s aux autres mo dules? Imaginons qu?il faille r?aliser un programme dans lequel on utilise des piles? Un desmo dules de ce programme se charge de l?implantation d?une pile et les d?tails de cette implantation devant ?tre ignor?s par lesautres mo dules? L?interface que fournit ce mo dule est constitu?e d?un ?chier ?par exemple ? pile?h ???? Interface du module PILE de caract?res ?pile?h?

void empiler?char? ; char depiler?void? ;

?? Fin de l?interfaceLes utilisateurs de ce mo dule ignorentparfaitement les d?tails d?implantation de cettepile? En particulier? s?agit?il d?untableau ou d?une liste cha?n?e ? Seul le programmeur de ce mo dule le sait? L?utilisation de ce mo dule par d?autres se fait alorsde la mani?re suivante :?? Module XXX utilisant une pile de caract?re

#include ?pile?h?void une_fonction?? {short c1? c2 ;???empiler??a?? ;empiler??b?? ;???c1 = depiler?? ;if ?c1 == ERREUR? erreur?? la pile est vide ?? ;c2 = depiler?? ;if ?c2 == ERREUR? erreur?? la pile est vide ?? ;???}?? Fin du module XXXCette premi?re tentativedemodularit?ne p ermet l?utilisation que d?une seule pile? Il est souvent n?cessaire de disp oser deplusieurs piles dans un m?me programme? La solution consiste ? fournir une interface plus sophistiqu?e dans laquelle un nouveautyp e de donn?e app el?id_de_pilesera d??ni??? Interface du module PILE de caract?res

typedef id_de_pile ???id_de_pile creer_pile?? ;void empiler?id_de_pile? char? ;char depiler?id_de_pile? ;void detruire_pile?id_de_pile? ;?? Fin de l?interfaceId?alement? on aurait souhaiter que le typ e abstraitid_de_pilese comp orte comme un typ e pr?d??ni? Or? cela n?est pasle cas : il appartient ? l?utilisateur de ce mo dule de s?assurer de la b onne utilisation? En particulier? celui?ci devra allouer lesvariables n?cessaires p our manipuler ces piles? s?assurer qu?elles sont d?sallou?es? Il n?existe pas de convention claire p our lespassages des arguments de typ e d??nis par un mo dule particulier? Bref? on ne disp ose pas d?aide ? la programmation??? Module XXX utilisant une pile de caract?re

#include ?pile?h?

void une_fonction?void? {id_de_pile p1? p2 ;char c1? c2 ;???p1 = creer_pile?? ;?? p2 non cr??eempiler?p1? ?a?? ;c1 = depiler?p1? ;if ?c1 == EOF?erreur?? la pile est vide ?? ;detruire_pile?p2? ;p1 = p2 ;?? p2 utilis?e apr?s sa destruction?? p1 non d?truit

???}?? Fin du module XXX1?3Flexibilit?

Toura?vane

1?4? Abstraction de donn?es17

Une fois un typ e de donn?e abstrait d??ni? il interf?re tr?s p eu avec le reste de programme ; p ourtant toute mo di?cation ouenrichissementdecetyp e de donn?e entra?ne une refonte compl?te du programme? Imaginons que l?on d??nit un typ e de donn?eforme?enum type {cercle? triangle? carree} ;

typedef struct forme {point centre ;type t ;} forme ;Le programmeur devra conna?tre toutes les formes manipul?es p our implanter la fonction dessiner :void dessiner?forme f? {

switch?t?type? {case cercle :???break ;case triangle :???break ;case carree :???break ;}}Ainsi? la suppression d?une forme ou l?a jout d?une nouvelle forme force le programmeur ? reprendre l?ensemble des fonctionset ? les adapter? Programmation par ob jets : l?h?ritage Le m?canisme d?h?ritage de la programmation ob jet app orte une solution?l?gante au probl?me soulev? dans la section pr?c?dante? On d??nit tout d?ab ord une classe qui p oss?de les propri?t?s g?n?ralesde toutes les formes :class forme {

private point centre ;???public point position?? { return center ; }public void deplacer?point vers? { center = vers ; dessiner?? ; }

public abstract void dessiner?? ;public abstract void tourner?int? ;???}Les fonctions dont l?implantation ?ou la mise en o euvre? est sp ?ci?quep our chaque forme sont marqu?es par le mot cl?abstract?Pour d??nir e?ectivement ces fonctions virtuelles? on commencera par d??nir une classe d?riv?e de la classe forme :class cercle extends forme {

private int rayon ;public void dessiner?? { ??? }public void tourner?int? { }}1?4Abstractiondedonn?esLe supp ort p our la programmation par abstraction de donn?es consiste ? fournir des facilit?s p our d??nir des op ?rations

p our un typ e d??ni par l?utilisateur? Contrairement aux typ es pr?d??nis? aucun syst?me ne p eut d??nir? par d?faut? les fonctionsd?initialisation et de destruction des typ es d??nis par le programmeur ; il lui appartient donc de fournir ces fonctions?Consid?rons un typ e nouvellement d??ni ?que l?on app ellera tableau? qui est constitu? de sa taille et d?un p ointeur vers les?l?ments du tableau? La cr?ation d?un ob jet de typ e tableau se fait en d??nissantunevariable de la classe tableau? Que doit?oncr?er ? l?initialisation ? Faut?il allouer la place n?cessaire p our co der le tableau ? etc? Les r?p onses ? ces questions ne p euvent?tre fournies que par l?utilisateur ayant d??ni le typ e tableau?Une premi?re solution consiste ? se d??nir une fonctioninitque l?utilisateur se forcera ? app eler avant toute utilisation d?unob jet d?un typ e utilisateur?class tableau { private int [] t ; public void init?int taille? ;

???};void une_fonction?? { tableau t ;???t?init?2? ;?? n?utiliser t qu?apr?s son initialisation}

Toura?vane

181?5? Les concepts de la programmation par ob jets

Cette solution est p eu agr?able etJavafournit un m?canisme plus astucieux p our faire l?initialisation : l?app el de la fonctiond?initialisation se fait automatiquement ? la d??nition de la variable? La fonction d?initialisation se nommeconstructeur?Parcontre? contrairement aux langages de programmation ob jet habituels? il n?est pas n?cessaire de fournir undestructeurp our lesob jets d?un typ e d??ni par l?utilisateur? Cette destruction se fera automatiquement et une r?cup ?ration m?moire se charge derestituer au syst?me la place m?moire rendue libre?class tableau {

private int [] t ;tableau?int s? {if ?s<=0? erreur????? ;t = new int[n] ;};}1?5Lesconceptsdelaprogrammationparob jetsLesconceptscl?s dela programmationorient?eob jets sont:lesob jetsqui sontdes collectionsd?attributsetm?tho desasso ci?es? les messages qui serventdemoyen de communication entre ob jets les classes qui servent ? d??nir des mo d?les d?ob jets?l?h?ritage qui fournit un m?canisme puissant et naturel p our organiser et structurer les programmes?1?5?1Qu?est?cequ?unob jet ?Comme leur nom l?indique? les ob jets sont au c?ur de la programmation par ob jet? Dans la vie courante? le monde r?el quinous entoure est constitu? d?ob jets? Ces ob jets p oss?dent deux caract?ristiques: ils sont dans un certain ?tat et p oss?de uncomp ortement?Les ob jets dont nous allons ?tudier sont similaires aux ob jets du monde r?el qui nous entoure en ce sens? qu?eux ?galement?sont dans un certain ?tat et p oss?dent un certain nombre de comp ortements? L??tat d?un ob jet est repr?sent? par des attributset les comp ortements sont d??nis par des m?tho des?Un objet est une collection d?attributs munis de m?tho desOn p eut repr?senter les ob jets du monde r?el par des ob jets informatiques comme c?est le cas dans un programme d?animation?On p eut ?galement repr?senter des concepts abstraits ; une manipulation graphique est un ob jet dans un environnement graphique?Un ob jet qui mo d?lise un ob jet du monde r?el ?un v?lo? par exemple? p oss?de des attributs qui indiquent l??tat de celui?ci?la vitesse? la cadence de p ?dalage etc??? Le comp ortement de cet ob jet est constitu? par des m?tho des ?acc?l?ration? freinage?changement de vitesse? etc??? Les seules actions p ossibles sur les ob jets sont celles d??nies par les m?tho des? Les changementsd??tat ?mo di?cation des variables d?attributs? ne sont p ermis qu?? travers les m?tho des? Cette mani?re de prot?ger les attributspar des m?tho des s?app elle encapsulation?L?encapsulation des donn?es a p our ob jectif de cacherles d?tails d?implantation d?un ob jetp our les autresob jets? Pourreprendre l?exemple du v?lo? lorsqu?on change de vitesse? il n?est nullement n?cessaire de conna?tre le m?canisme du levier devitesse ; la seule chose qui nous int?resse? c?est de savoir commentchanger de vitesse? De m?me? il n?est pas utile de conna?trecomme un ob jet ou une classe d?ob jets est implant?? il nous sut juste de savoir quelles m?tho des utiliser?Les avantagesde l?encapsulationLes avantages de l?encapsulation sont de deux sortes :Mo dularit?? L?implantation d?un ob jet p eut ?tre r?alis?e et maintenue ind?p endamment de la r?alisation et de l?implan?tation des autres ob jets?Masquage de l?information? Les ob jets communiquententre eux ? travers une interface publique? Mais chaque ob jet p eutconserver des caract?ristiques priv?es ?attributs ou m?tho des? qui p euvent ?tre chang?es ? tout moment sans p erturb erles autres ob jets?Quoique id?ale? le concept d?ob jets dont les attributs ne sont accessibles qu?? travers les m?tho des est un concept b eaucoup troprigide? Pour des raisons d?ecacit?? les ob jets informatiques ne sont comp os?s uniquement d?attributs accessibles par d?autresob jets ? travers des m?tho des ?attributs priv?s?? Certains attributs p ourront ?tre acc?d?s directement par les autres ob jets?Dans b eaucoup de langages ob jets? un ob jet p eut d?cider de rendre publics ?donc accessibles sans passer par des m?tho des?certains de ses attributs? Ces attributs p euvent alors ?tre ?visibles? de l?ext?rieur et ?plus grave? p euvent ?tre mo di??s?A l?opp os?? toutesles m?tho desne sontpasforc?ment utilisables parles autres ob jets? Un ob jet p eutchoisir decachercertaines m?tho des i?e? les rendre priv?es? Bref? dans les langages de typ e C++? les ob jets p euvent rendre publiques des attributset rendre priv?es des m?tho des?1?5?2Qu?est?cequ?unmessage ?Un ob jet isol? dans l?univers n?a que p eu d?int?r?t ; il ne devientint?ressant que lorsqu?il r?agit avec d?autres ob jets? Il en estde m?me p our les ob jets informatiques qui communiquententre eux en s?envoyant des messages? Lorsqu?un ob jet A veut fairee?ectuer ? l?ob jet B une de ses m?tho des ?m?tho des de B?? il envoie ? B un message?Certains messages doivent contenir des informations compl?mentaires p our r?aliser la tâche demand?e? Le message changer devitesse ? notre fameux v?lo doit s?accompagner de l?information lui sp ?ci?ant s?il faut passer ? la vitesse sup ?rieure ou inf?rieure?Ces informations compl?mentaires accompagnent un message grâce aux param?tres de la m?tho de?

Toura?vane

1?5? Les concepts de la programmation par ob jets19

Un message est donc constitu? de trois parties :l?ob jet auquel on s?adressele nom de la m?tho de ? r?aliserles ?ventuels param?tres n?cessaires ? la m?tho de?les pr??conditions et les p ost?conditions?1?5?3Qu?est?cequ?uneclasse ?Dans la vie courante? il existe plusieurs ob jets de m?me nature ; votre v?lo n?est qu?un v?lo parmi tant d?autres? Dans laterminologie de la programmation orient?e ob jet? on dira que votre v?lo est une instance de la classe des ob jets connus sous lenom de v?lo? Tous les v?los ont des caract?ristiques communes mais p euvent ?tre dans des ?tats di??rents?De m?me? dansla programmationorient?eob jet? onp ourraavoirplusieursob jetsdem?me nature?unmoule communp ermettant de tirer partie des caract?ristiques communes des ces ob jets? Ce moule est app el? classe?Une classe est un prototyp e qui d??nit des attributs et des m?tho des communes ? tous les objets d?une certaine nature?Les valeurs des attributs d?instances ?attributs d?une instance d?une classe d?ob jets? sont distingu?es? Ainsi? une fois la classecr??e? il faut cr?er une instance de cette classe p our en faire un ob jet e?ectivement utilisable? Lors de la cr?ation d?une instanced?une certaine classe? on cr?e un ob jet de la nature sp ?ci??e et le syst?me alloue de la m?moire p our les attributs d?instances

d??nis dans la classe? C?est alors que l?on p ourra faire app el aux m?tho des de cet ob jet p our r?aliser quelque chose?Contrairement aux attributs d?instance? les ob jets d?une m?me classe utilisent la m?me m?tho de d?instance? Il n?y a pas unexemplaire de chaque m?tho de p our chaque instance d?une classe?Outre les attributs d?instance et des m?tho des? les classes p euvent ?galement d??nir des attributs de classes et de m?tho desde classes? Ces attributs et m?tho des de classes p euvent ?tre accessibles soit par l?interm?diaire d?une instance de classe? soitdirectementparl?interm?diaire de la classe elle?m?me ?il n?est pas n?cessaire de disp oser d?une instance d?une classe p our utiliserdes attributs et m?tho des de classes??Le syst?me ne cr?e qu?un seul exemplaire des attributs de classe et toutes les instances d?une m?me classe partagent cesattributs? Pour en revenir ? notre fameux v?lo? supp osons que tous les v?los aient un m?me nombre de vitesse? Il serait alorsinecace de d??nir un attribut par instance de v?lo co dant cette information sur le nombre de vitesses ?chaque instance disp oseraitd?une copie de cette variable d?attribut?? Dans de ce cas? il serait naturel ?et surtout plus ecace? de d??nir un attribut de classequi contientcenombre de vitesses ; toutes les instances partageantlam?mevariable? Une mo di?cation par une instance de cetteclasse d?un attribut de classe? entra?nerait la mo di?cation p our toutes les autres instances de cette classe?L?int?r?tdesclasses?Comme nous l?avons dit plus haut? les ob jets p ermettentune programmation mo dulaire et lemasquage d?informations? Les classes p ermettent la r?utilisabilit?? Une m?me classe ?p our p eu qu?elle soit bien conçue?serautilis?e tr?s souvent par d?autres ob jets? dans d?autres programmes?1?5?4Qu?estcequel?h?ritage ?Les ob jets sont d??nis ? partir des classes ; la connaissance de la classe? ? laquelle appartient un ob jet? p ermet de conna?treb eaucoup de ses caract?ristiques? M?me si nous ne connaissons pas avec une pr?cision absolue un v?lo particulier? le simple faitqu?il appartienne ? la classe des v?los nous p ermet de savoir qu?il p oss?de deux roues? un guidon? etc?DESSIN ! ! !Dans les langages orient?s ob jets? il est p ermis de d??nir des classes en fonction d?autres classes? Par exemple? les v?los decourse? les v?los tout terrain et les tandems sont des classes d?ob jets qui partagent des caract?ristiques communes ; ce sont tousdes v?los avec quelques caract?ristiques suppl?mentaires? On dira que les v?los de course? les v?los tout terrain et les tandemssont sous?classes de la classe des v?los et que la classe des v?los est une classe de base des classes de v?los de course? de v?lostout terrain et des tandems?

Toura?vane

201?5? Les concepts de la programmation par ob jets

Fig?1?1: H?ritageChaque sous?classe h?rite de toutes les caract?ristiques de la classe p ?re : les attributs et les m?tho des? Les sous?classes ne

sont condamn?es ? ne contenir que les seules caract?ristiques de la classe p ?re ; elles p euvent s?enrichir de nouveaux attributs etde nouvelles m?tho des? Ces sous classes sont donc d??nies par les attributs et les m?tho des de la classe p ?re? mais ?galement desattributs et m?tho des propres ? la sous classe?Les sous?classes p euvent ?galement mo di?er les m?tho des h?rit?es d?une classe p ?re et prop oser une version sp ?cialis?e decette m?tho de? L?h?ritage ?comme dans la vie courante? se propage de g?n?ration en g?n?ration? Une classe p ?re p eut elle?m?me?tre une sous?classe d?une autre classe et ainsi de suite??? La hi?rarchie des classes p eut ?tre aussi profond que l?on souhaite? Lesattributs et les m?tho des sont transmis vers d?une classe vers la sous?classe et ce autant de fois que n?cessaire?Lesavantagesdel?h?ritage?Lessous?classesprop osentdescomp ortementssp ?cialis?sdanscertainscas?toutenconservant certains autres h?rit?s de la classe p ?re? A travers l?h?ritage? le programmeur p eut r?utiliser un m?me co de dans descirconstances diverses?Le programmeur p eut d??nir des sup er classes abstraites qui d??nissent des comp ortements g?n?riques? Ces comp ortementspeuvent?treimplant?s? partiellementimplant?s ou m?me pas dutoutimplant?s? Lorsquedescomp ortementsg?n?riquesnesont pas implant?s? il appartient ? d?autres de d??nir des sous?classes de cette sup er classe dans lesquelles des comp ortementssp ?cialis?s seront sp ?ci??s?

Toura?vane

2?C?estquoiJava?Sommaire

Vous avez sûrementd?j? entendu parler du langageJava? Le tapage m?diatique autour du langageJavaet d?Internet laisse?p enserque ce langageest uniquementconçupourr?aliserdespagesWEBinteractivesetsophistiqu?es?Javaestsouventasso ci? aux fameux applets que l?on voit sur des pagesWEB; applets qui sont g?n?ralement des animations graphiques? Cettepr?sentation ?nit par classer le langageJavaparmi les divers langages d?di?s aux pages WEB tels VBScript et JavaScript? Cesderniers sont conçus p our r?aliser des programmes devant ?tre encapsul?s dans du co deHTMLde mani?re ? r?aliser des pagesinteractives? et ce? sans avoir ? utiliser lesCGI?VBScriptetJavaScriptsontintimement li?s aux pagesWEBet aux browser depagesHTML: ils ne p ermettent pas de cr?er des applications autonomes i?e? ind?p endantes des pagesWEB?Quant?Java? il s?agit d?un langage de programmation ? partenti?re? Il a ?t? invent? dans les lab oratoiredeSUNparBill Joy et James Gosling? L?ob jectif premier de ce langage ?tait d??nir un langage de programmation p ortable sur toutes lesplates?formes existante ?1990?? Avec l?int?r?t grandissantd?Internet dans les ann?es 1993? ce langage? de par sa p ortabilit?? sem?tamorphose en langage d?di? ? Internet? Dans les ann?es 1993?SUNdi?use le premier browserHotJavaqui p ermet d?ex?cuterdes applets Java i?e? des programmes Java encapsul?s dans des pagesWEB? L?attrait des appletsJava? conduitNetScapeetMicroSoft? inclure dans leur propre browser? les comp osants p ermettant d?ex?cuter les applets? Et c?est par le biais d?Internet?que le langageJavaa connu un succ?s qu?on p eut quali?er de foudroyant? En e?et? bien p eu de langages informatiques ont connuun tel succ?s en si p eu de temps?Les concepteurs deJavaquali?ent leur langage de simple? orient? ob jet? familier? distribu?? interpr?t?? robuste? sûre? p ortable?dynamique et multithread?2?1LelangageJavaestsimple?familieretorient?ob jetJava est un langagesimple car il n?utilise qu?un nombre restreintde nouveaux concepts? Sa syntaxe est tr?s pro ches dulangageC? ce qui rend familier aux programmeursCetC++?Java ?pure le langageCetC++de toutes les scories sur lesquelsse blessent bien des programmeurs et qui o ccup ent une partie non n?gligeable du temps de d?velopp ement? Par exemple?lesstructetunionn?existent plus? seul le concept de classes existe enJava?Bonne nouvelle p our les programmeurs d?butants : il n?y a plus de p ointeurs et des manipulations les concernant ; un gainen temps imp ortant en d?coule lors des d?velopp ement : plus de p ointeurs adressant des emplacements farfelus !Plus de probl?me de gestion de la m?moire?Javase charge ?presque? de restituer au syst?me les zones m?moire inaccessibleset ce sans l?intervention du programmeuretc?Il n?a plus de pr?pro cesseur dansJava; par exemple?le co de conditionnel p our debb oguer se fait avec des tests sur des variables static et ?nal? Lors de la pro duction du co de?les instructions inutiles seront ?limin?es?DufaitqueJavaestind?p endantdesplates?formes?iln?estplusn?cessaired?crireduco ded?p endantdesdiversesarchitectures?21

222?6? Le langage Java est dynamique et multithread

Les fameux ?chiers ? ?h ? n?ont plus de raison d??tre ; le co de pro duit contient toutes les informations sur les typ es dedonn?es manipul?s?Java est un langage orient? ob jet : un programme Javaestcentr? compl?tement sur les ob jets et fournit un ensemble pr?d??ni declasses facilitant la manipulation des entr?es?sorties? la programmation r?seau? syst?me? graphique? Except? les typ es de donn?esfondamentaux? tout est ob jet ! Seule l?h?ritage simple existe en Java? p our utiliser l?h?ritage multiple? on utilisera les interfaces?2?2LelangageJavaestdistribu?Conçu p our d?velopp erdes applications en r?seaux? les manipulations des ob jets distantsou lo caux se fontdelam?memani?re? Par exemple? l?ouverture d?un ?chier lo cal ou distant se programme de mani?re identique? La classe So cket p ermet laprogrammation d?applications Client?Serveur de mani?re ais?e?2?3LelangageJavaestinterpr?t?Pour ?tre p ortable? un programme Java n?est pas compil? en co de machine ; il est transform? en co de interm?diaire interpr?t??De plus? il n?y pas plus de phase d??dition de liens ; les classes sontcharg?es en fonction des b esoins lors de l?ex?cution et ce demani?re incr?mentale?2?4LelangageJavaestrobusteetsûrLe langage Java est fortementtyp ? ; il ?limine bien des erreurs d?incoh?rence de typ e ? la compilation? La suppression de lamanipulation des p ointeurs p ermet ?galement de r?duire de mani?re imp ortante les erreurs? Un glaneur de m?moire rendu librep ermet de d?charger le programmeur d?une gestion fastidieuse de la m?moire?Destin? p our des applications r?seaux? la s?curit? dans Java est un asp ect primordial? Le fait de pas p ouvoir manipuler lespointeurs et donc d?acc?der ? des zones m?moire sensibles diminue fortement l?intro duction des virus informatiques?Java ne supprime pas tous les probl?mes de s?curit? mais les r?duit fortement? Un ensemble de garde fous sont plac?s entrel?interpr?tation du co de Java et la r?alisation de l?instruction ?Veri?er? Class Loader? Security Manager? p our contr?le au mieuxl?ex?cution du co de Java?2?5LelangageJavaestp ortableetind?p endantdesplates?formes:Le co deinterm?diairepro duitestind?p endantdes plates?formes : il p ourra?treex?cut?sur toustyp esdemachines etsyst?mespourpeuqu?ilsp oss?dentl?interpr?teurdeco deJava?M?melaprogrammationgraphique?r?seauetsyst?meesttotalement ind?p endant des machines et syst?mes? Les probl?mes de ? p ortage ? qui o ccup e une partie non n?gligeable du tempsde d?velopp ement des logiciels dispara?t ainsi?2?6LelangageJavaestdynamiqueetmultithreadLe langage Java est dynamique et s?adapte ? l??volution du syst?me sur lequel il s?ex?cute? Les classes sontcharg?es en furet ? mesure des b esoins? ? travers le r?seau s?il le faut? Les mises ? jour des applications p euvent se faire classe par classe sansavoir ? recompiler le tout en un ex?cutable ?nal?De nos jours? les applications p oss?dent un haut degr? de parall?lisme : il faut p ouvoir ?couter une musique? tout en voyantune animation graphique etc? Java p ermet le mutlithreading de mani?re simple?

Toura?vane

3?El?mentsdebaseSommaire

3?1Lejeudecaract?resUnico deLe langageJavaest destin? ? ?tre utilis? surInternet? Il est donc naturel que celui se pr?o ccup e des jeux de caract?resinternationaux? Le jeu de caract?res utilis? dansJavaest celui connu sous le nom deUnicode? Ce jeu de caract?re est co d? sur 16bits ?au lieu de 7 bits du co de ASCI I? et 8 bits p our Latin?1?? les 256 premiers caract?res sont ceux du jeu de caract?res Latin?1?Ce jeu de caract?res ?tendu est pr?vu p our co der l?ensemble de tous alphab ets internationaux ?japonais?chinois?arabe?hindi?etc??Pour l?heure? ne disp osant pas d??diteurs de texte p ermettant de visualiser le jeu de caract?re Unico de? les caract?res nonLatin?1 seront not?s par des s?quences d??chapp ement de la forme\unnnn? Ces caract?res p euvent ?tre utilis?s dans presquetoutes les parties d?un programmeJava: commentaire? nom de variables ou m?tho des? nom de classes etc?3?2Lescommentaires3?2?1LescommentairesmultilignesTout programme ?grand ou p etit? simple ou complexe? contient ?ou devrait contenir? des commentaires? Ils ont p our butd?expliquer ce qu?est sens? faire le programme? les conventions adopt?es et tout autre information rendant le programme lisible? soi m?me et surtout ? autrui?Javadisp ose de trois typ es de commentaires : lescommentaires multilignes?lescommentairesligneset lescommentaires de typedocumentation? On p eut utiliser n?imp orte quel caract?re Unico de dans ces trois typ es decommentaires?23

243?4? Les typ es de donn?es ?l?mentaires

D?butFinAlphab et

0020007ELatin ?US?

00A000FFLatin?1 ?Suppl?ment?

05D005EAH?breu

0B800BFFTamoul

4E009FFFLes id?ogrammes uni??s ?chinois? jap onais? cor?en? ??

Tab?3?1: Le standard Unico de3?2?2LescommentaireslignesLescommentaires lignesd?butentavec les symb oles ???? et qui se terminent ? la ?n de la ligne? Ils sont utilis?s p our descommentaires courts qui tiennent sur une ligne??? Ce programme imprime la cha?ne

??de caract?res ? bonjour ? ? l??cran???Uncommentaire multilignecommence par les caract?res ??*? et se terminentpar?*??? A l?int?rieur de ces d?limiteurs toutesuite de caract?res est valide ?sauf ?videmment?*?????* Ce programme imprime la cha?ne

de caract?res ?bonjour? ? l??cran*?3?2?3Lado cumentationEn?n? un texte encadr? entre ??**?et?*?? servira ? pro duire automatiquement?avec l?outiljavadoc? la do cumentation sousformeHTML? l?image de la do cumentation ocielle deSUN? Ces commentaires servent ? do cumenter les classes que l?on d??nit?Javaexige donc qu?ils ?gurentavant la d??nition de la classe? d?un membre de la classe ou d?un constructeur? Vous trouverez enannexe ?46?? des informations plus d?taill?es surjavadoc??** Documentation de la classe ?

*?3?3Lesidenti?cateursComme dans tout langage de programmation? lesidenti?cateursservent ? d?signer desvariables?desconstantes? des noms dem?tho des etc? On app elle identi?cateur toute suite de lettres ou chi?res commençant par une lettre ; une lettre est un caract?realphab ?tique ou le caract?re ?_? ou le caract?re ?$?? Voici des exemples d?identi?cateurs :totototo123_toto$toto\u5678totoParmi tous les identi?cateurs? il en existe certains qui sont r?serv?s ?voir ?gure 3?2?i?e?qu?ils ont un sens pr?d??ni p our lelangageJavaet que le programmeur ne p eut utiliser comme identi?cateurs?Outre ces mots cl?s? il existe trois identi?cateurs ?qui sont des constantes symb oliques? sont ?galement r?serv?s :null?trueetfalse?3?4Lestyp esdedonn?es?l?mentairesLe langageJavaest un langage fortementtyp ? ; chaque variable et chaque expression p oss?de un typ e bien d??ni? et ce? d?sl??criture du programme? La donn?e de ces typ es p ermet de restreindre les valeurs qu?une variable est susceptible de contenir etde donner une signi?cation aux op ?rations? Les typ es de donn?es deJavasont divis?s en deux grands group es : lestypes primitifs?ou de base? et le typ er?f?rence? Les typ es primitifs sont constitu?s des typ es num?riques ?typ e entier et typ e ?ottant? et dutyp e b o ol?en?Le typ e entier se comp ose des typ es suivants :byte:les entiers co d?s sur 8 bits ?de ?128 ? 127?

Toura?vane

3?5? Les constantes litt?rales25

abstractdoubleintsuperbooleanelseinterfaceswitchbreakextendslongsynchronizedbytefinalnativethiscasefinallynewthrowcatchfloatpackagethrowscharforprivatetransientclassgotoprotectedtryconstifpublicvoidcontinueimplementsreturnvolatiledefaultimportshortwhiledoinstanceofstaticTab?3?2: Mots cl?s r?serv?schar:les caract?res Unico de co d?s sur 16 bits ?de\u0000?\uffff?short:les entiers co d?s sur 16 bits ?de ?32768 ? 32767?int:les entiers co d?s sur 32 bits ?de ?2147483648 ? 2147483647?long:les entiers co d?s sur 64 bits ?de ?9223372036854775808 ? 9223372036854775807?Le typ e ?ottant se comp ose des typ es suivants :float:les nombres en virgule ?ottante sur 32 bits ?IEEE 754?1985?double:les nombres en virgule ?ottante sur 64 bits ?IEEE 754?1985?Le typ ebool?en?boolean? est constitu? des constantes litt?ralestrueoufalse?Le typ er?f?rencese d?comp ose en trois sous typ es : le typ eclasse?letyp einterfaceet le typ etableau?3?5Lesconstanteslitt?ralesNous avons pr?sent? les divers typ es de donn?es ?l?mentaires du langageJavasans dire comment ?crire une constante del?un de ces typ es dans un programmeJava? Nous allons ? pr?sent donner la syntaxe utilis?e dans le langageJavap our d?signerdes constantes litt?rales ?3?5?1Constantesb o ol?ennesLes seules constantes p ossibles sont les identi?cateurstrueetfalse?3?5?2Constantesenti?resLes constantes enti?res p euvent s?exprimerEn notation d?cimale :123??123? etc? Except? le z?ro? aucune constante en notation d?cimale ne commence par0?En notation o ctale avec un0en premi?re p osition :0123En notation hexad?cimale avec les caract?res0xou0Xen premi?re p osition :0x1b?0X2c?0X1B?0X2C? etc?Le typ e d?une constante enti?re est toujours de typ e int? Les suxesLetlp ermettent de pr?ciser qu?une constante enti?re estde typ elong?1L? 0x7FFL? 0x0fffffffffffffffL? 16L? etc?repr?sentent des constantes enti?res de typ e long?3?5?3Constantes?ottantesUne constante ?ottante se pr?sente sous la forme d?une suite de chi?res ?partie enti?re?? un p oint qui joue le r?le de virgule?une suite de chi?res ?partie fractionnaire?? une des deux lettreseouE??ventuellement le signe+ou?et suivi d?une suite dechi?res ?valeur absolue de l?exposant?? La partie enti?re ou la partie fractionnaire p eut ?tre omise ?pas les deux? ; de m?me lepoint ou l?exp osant p eut ?tre omis ?pas les deux??Une constante ?ottante est supp os?e ?tre de typ edouble?LesuxeFoufp ermet de transformer le typ e de la constante entyp efloat?LesuxeDou d indique qu?elle est de typ edouble? Le plus grand nombre ?ottant?float? p ositif est 3?40282347e+38f?Le plus p etit nombre ?ottant?float? p ositif ?non nul? est 1?40239846e?45f? Le plus grand nombre ?ottant?double? p ositif est1?79769313486231570e+308? Le plus p etit nombre ?ottant?double? p ositif ?non nul? est4?94065645841246544e?324?

Toura?vane

263?6? Les variables

?5e7? 5?e6? 5e6? 1e1fUne constantedoublene p eut ?tre a?ect?e ? une variable de typ efloatque si elle est convertie explicitementenfloat?3?5?4Constantesdetyp ecaract?resLes constantes de typ e caract?re sont constitu?es d?un caract?re ou d?une s?quence d??chapp ement encadr? par des ap ostro?phes ?????? Le caract?re?se note\?et le caract?re\se note\\? Les caract?res nonISO?Latin?1se note ? l?aide de s?quencesd??chapp ement??a??%??\\t??\\\\??\\???\\u03a9??\\uFFFF??\\177?Voici une liste non exhaustive de s?quences d??chapp ement : S?quence

\nnouvelle ligne \ttabulation horizontale \bretour d?un caract?re en arri?re \rretour chariot \fsaut de page \ab eep \?ap ostrophe \?guillemets \\anti?slash \ddden notation o ctale \udddden notation unico de

Tab?3?3: S?quences d??chap emment3?5?5Constantesdetyp echa?neUne cha?ne de caract?res est une suite de caract?res ??ventuellement vide? entre guillemets? Il en d?coule que l?on est autoris?? utiliser les s?quences d??chapp ement dans les cha?nes? La fonctionSystem?out?print??Bonjour\n\tComment ca va ? ?\n? ;pro duit la sortie suivante :Bonjour

Comment ca va ?Une constante cha?ne de caract?re doit ?tre ?crite sur une seule ligne? Lorsqu?il est trop long p our tenir sur une m?me ligne?on d?coup e celle?ci en deux et on les concat?ne avec l?op ?rateur+qui est l?op ?rateur de concat?nationde cha?nes? Les deuxinstructions suivantes sont ?quivalentes?x = ?abcdefghijklmnopqrstuvwxyz? + ?ABCDEFGHIJKLMNOPQRSTUVWXYZ? ;

x = ?abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ? ;3?5?6LaconstantenullLe typ enulladmet une constantenullservant ? d?signer une r?f?rence non d??nie?3?6LesvariablesEnJava?toutevariable utilis?e dans un programme doit auparavant?tred??nie? La d??nitiond?une variable consiste ?la nommer? lui donner un typ e et ?ventuellement lui donner une valeur initiale ?on dira initialiser?? C?est cette d??nition quir?serve ?on dira alloue? la place m?moire n?cessaire et ce en fonction du typ e? Une variable n?est rien d?autre qu?un emplacementm?moire d?une taille susamment grande p our contenir une valeur d?un typ e donn??Initialiser une variable consiste ? remplir? avec une constante? l?emplacement r?serv? ? cette variable? Cette op ?ration s?e?ectueavec l?op ?rateur=? On p ourra ?galement ?de mani?re optionnelle? donner un ?quali?er?? une variable : le mot cl?final? parexemple? pr?cise la valeur de la variable ne sera pas mo di??e dans le programme? Il existe? bien entendu? d?autres quali?er quenous verrons plus tard?

Toura?vane

3?6? Les variables27

int x = 2 ;char c = ?c? ;double d = 1?3 ;final float f = 1?2f ;Le typ e d?une variable est soit un typ e primitif soit une r?f?rence? La valeur d?une variable sera mo di??e par une a?ectation?Une variable de typ e primitif contient toujours une valeur de son typ e? Une variabledetyp e r?f?rence contient soit une r?f?rencenullsoit une r?f?rence vers un ob jet dontletyp e est compatible avec le typ e de la variable?Les d?clarations de variables p euvent ?gurer n?imp orte où dans le corps d?une m?tho de? Il n?est pas n?cessaire de placer cesd??nitions de variables au d?but d?une m?tho de? d?une classe ou d?un blo c d?instructions?Chaque variable p oss?de une visibilit? et une dur?e de vie?3?6?1NaturedesvariablesOn distingue 7 natures de variables :les variables d?instance ?6?les variables de classe ?6?2?les variables de typ e tableau ?11?les param?tres des m?tho des ?6?1?2?les param?tres des constructeurs ?6?1?4?les variables de typ e exception ?10?les variables lo cales3?6?2Variableslo calesUne variable lo cale est une variable qui est d??nie ? l?int?rieur d?une m?tho de? Il n?est pas n?cessaire que cette d?claration?gure en d?but de blo c? Comme en C++? les variables lo cales sont visibles ? partir de leur d??nition jusqu?? la ?n du blo c leplus interne qui contient cette d??nition? Leur dur?e de vie est limit?e ? au blo c qui contient la d?claration???

for ?int i = 0 ; i != 0;i=i+1?{????? variable i visible dans tout ce bloc}???3?6?3Variablesglobales ?Toute d??nition de variables ?gure forc?ment?l?int?rieur d?une d?claration de classe? Contrairement au langages C et C++?le concept de variables globales n?existe pas? Il n?y a que des variables statiques ou de classe qui sont l??quivalent ?sous certainesconditions? de nos habituelles variables globales? Toutefois? leur visibilit? d?p end des quali?ers asso ci?s ? la variable et ? la classedans laquelle elle est d??nie? Par contre? sa dur?e de vie commence au chargement de la classe qui contient sa d??nition et setermine ? la ?n de l?ex?cution du programme?public class X {

???public static int varGlobale=100 ;???}Dans ce exemple? la variable varGlobale est l??quivalent d?une variable globale? Elle est visible de n?imp orte quelle partie duprogramme? Ce sont les quali?ers public qui p ermettent d??tendre ainsi leur visibilit?? Nous verrons tout cela en d?tail dans leschapitres consacr?s aux classes? ? l?h?ritage? aux interfaces et aux packages?

Toura?vane

283?6? Les variables

Toura?vane

4?Op ?rationsetexpressionsSommaire

4?1G?n?ralit?ssurlesexpressionsUne expression est un ob jet syntaxique obtenu en assemblant ?correctement? des constantes? des variables et des op ?rateurs?Par exemple?x+3est une expression construite en appliquant l?op ?rateur+sur les op ?randesxet3? Dans le langage Java? ily a bien d?autres op ?rateurs que les op ?rateurs arithm?tiques qu?on a l?habitude de manipuler?Un programme passe la quasi totalit? de son temps ? ?valuer des expressions p our pro duire des e?ets de b ord ou p our calculerdes valeurs? Une expression avec une?et de bordest une expression qui lorsqu?elle s??value? pro duit un changement de l??tat dusyst?me? Par exemple? l?a?ectation est une expression qui a p our e?et de b ord la mo di?cation du contenu de l?op ?rande gauche?L?invo cation d?une m?tho de est une expression qui lorsqu?elle s??value pro duit comme e?et de b ord? l?app el de la m?tho de apr?s?valuation des param?tres de la m?tho de?Le r?sultat de l??valuation d?une expression est soit une valeur? soit une variable ?en C? unelvalue?soitvoid? Le r?sultat del??valuation d?une expression est void dans l?unique cas de l?invo cation d?une m?tho de qui ne retourne rien ?une pro c?dure??29

304?2? A?ectation

4?1?1Priorit?desop ?rateursNous avons l?habitude de manipuler des expressions ?par exemple arithm?tiques? et il nous est relativement ais? de pr?ciserexactement le sens des expressions comme :2+3452?234etc? On sait que ces expressions sont ?quivalentes??2+?3?45???2??23?4?Intro duire les parenth?ses p ermet de d??nir sans ambigu?t? l?expression que l?on manipule?A priori? c?est notre culture math?matique qui nous p ermet de parenth?ser ces expressions? Pour ?viter l?usage des parenth?sesqui alourdissent la lecture? et lorsque cela est p ossible? les math?maticiens ont ?x? des r?gles p our que tout le monde parenth?se?dans sa t?te? de la m?me mani?re toute expression ambiguë?Par exemple? dans l?expression2+34? la sous expression34est ?valu?e en premier et le r?sultat obtenu est a jout? ? lavaleur 2 ?forme parenth?s?e :2+ ?34??? On dit que l?op ?rateurp oss?de une priorit? sup ?rieure ? la priorit? de l?op ?rateur+? De m?me? dans l?expression234? la sous expression23est ?valu?e en premier et? au r?sultat obtenu? on soustrait lavaleur 4 ?forme parenth?s?e :?23?4?? On dit que l?ordre d??valuation de l?op ?rateurest de gauche ? droite?4?1?2Ordred??valuationComme nous le verrons plus loin? outre les expressions arithm?tiques? le langageJavadisp ose de b eaucoup d?autres sortesd?expressions? La donn?e d?une priorit? et d?un ordre d??valuation p ermet de ?xer des r?gles communes d??valuation des expres?sions? Ces priorit?s et ordre d??valuation ne p ermettent ?videmment pas de se disp enser des parenth?ses dans tous les cas? Ene?et? on utilise les parenth?ses lorsqu?on veut ?valuer une expression d?une mani?re autre que celle d??nie ? l?aide de la priorit?et de l?ordre d??valuation? Par exemple? si l?on veut faire2+3et multiplier le r?sultat par 4? on sera contraint de noter?2 + 3?4et il n?est pas p ossible de l??crire sans les parenth?ses avec la notation in?x?e?Les op ?randes de chaque op ?ration sont compl?tement?valu?s avant d?e?ectuer l?op ?ration? Il existe? cep endant trois ex?ceptions : il s?agit des op ?rateurs&&?||et?:?Java garantit ?galement que les op ?randes sont?valu?s de gauche ? droite? Parexemple? dans l?expressionx+y? on est sûr quexest ?valu? avanty? Cette connaissance de l?ordre d??valuation est particuli?rementimp ortantes lorsqu?il s?agit d?expressions avec des e?ets de b ord?4?1?3Typ ed?uneexpressionToutes les expressions? syntaxiquement correctes? ontuntype?Letypedes expressions sont toujours connus d?s la ?compila?tion?? Une expression de typ e T p eut ?tre a?ect?e ? une variable du m?me typ e ou d?untypecompatible?Le typ e d?expression est donn?e par le typ e des op ?randes et de la s?mantique des op ?rateurs? Tous typ es entiers autre quelongsont convertis enintavant d??tre ?valu?s? Le r?sultat est de typ eint? moins que l?un des op ?randes soit de typ elong?4?1?4Erreurd??valuationd?uneexpressionL??valuation d?une expression p eut conduire ? une erreur? Dans ces cas? Java lance uneexception?voir 10? pr?cisant la raisonexacte de l?erreur?OutOfMemoryError: Cette erreur est pro duite lorsque l?espace m?moire requise est insusante? Cette erreur est g?n?r?elors de la cr?ation ?dynamique? des ob jets d?une classe? des tableaux? des cha?nes de caract?res?ArrayNegativeSizeExcept ion: Une des dimensions d?un tableau est n?gativeNullPointerException:La valeur d?une r?f?rence d?un ob jet est null?IndexOutOfBoundsExcepti on:lavaleur de l?indice d?un tableau est hors des b ornes du tableau?ClassCastException: l?op ?ration de cast n?est pas p ermise?ArithmeticException: l?op ?rande droit d?une division ou d?un mo dulo est nul?ArrayStoreException: la r?f?rence que l?on veut a?ecter ? un ?l?ment d?un tableau n?est pas du b on typ e?Les exceptions g?n?r?es par l?invo cation d?une m?tho de?Les exceptions g?n?r?s par les constructeurs lors de la cr?ation d?ob jets ?voir 6 et 10??etc?4?2A?ectationL?op ?ration la plus imp ortante dans un langage de programmation est celle qui consiste ? donner une valeur ? une variable?Cette op ?ration app el?ea?ectationest d?sign?e par le symb ole =?L?a?ectationrange une valeur dans une variable ?une zone m?moire?? il est imp ?ratif que le membre gauche d?une a?ectationrepr?sente une zone m?moire : c?est ce qu?on app elle unelvalueenC? Une constante n?est pas unelvaluecar il ne d?signe pasl?adresse d?une zone m?moire? Elle ne p eut donc pas ?gurer en membre gauche d?une a?ectation?Le membre droit d?une a?ectation p eut d?signer soit une constante soit une zone m?moire soit une expression quelconque :l?a?ectationx=2range la valeur2dans la variablex? l?a?ectationx=yrange dans la variablexle contenudelavariableyetl?a?ectationx=y+1range dans la variablexle contenudelavariableyincr?ment? de 1?L?a?ectation est une expression?

Toura?vane

4?3? Expressions arithm?tiques31

La valeur d?une a?ectation est la valeur de son membre gauche apr?s ex?cution de l?a?ectation? Si la variableycontientlavaleur 100 alors l?a?ectationx=y+20a p our valeur 120?Une a?ectation p eut ?gurer en membre droit d?une autre a?ectation?L?a?ectationx=y=1est parfaitementvalide carelle repr?sentel?a?ectationx=?y=1??Puisquey=1est uneexpression?ellep eut ?gurer en membre droit d?une a?ectation? Puisque elle est syntaxiquement correcte? quel sens donner ? cette a?ectation ?L?expressiony=1apourvaleurcelle deson membre droit?ici la valeurenti?re1?? l?a?ectationx=y=1rangedansla variablexla valeur 1 apr?s avoir rang? dansycette m?me valeur 1? Ainsi? l?a?ectationx1=x2=x3=???=x20=0est ?quivalent ? la suited?a?ectations ?dans l?ordre indiqu??x20=0?x19=0?x18=0? ????x1=0?Une erreur de compilation est g?n?r?e lorsque le typ e de l?expression membre droit de l?a?ectation ne p eut ?tre converti enle typ e du membre gauche?A l?ex?cution? si l?op ?rande gauche n?est pas un ?l?ment d?un tableau? l?op ?rande gauche est tout d?ab ord ?valu?? ensuitel?op ?rande droit est ?valu? et en?n la r?sultat de cette derni?re est convertie au typ e de l?op ?rande gauche? Si durant l?une des cestrois phases? une erreur survient? l??valuation de l?a?ectation est imm?diatement arr?t?e et l?erreur g?n?r?e p our l?a?ectation estcette premi?re erreur? Si? par contre? l?op ?rande gauche est une ?l?ment d?un tableau? les op ?rations e?ectu?es sont les suivants?dans l?ordre? :Evaluation de la sous expression d?signant le tableau et en cas d?erreur d??valuation? renvoi de cette derni?reEvaluation de la sous expression d?signant l?indice dans ce tableau et en cas d?erreur d??valuation? renvoi de cette derni?reEvaluation de l?op ?rande droit et en cas d?erreur d??valuation? renvoi de cette derni?reSi le tableau est null? renvoi de l?erreur NullPointerExceptionSi l?indice est en dehors des b ornes du tableau? renvoi de l?erreur IndexOutOfBoundsExceptionConversion du typ e de l?op ?rande gauche vers le typ e de l?op ?rande droit et a?ectation? En cas d?erreur? l?erreur Array?StoreException est renvoy?e?Tab?4?1: Op ?rateur d?a?ectation

Pr?cOrdreOp ?rateurTyp eDescription

13droite gauche=Variable? qcqA?ectation

4?3Expressionsarithm?tiquesLes op ?rateurs+??et*fonctionnent comme on s?y attend? Comme enCetC++? les caract?res sontuntyp e particulierd?entier? On p eut donc appliquer les op ?rations arithm?tiques sur les caract?res? Les expressions?A???0???A?+1sont syn?taxiquement corrects et s??valuent parfaitement?CasdesentiersL?arithm?tique enti?re de Java est une arithm?tique compl?ment ? deux? mo dulaire? Cette arithm?tiquene pro duit jamais de d?b ordement car le r?sultat est toujours r?duite mo dulo le domaine de valeurs du typ e des op ?randes?Cas des ?ottantsJava utilise le standard IEEE 754?1985 p our les nombres ? virgules ?ottantes? Une op ?ration arithm?tiquep eut conduire soit ? ununder?ow?valeur trop p etite? ou unover?ow?valeur top grande?? Une op ?ration sur les ?ottants p eutpro duire un r?sultat p our lequel il n?existe pas une approximation p ermettant delerepr?senter par un nombre ?ottant? C?est?par exemple? le cas du r?sultat d?une division par z?ro? Ce typ e de r?sultat est repr?sent? par une valeur particuli?re app el?eNaN?Not a Number??L?arithm?tique ?ottante Java est un sous ensemble du standard IEEE?754?1985?4?3?1ExpressionsmultiplicatifsTous les op ?rateurs multiplicatifs ont la m?me priorit? et l?ordre d??valuation est gauche?droite? Le typ e des op ?randes doit?trede typ enum?rique? Le typ e de l?op ?ration e?ectu?d?p enddu typ e?apr?sconversion?de ses op ?randes?Le typ ed?uneop ?ration multiplicatif est soit de typ e entier ?intoulong? soit ?ottant?floatoudouble??Les op ?rations multiplicatifs sontlamultiplication ?*? ? la division ??? et le reste de la division ?%?? Si l?un des op ?rande estNaN? le r?sultat estNaN?LamultiplicationLa multiplication? not?e avec le symbole*? est une op ?ration commutative sans e?et de b ord? Elle est asso ciative sur lesentiers et ne l?est pas sur les ?ottants? Lorsque le r?sultat de la multiplication de deux entiers d?passe des plages de valeursp ermises selon le typ e ?intoulong?? le r?sultat est ramen? au mo dulo du typ e?

Toura?vane

324?3? Expressions arithm?tiques

ababa=ba%b

Fini0:00:01NaN

Fini110:0a

0:00:01NaNNaN

1Fini11NaN

111NaNNaN

10:0NaNNaNNaN

Tab?4?2: Arithm?tique virgule ?ottanteLadivisionLe r?sultat de la division? not?e avec le symbole?? de deux entiers est le quotient de la division enti?re de ces deux nombres?Le r?sultat de la division de deux ?ottants est le quotient de la division de ces deux ?ottants?Le reste de la division

Le r?sultat de la division de deux entiers est le reste de la division enti?re de ces deux nombres? Contrairement?CetC++?le reste de la division de deux ?ottants est ?galement d??ni p our les nombres ? virgules ?ottantes? Le r?sultat du reste de ladivision de a par b est d??nie parr=a?bq?oùqest le quotientdeaparb?Tab?4?3: Op ?rateurs multiplicatifs

Pr?cOrdreOp ?rateurTyp eDescription

2gauche droite*? ?? %Arithm?tiqueMultiplication? division et reste

4?3?2ExpressionsadditifsLes op ?rations additifs? qui sont l?addition ?+? et la soustraction ???? ont la m?me priorit? et l?ordre d??valuation est gauche?droite? Le typ e des op ?randes doit ?tre de typ e num?rique? Le typ e de l?op ?ration e?ectu? d?p end du typ e ?apr?s conversion? deses op ?randes? Le typ e d?une op ?ration multiplicatif est soit de typ e entier ?intoulong? soit ?ottant?floatoudouble??Les op ?rations additifs enti?res? tout comme les op ?rations multiplicatifs? ne pro duit aucune erreur? Il n?y pas de d?b ordementp ossible : l?arithm?tique est une arithm?tique e compl?ment? 2?Quant aux op ?ration additifs sur les ?ottants? la somme de deux in?nis pro duit un NaN si les signes di??rent et l?in?ni sinon?La di??rence de deux in?nis de m?me signe est un NaN? ; sinon le r?sultat est celui attendu?Tab?4?4: Op ?rateurs additifs

Pr?cOrdreOp ?rateurTyp eDescription

3gauche droite+? ?Arithm?tiqueAddition et soustraction

4?3?3Op ?rateursunairesLes op ?rateurs unaires ??ou+? s?appliquent sur un typ e num?rique? Pour les ?ottants? sixest0:0alorsxest ?gal ?0:0alors0:0x=0:0?Tab?4?5: Op ?rateurs arithm?tiques unaires

Pr?cOrdreOp ?rateurTyp eDescription

1droite gauche+? ?Arithm?tiquePlus et moins unaire

Toura?vane

4?6? Expressions logiques33

4?3?4Pr?etp ostincr?mentetd?cr?mentIl existe deux op ?rateurs++et deux op ?rateurs: une p our la forme pr??x?e et l?autre p our la forme p ost?x?e? Ce sont desop ?rateurs unaires qui s?appliquent sur un op ?rande de typ e num?rique?Op ?rateur p ost?incr?ment et p ost?d?cr?ment ?++ et ?La valeur d?une expression de p ost?incr?ment ?p ost d?cr?ment? est la valeur de l?op ?rande et a p our e?et de b ord? le sto ckagede la valeur de l?op ?rande incr?ment? ?resp? d?cr?ment?? de 1?Op ?rateur pr??incr?ment et pr??d?cr?ment?++ et ?La valeur d?une expression de pr??incr?ment ?pr??d?cr?ment? est la valeur de l?op ?rande incr?ment? ?resp? d?cr?ment?? de 1et a p our e?et de b ord? le sto ckage de cette valeur?Tab?4?6: Op ?rateurs d?incr?ment et de d?cr?ment

Pr?cOrdreOp ?rateurTyp eDescription

1droite gauche++? Arithm?tiqueIncr?m?nt et d?cr?ment

4?4ExpressionsdecomparaisonLe r?sultat d?une compraison est une valeur b o ol?nne ?vrai ou faux?? Dans le langage Java? le r?sultat d?une comparaison esttrueoufalseselon que cette comparaison est vraie ou fausse?Tab?4?7: Op ?rateurs de comparaison

Pr?cOrdreOp ?rateurTyp eDescription

5gauche droite? >=Arithm?tiqueComparaison arithm?tique

6gauche droite==? !=ob jet et typ e primitifegalit? et di??rent

4?5Concat?nationdescha?nesdecaract?resSi l?un des op ?randes de l?op ?rateur+est un ob jet de typ eString? alors la s?mantique de cette op ?ration est la concat?nationde cha?nes? Si b esoin? l?autre op ?rande est converti enString?x= 2 ;y = 3 ;

System?out?println??Le produit de ? +x+?et de? +y+?est:?+x*y? ;pro duit la sortie Le produit de 2 et de 3 est : 6Tab?4?8: Op ?rateur de concat?nation de cha?nes

Pr?cOrdreOp ?rateurTyp eDescription

3gauche droite+Cha?nes de caract?resConcat?nation de cha?nes

4?6ExpressionslogiquesOn disp ose des connecteurs logiques ?sous une syntaxe particuli?re? et on p eut fabriquer des expressions avec celles?ci? Lavaleur d?une expression b o ol?enne est? comme le r?sultat des comparaisons? une valeur b o ol?enne?Comme d?habitude? l??valuation d?une expression b o ol?enne ob ?it aux r?gles de priorit? et ? l?ordre d??valuation? Java prop osedeux typ es d?op ?rateurs logiques : les op ?rateurs classiques et les op ?rateurs conditionnels?

Toura?vane

344?7? Manipulation de bits

L??valuation des op ?rations classiques se fait par l??valuation compl?te de chaque op ?rande et l?application de l?op ?rationsur les r?sultats obtenus?L??valuation des op ?rateurs conditionnels se fait par ?valuation successives des op ?randes? Cette ?valuation s?arr?te d?s quel?on est capable de donner la valeur de l?expression? Par exemple? en supp osant que la variablexcontientlavaleur 5? l??valuationde l?expression?x>=2?||?x>=y?s?arr?te avant m?me d?avoir ?valu? l?expressionx>=y? puisque?x>=2?est vrai d?oùon p eut conclure que la valeur de l?expression?x>=2?||?x>=y?est ?galement vraie?Cette remarque a son imp ortance dans deux cas :p our les tests d?arr?tsp our les expressions avec e?et de b ord? Par exemple? selon la valeur dex? l??valuation de l?expression ?x >= 2? || ? x++== y? aura p our e?et de b ord l?incr?mentdexoupas?Tab?4?9: Op ?rateur b o ol?ens

Pr?cOrdreOp ?rateurTyp eDescription

1droite gauche!Bo ol?ennon b o ol?en

7gauche droite&Bo ol?enET b o ol?en

8gauche droite^Bo ol?enOU exclusif b o ol?en

9gauche droite|Bo ol?enOU b o ol?en

11gauche droite&&Bo ol?enET conditionnel b o ol?en

11gauche droite||Bo ol?enOU conditionnel b o ol?en

4?7Manipulationdebits4?7?1Op ?rationsbits?bitsOn disp ose des op ?rateurs suivants :& ?ET bit ? bit??| ?OU bit ? bit?^?OU Exclusif bit ? bit?

?Compl?ment bit ? bit?Tab?4?10: Op ?rateurs bit ? bit

Pr?cOrdreOp ?rateurTyp eDescription

1droite gauche~Entiercompl?mentbit?bit

7gauche droite&EntierET bit ? bit

8gauche droite^EntierOU exclusif bit ? bit

9gauche droite|EntierOu bit ? bit

4?7?2D?calagedebitsL?op ?rateurd?cale les bits vers la gauche en compl?tant par des bits ? z?ro sur la partie droite? L?op ?rateur>d?cale lesbits vers la droite en compl?tant par des bits ? z?ro sur la partie gauche? L?op ?rateurd?cale les bits vers la droite en compl?tantpar des bits ? la valeur du bit de p oids fort sur la partie gauche?Pr?c?dence Ordre Op ?rateur Typ e DescriptionTab?4?11: Op ?rateurs de d?calage de bits

Pr?cOrdreOp ?rateurTyp eDescription

4gauche droite??>EntierD?calage de bits

Toura?vane

4?10? Changementde typ e35

4?8Autresop ?rateursbinairesd?a?ectationLes op ?rateurs suivants ne sont que des raccourcis de notation : les expressionsy+=x?y?=x?y*=x?y?=x?y%=x?y=x?y=x?y>=x?y&=x?y^=xety|=x? corresp ondent aux raccourcis p oury=y+x?y=y?x?y=y*x?y=y?x?y=y%x?y=yx?y=yx?y=y>x?y=y&x?y=y^xety=y|x?Tab?4?12: Autres op ?rateurs d?a?ectation

Pr?cOrdreOp ?rateurTyp eDescription

13droite gauche*=??=?%=?+=? ?=?Variable? qcqA?ectationsimpleetavecop ?ration

4?9ExpressionconditionnelleVoici l?op ?rateur ternaire ?le seul?? Cette expression est une sorte desi?alors?sinonsous forme d?expression : si la conditione est vraie alors cette expression vaut x sinon elle vaut y?Exemple:L?expressiona=?v==2? ?1:2a?ecte la variablea?lavaleur1sivvaut 2? sinon a?ecte la variablea?lavaleur 2?Tab?4?13: op ?rateur conditionnel

Pr?cOrdreOp ?rateurTyp eDescription

12droite gauche

Bo ol?en? qcqSi?alors?sinon

4?10Changementdetyp eCet op ?rateur p ermet de convertir explicitementletyp e d?une donn?e en un autre typ e? L?op ?rateur de parenth?sage??p ermet de d??nir l?ordre d??valuation d?une expression? C?est l?op ?rateur que l?on utilise traditionnellement? C?est ?galementcem?me op ?rateur qui est utilis? p our encapsuler les param?tres des fonctions? M?me lorsqu?une fonction n?a pas d?arguments? cesparenth?ses sont requises?Le probl?me de la conversion des typ es se p ose lorsqu?une expression est comp os?e de donn?es de nature di??rentes? Parexemple? quel sens donner ? une addition d?un entier et d?un nombre ?ottant ? Que se passe?t?il lorsqu?on a?ecte un variablede typ e entier ? une valeur de typ e caract?re ou ?ottant? La langage Java d??nit pr?cis?ment quelles sont les typ es de donn?escompatibles et quel typ e de conversion est e?ectu??La conversion explicite d?un op ?rande se fait en le pr??xantdutyp e choisi encadr? par des parenth?ses?double d = 2?5 ;

long l = ?long? d ;4?10?1LesconversionsimplicitesLesconversionsimplicites sont celles faites automatiquement par un compilateur lors de l??valuation d?une expression ?etdonc ?galement d?une a?ectation?? Comme nous le verrons plus loin? il y a conversion implicite lors de l?invo cation d?une m?tho de?Il y a deux typ e de conversion implicite :1?Les valeurs enti?res p euvent ?tre a?ect?es ? toute variable num?rique dontletyp e supp ort un domaine de valeur plusgrand? Un char est p eut utilis? partout où une valeur de typ e int est p ermis? Les valeurs de typ e ?ottant p euvent ?trea?ect?es? toutevariable de typ e ?ottantde pr?cision sup ?rieure ou ?gale? Les donn?es de typ e enti?res p euvent?treconverties en donn?es de typ e ?ottant?long i = 0x7effffffffffffffL ;?? 91513144428168478771float f = i ;?? 9?15131e+18long l = ?long?f ;?? 91513144428168478772

Toura?vane

364?12? R?capitulatif

2?Le second typ e de conversion implicite concerne les r?f?rence vers des ob jets : partout une r?f?rence vers un ob jet d?untyp e T est requise? une r?f?rence vers un ob jet d?une sous classe de T p eut ?tre fournie? La r?f?rencenullp eut ?tre fourniep our tout typ e de r?f?rence y compris les tableaux?4?10?2LesconversionsexplicitesOn utilise la conversion explicite p our changer le typ e d?une donn?e? Ce changement ne p eut ?tre arbitraire : seules certainesconversions sont p ermises? Par exemple? on ne p eut convertir un b o olean en int mais un double p eut ?tre converti en un long?Un double est convertible en un ?oat?Un typ e entier est convertible en un typ e entier plus p etitUn char est convertible en n?imp orte quel typ e entier et inversement?Une r?f?rence vers un ob jet d?une classe C est convertible en une r?f?rence vers une de ses sup er?classes?Le mot cl? instanceofPour savoir si un ob jet o d?une certaine classe est convertible en un ob jet d?une autre classe C? on utilisera un test de la forme :if ?o instanceof C?Tab?4?14: Op ?rateur de changementdetyp e

Pr?cOrdreOp ?rateurTyp eDescription

1droite gauche?type?qcqChangementdetyp e

5gauche droiteinstanceofob jetComp oraison de typ e

Nous verrons plus loin? en d?tails? les changements de typ e p ermis et ceux interdits?4?11Cr?ationdesob jets4?11?1Casdesob jetsComme nous le verrons plus loin? les ob jets complexes et structur?s ? l?aide des classes? Ces classes sont ?une sorte destructC?? Les classes p oss?des deschampset desm?thodes? L?op ?rateur d?acc?s ? ces membres des classes est le ????4?11?2CasdestableauxNous verrons ?galement que lestableauxsont d?un typ e particulier d?ob jets? Les ?l?ments des tableaux tab sont not?stab[i]?L?op ?rateur[]sert d?acc?s d?op ?rateur d?acc?s aux ?l?ments d?un tableau?Tab?4?15: Op ?rateur d?acc?s aux membres

Pr?cOrdreOp ?rateurTyp eDescription

1droite gauche?? []ob jetAcc?s aux membres

4?12R?capitulatif

Toura?vane

4?12? R?capitulatif37

Tab?4?16: R?capitulatif

Pr?cOrdreOp ?rateurTyp eDescription

1droite gauche++? Arithm?tiqueIncr?m?nt et d?cr?ment

1droite gauche+? ?Arithm?tiquePlus et moins unaire

1droite gaucheEntiercompl?mentbit?bit

1droite gauche!Bo ol?ennon b o ol?en

1droite gauche?typ e?qcqChangementdetyp e

1droite gauche?? []ob jetAcc?s aux membres

1droite gauche?typ e?qcqChangementdetyp e

2gauche droite*? ?? %Arithm?tiqueMultiplication? division et reste

3gauche droite+? ?Arithm?tiqueAddition et soustraction

3gauche droite+Cha?nes de caract?resConcat?nation de cha?nes

4gauche droite? ?>EntierD?calage de bits

5gauche droite? >=Arithm?tiqueComparaison arithm?tique

5gauche droiteinstanceofob jetComparaison de typ e

6gauche droite==? !=ob jet et typ e primitif?galit? et di??rent

7gauche droiteEntier et b o ol?enET bit ? bit et b o ol?en

8gauche droite^Entier et b o ol?enOU exclusif bit ? bit et b o ol?en

9gauche droite|Entier et b o ol?enOu bit ? bit et b o ol?en

11gauche droite&&Bo ol?enET conditionnel

11gauche droite||Bo ol?enOU conditionnel

12droite gauche?:Bo ol?en? qcq? qcqSi?alors?sinon

13droite gauche=? *=? ?=? %=?

+=? ?=?Variable? qcqA?ectation simple et <<=?>>=?>>>=?avec op ?rations

Toura?vane

384?12? R?capitulatif

Toura?vane

5?Lesstructuresdecontr?leSommaire

5?1Instructionsetblo csUn programme ?voir 5?6?Javaest constitu? de d?clarations declassesdans lesquelles ?gurent des m?tho des? Les m?tho dessont construites ? l?aide d?instructionscombin?es entre elles avec desstructures de contr?les?Tout d?ab ord qu?entend?on parinstruction ? Une expression telle quex=0?i++ouprintf??coucou\n??sont des instructions lorsqu?elles sont suivies du caract?repoint virgule ?? ;???x=0 ;

i++ ;printf??coucou\n?? ;Le p oint virgule est app el? terminateur d?instruction? M?me si n?imp orte quelle expression p eut ?tre utilis?e par ?crire uneinstruction? les instructions int?ressantes sont celles qui provo quent un e?et de b ordi?e?qui p ermettent? outre le fait d??valuercette expression? de mo di?er l??tat du syst?me? C?est le cas de l?a?ectation qui mo di?e le contenu de l?op ?rande gauche?Les instructions comp os?es ou blo cs sont des suites d?instructions simples ou comp os?es regroup ?es ? l?aide des accolades ?{?et ?}?? L?accolade fermante n?est pas suivie d?un p oint virgule?int i ;

i = 32 ;

printf??coucou\n?? ;5?2Instructionconditionnelle?if ?Cette instruction conditionnelle p ermet d?ex?cuter des instructions de mani?re s?lective en fonction du r?sultat d?un test? Lasyntaxe de l?instruction est :if ?expression?instruction1if ?expression? instruction1 else instruction239

405?3? Etude de cas ?switch?

Si l?expression est vraie? l?instruction1 s?ex?cute ; sinon? dans le deuxi?me cas? c?est l?instruction2 qui s?ex?cute? Rapp elonsque? contrairement au langage C? une valeur b o ol?enne n?est pas un entier? En particulier? la fameuse erreur? que tout le mondea au moins fait une fois dans sa vie de programmeur C? et qui sont si dicile ? trouver? du styleif ?x = 2? ???au lieu deif ?x == 2? ???ne p euvent plus se pro duire en Java? De plus? les instructions suivantes ne plus ?quivalentes :if ?expression? ???etif ?expression != 0? ???D?apr?s la syntaxe de l?instructiquotesdbs_dbs12.pdfusesText_18