Alphorm

Embed Size (px)

Citation preview

  • 8/18/2019 Alphorm

    1/368

    Présentation de la formation

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne uConsultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    ( examen 1Z0-803 )

  • 8/18/2019 Alphorm

    2/368

  • 8/18/2019 Alphorm

    3/368

    !r#sentation $u formateur" Fabien Brissonneau

    " -mail : fabien.brissonneau gmail.com

    "Consultant Concepteur et Formateur

    " issions $'architecture, $e conception , $e r#alisation logicielles

    " Fon$ateur $eei0 1

    Java, les fondamentaux alphorm.com™©

    " %ctuellement en mission sur un projet $e gestion" es r#f#rences :

    on profil 2ia$eo : http://fr.viadeo.com/fr/profile/fabien.brissonneau

    on profil Lin3e$4n :http://fr.linkedin.com/pub/fabien-brissonneau/65/902/92a/

  • 8/18/2019 Alphorm

    4/368

    es formations sur alphorm

    Java, les fondamentaux alphorm.com™©

  • 8/18/2019 Alphorm

    5/368

    Les autres formations $#+ sur %lphorm

    Java, les fondamentaux alphorm.com™©

  • 8/18/2019 Alphorm

    6/368

    &u'est(ce )ue *a+a " Langage $e programmation g#n#raliste

    " Cr## en 5667 par Sun, h#ritant $u C88

    " 9#r# en communaut#

    " Langage $e programmation objet

    Java, les fondamentaux alphorm.com™©

    " %+ec un tr s gran$e biblioth )ue $e classes

  • 8/18/2019 Alphorm

    7/368

    Le plan $e la formation" !r#sentation $e la technologie *a+a" !enser en termes objet

    " !r#sentation $u langage *a+a" ;tiliser $es +ariables primiti+es" ;tiliser $es ob ets

    " ;tiliser $es m#tho$es et lasurcharge

    " ;tiliser l'encapsulation et lesconstructeurs" Concepts a+anc#s $e l'objet

    Java, les fondamentaux alphorm.com™©

    " ;tiliser $es op#rateurs et $es

    $#cisions" Cr#er et utiliser $es tableau<

    " ;tiliser $es structures en boucles

    " 2ue $'ensemble

  • 8/18/2019 Alphorm

    8/368

    Certification OC% suite = l'e?(@?A

    Java, les fondamentaux alphorm.com™©

  • 8/18/2019 Alphorm

    9/368

    !r#sentation $es outils" Le site $e Oracle sera utilis# pour t#l#charger

    Les outils en ligne $e comman$e

    La biblioth )ue $e base

    ;n 4 -, etbeans

    Java, les fondamentaux alphorm.com™©

    " ous utiliserons aussi -clipse" La pr#sentation sera faite sous Din$o s E

  • 8/18/2019 Alphorm

    10/368

    Les publics concern#s" Cette formation est la premi re $e formations certifiantes

    " *a+a S-E

    " La formation sui+ante est *a+a a+anc# G

    Java, les fondamentaux alphorm.com™©

  • 8/18/2019 Alphorm

    11/368

    Scoop" Formation = apparaitre prochainement sur alphorm

    Java, les fondamentaux alphorm.com™©

  • 8/18/2019 Alphorm

    12/368

  • 8/18/2019 Alphorm

    13/368

    Présentation ’

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne uConsultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    langages

  • 8/18/2019 Alphorm

    14/368

    !lan" Jistori)ue" Caract#risti)ues essentielles $u langage" Comparer *a+a = C88" Comparer *a+a = CK

    Java, les fondamentaux alphorm.com™©

    "

  • 8/18/2019 Alphorm

    15/368

    Jistori)ue" #marre en 5665, che S; , projet $irig# par *ames 9osling

    " !rojet Oa3, partant $u C88 en #liminant les points $angereu<

    " 2ersion alpha $e *a+a en 5667

    " 2ersion 5.? en 5661

    Java, les fondamentaux alphorm.com™©

  • 8/18/2019 Alphorm

    16/368

  • 8/18/2019 Alphorm

    17/368

    Comparer *a+a = C88" Objectifs : C88 est proche $u sHst me, *a+a a une gran$e couche $'abstraction

    " SHnta

  • 8/18/2019 Alphorm

    18/368

    Comparer *a+a = CK" Objectifs : CK est li# au mon$e icrosoft et *a+a n'est pas li# = un constructeur

    " SHnta

  • 8/18/2019 Alphorm

    19/368

    Comparer *a+a = !Hthon" Objectifs : !Hthon est plus un langage $e glue P, l= oQ *a+a ser+irait = cr#er le

    composants li#s

    " SHnta

  • 8/18/2019 Alphorm

    20/368

    Ce )u'on a cou+ert" ous a+ons rappel# les caract#risti)ues essentielles $e *a+a

    " ous a+ons compar# *a+a = $'autres $e langages comparables

    " !ar rapport = ces langages, *a+a apparaRt comme :;n langage = la sHnta

  • 8/18/2019 Alphorm

    21/368

    Présentation

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne uConsultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    installation de Java

  • 8/18/2019 Alphorm

    22/368

    !lan" OQ trou+er *a+a " Les t#l#chargements $isponibles

    " 4nstallation $es outils *a+a" Configuration $e l'en+ironnement $e tra+ail *a+a

    Java, les fondamentaux alphorm.com™©

  • 8/18/2019 Alphorm

    23/368

    OQ trou+er *a+a " Le n#cessaire pour e

  • 8/18/2019 Alphorm

    24/368

    Les t#l#chargements $isponibles" Les #$itions *a+a : *a+a S-, *a+a --, *a+a -

    " Stan$ar$ -$ition : *V- complet 8 outils pour $#+elopper Tcompilateur,$#buggeur, moniteurU

    " -nterprise -$ition : concerne les applications ser+eur Tmulti(tier,s#curis#es,IU

    Java, les fondamentaux alphorm.com™©

    9lassfish%!4 suppl#mentaire, $ocumentation et e

  • 8/18/2019 Alphorm

    25/368

    4nstallation $es outils" * S- : t#l#chargement, installation sous $iff#rentes plateformes

    " N#l#chargement et installation a+ec ou sans etBeans Tnetbeans.orgU

    " Le *V- sera install# $ans : Wprogram filesX/*a+a/jre@

    " 4l faut a+oir les $roits $'a$ministration

    Java, les fondamentaux alphorm.com™©

    " etBeans @ utilise n'importe )uel j$3 E ou @, il le r#f#rence par j$3hom

  • 8/18/2019 Alphorm

    26/368

    Configuration $es outils" etbeans

    " -clipse

    " Ligne $e comman$e!%NJ

    Java, les fondamentaux alphorm.com™©

    CL%SS!%NJ*%2%YJO - / *V-YJO -

  • 8/18/2019 Alphorm

    27/368

    Ce )u'on a cou+ert" OQ trou+er *a+a " Les t#l#chargements $isponibles

    " 4nstallation $es outils *a+a" Configuration $e l'en+ironnement $e tra+ail *a+a

    Java, les fondamentaux alphorm.com™©

  • 8/18/2019 Alphorm

    28/368

    Présentation

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne uConsultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

  • 8/18/2019 Alphorm

    29/368

    !lan" *a+a S-" *a+a --

    " -mbe$$e$ *a+a

    Java, les fondamentaux alphorm.com™©

  • 8/18/2019 Alphorm

    30/368

    *a+a S-" 2ersion stan$ar$ $e la li+raison *a+a

    " Le *a+a e+elopment it T* U incluant le S *a+aF0

    " Le *a+a Vuntime -n+ironment T*V-U permettant $'e

  • 8/18/2019 Alphorm

    31/368

    *a+a --" 2ersion entreprise $e *a+a

    " 4l e

  • 8/18/2019 Alphorm

    32/368

    -mbe$$e$ *a+a" *a+a pour en+ironnements pau+res en ressources

    " options propos#es : *a+a - -mbe$$e$ et *a+a - -mbe$$e$ Client

    Java, les fondamentaux alphorm.com™©

  • 8/18/2019 Alphorm

    33/368

    Ce )u'on a cou+ert" *a+a S-" *a+a --

    " -mbe$$e$ *a+a

    Java, les fondamentaux alphorm.com™©

  • 8/18/2019 Alphorm

    34/368

    Présentation

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne uConsultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    et les avantages de la

    technologie Java

  • 8/18/2019 Alphorm

    35/368

    !lan" SHnta

  • 8/18/2019 Alphorm

    36/368

    La sHnta

  • 8/18/2019 Alphorm

    37/368

    Les biblioth )ues *a+a" Les biblioth )ues stan$ar$ sont tr s larges

    " Cou+rent tous les aspects $'une aplication

    " -+itent le besoin $e r#in+enter l'e

  • 8/18/2019 Alphorm

    38/368

    La machine +irtuelle" % l'origine, une machine logicielle )ui interpr te $u bHteco$e

    " Le co$e *a+a est compil# e

  • 8/18/2019 Alphorm

    39/368

    La gestion $e le ressource m#moire" La m#moire n'est pas g#r#e e

  • 8/18/2019 Alphorm

    40/368

    L'ou+erture $es technologies" Le processus $'#+olution $u langage est ou+ert

    " Les sp#cifications sont ou+ertes T*2 U

    " e nombreu< inter+enants proposent $es composants" Certains on ten$ance = tirer = eu< les stan$ar$s

    Java, les fondamentaux

    alphorm.com™©

  • 8/18/2019 Alphorm

    41/368

    Ce )u'on a cou+ert" SHnta

  • 8/18/2019 Alphorm

    42/368

    Présentation

    Java, les fondamentaux

    alphorm.com™©

    F bien Brissonne uConsultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    de développement intégré

  • 8/18/2019 Alphorm

    43/368

    !lan" L'4 - etbeans" Cr#er un projet

    " !ro$uire = partir $u projet" L'4 - -clipse

    Java, les fondamentaux

    alphorm.com™©

  • 8/18/2019 Alphorm

    44/368

    etbeans" -n+ironnement $'origine Oracle/Sun

    " Fournit en bun$le a+ec *a+a *

    " !lateforme sur la)uelle on installe $es plugs(in" Supporte plusieurs langages et plusieurs utilisations

    Java, les fondamentaux alphorm.com™©

  • 8/18/2019 Alphorm

    45/368

    Cr#er un projet" La notion $e projet n'est pas *a+a

    " 4l faut cr#er un projet etbeans

    " Le source *a+a est cr##/compil# = partir $e ce projet" Le projet peut aussi r#f#rencer $es #l#ments e

  • 8/18/2019 Alphorm

    46/368

    !ro$uire = partir $u projet" !ro$uction $e .class, issus $e la compilation

    " 9#n#ration $e fichiers ipp#s comme les jar P

    " 9#n#ration $e la $ocumentation techni)ue

    Java, les fondamentaux alphorm.com™©

    L'4 li

  • 8/18/2019 Alphorm

    47/368

    L'4 - -clipse" -clipse est une plateforme $'origine 4B

    " Largement utilis#e

    " 4n$#pen$ante $e *a+a" !lateforme sur la)uelle on installe $es plugs in

    Java, les fondamentaux alphorm.com™©

    " ultilangages, multi(utilisations

    C ) '

  • 8/18/2019 Alphorm

    48/368

    Ce )u'on a cou+ert" L'4 - etbeans" Cr#er un projet

    " !ro$uire = partir $u projet" L'4 - -clipse

    Java, les fondamentaux alphorm.com™©

  • 8/18/2019 Alphorm

    49/368

    Penser en termes d’o !ets

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne uConsultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    pro l#me

    !l

  • 8/18/2019 Alphorm

    50/368

    !lan" omaine/m#tier/analHse/conception/co$e" VZle $u mo$ le $u $omaine

    " VZle $u mo$ le $e conception" Nra$uction en *a+a

    Java, les fondamentaux alphorm.com™©

    i (X ti (X $

  • 8/18/2019 Alphorm

    51/368

    omaine (X conception (X co$e" Le mo$ le $u $omaine est la premi re +ue orient#e objets

    " La trace entre m#tier et co$e est assur#e

    " Le co$e est une autre +ue $u m#tier" Le co$e n'est l= )ue pour r#pon$re = un besoin m#tier

    Java, les fondamentaux alphorm.com™©

    VZle $u mo$ le $u $omaine

  • 8/18/2019 Alphorm

    52/368

    VZle $u mo$ le $u $omaine" Le mo$ le $u $omaine est une +ue orient#e objet

    On peut le tra$uire en co$e T= tra+ers $es #tapes nombreusesU

    4l est compris par le m#tier4l est stable Tcontrairement au co$eU

    Java, les fondamentaux alphorm.com™©

    " Le mo$ le $u $omaine est )uasiment hors informati)ue

    Le mo$ le $e conception

  • 8/18/2019 Alphorm

    53/368

    Le mo$ le $e conception" % partir $u mo$ le $u $omaine

    " !renant en compte l'architecture techni)ue

    " Le mo$ le $e conception est efficace, performant, et fi$ le" 4l sera tra$uit en co$e

    Java, les fondamentaux alphorm.com™©

    Nra$uction en *a+a

  • 8/18/2019 Alphorm

    54/368

    Nra$uction en *a+a" Le tHpe $'objet est une classe (X *a+a

    " Les attributs sont les $onn#es

    " Les m#tho$es sont les fonctions membres" Les associations sont $es attributs r#f#rences

    Java, les fondamentaux alphorm.com™©

    " Le co$e n'in+ente )uasi rien" Le corps $es m#tho$es n'est pas sp#cifi# par un mo$ le $e classes

    Ce )u'on a cou+ert

  • 8/18/2019 Alphorm

    55/368

    Ce )uon a cou+ert" omaine/m#tier/analHse/conception/co$e" VZle $u mo$ le $u $omaine

    " VZle $u mo$ le $e conception" Nra$uction en *a+a

    Java, les fondamentaux alphorm.com™©

  • 8/18/2019 Alphorm

    56/368

    Penser en termes d’o !ets

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne uConsultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    !lan

  • 8/18/2019 Alphorm

    57/368

    !lan" #finition $'un objet" !our)uoi parler $e classes

    " #finir un bon objet m#tier" Les classes applicati+es

    Java, les fondamentaux alphorm.com™©

    "

    #finition $'un objet

  • 8/18/2019 Alphorm

    58/368

    #finition $ un objet" ;ne entit# +i+ante, )ui r#agit au< messages reMus

    " ;n objet contient les $onn#es et les traitements )ui permettent $'agir

    $essus" ;n objet a $es fronti res bien $#finies, $es #tats et $es comportements

    Java, les fondamentaux alphorm.com™©

    !our)uoi parler $es classes

  • 8/18/2019 Alphorm

    59/368

    !our)uoi parler $es classes" ;ne classe est un tHpe $'objet

    " !arler $es tHpes au lieu $es e

  • 8/18/2019 Alphorm

    60/368

    #finir un bon objet m#tier" Sou+ent rep#r# comme un groupe nominal $ans un #nonc#

    " ;n bon objet m#tier est manipul# par le m#tier

    " 4l contient $es $onn#es importantes" 4l est coh#rent $ans un traitement

    Java, les fondamentaux alphorm.com™©

    Les classes applicati+es

  • 8/18/2019 Alphorm

    61/368

    Les classes applicati+es" ;ne classe applicati+e correspon$ au< couches techni)ues

    " -lle apparaRt $ans le mo$ le $e conception

    " 'est pas le reflet $es objets m#tier" !eu+ent ne contenir )ue $es traitements

    Java, les fondamentaux alphorm.com™©

    2ocabulaire

  • 8/18/2019 Alphorm

    62/368

    2ocabulaire" Les classes contiennent toutes les $onn#es et traitements

    " Vien ne peut [tre en $ehors $es classes

    " Les objets mas)uent leur impl#mentation : c'est l'encapsulation" Les classes $#finissent :

    Java, les fondamentaux alphorm.com™©

    $es attributs T$onn#esU$es m#tho$es TtraitementsU

    Ce )u'on a cou+ert

  • 8/18/2019 Alphorm

    63/368

    Ce )uon a cou ert" #finition $'un objet" !our)uoi parler $e classes

    " #finir un bon objet m#tier" Les classes applicati+es

    Java, les fondamentaux alphorm.com™©

    "

  • 8/18/2019 Alphorm

    64/368

    Présentation du langage Java

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne uConsultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    !lan

  • 8/18/2019 Alphorm

    65/368

    !lan" ;ne classe $#finit les attributs et les m#tho$es" Les +isibilit#s autorisent ou inter$isent les acc s au< membres

    " Les constructeurs sont remar)uables" La $#finition $e la classe peut supporter $es mo$ificateurs

    Java, les fondamentaux alphorm.com™©

    ;ne classe $#finit attributs et m#tho$es

  • 8/18/2019 Alphorm

    66/368

    ; $ $" Les attributs sont tHp#s, ce sont les $onn#es

    " Les m#tho$es sont $#crits par un nom, un tHpe $e retour et $esparam tres, eu

  • 8/18/2019 Alphorm

    67/368

    " !our impl#menter l'encapsulation

    " 2isibilit#s : par $#faut, pri+ate, protecte$, public

    " Limitent l'acc s au< membres par $'autres morceau< $e co$e

    Java, les fondamentaux alphorm.com™©

    Les constructeurs

  • 8/18/2019 Alphorm

    68/368

    " Les constructeurs sont $es m#tho$es&ui portent le nom $e la classe

    'ont pas $e tHpe $e retour4nitialisent les attributs

    Java, les fondamentaux alphorm.com™©

    " L'appel $'un constructeur est implicite

    La $#finition $e classe a $es mo$ificateurs

  • 8/18/2019 Alphorm

    69/368

    " Classe publi)ue ou non

    " Classe e

  • 8/18/2019 Alphorm

    70/368

    )" ;ne classe $#finit les attributs et les m#tho$es" Les +isibilit#s autorisent ou inter$isent les acc s au< membres

    " Les constructeurs sont remar)uables" La $#finition $e la classe peut supporter $es mo$ificateurs

    Java, les fondamentaux alphorm.com™©

  • 8/18/2019 Alphorm

    71/368

    Présentation du langage Java

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne uConsultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    d’une classe

    !lan

  • 8/18/2019 Alphorm

    72/368

    " Les composants possibles" Cr#er $es attributs

    " Cr#er $es constructeurs" Cr#er $es m#tho$es

    Java, les fondamentaux alphorm.com™©

    Les composants $'une classe

  • 8/18/2019 Alphorm

    73/368

    " ;ne classe $#finit $es attributs, ou champs $e $onn#es

    " ;ne classe $#finit $es constructeurs, )ui initialisent ces champs

    " ;ne classe $#finit $es m#tho$es, ou fonctions membres" Les membres sont affect#s $'une +isibilit#

    Java, les fondamentaux alphorm.com™©

    " L'or$re $e leurs $#clarations n'est pas significatif

    Cr#er $es attributs

  • 8/18/2019 Alphorm

    74/368

    " ;n champ $e $onn#e est tHp#

    " Son nom suit la con+ention : commence par une minuscule et ensuitecapitalisation

    " -n g#n#ral, la +isibilit# est pri+#e

    Java, les fondamentaux alphorm.com™©

    " e Hpe e ce c amp e onn e es :;n tHpe fon$amental Tint, IU;ne chaRne $e caract res TStringU

    ;ne r#f#rence +ers un autre tHpe, stan$ar$ ou utilisateur

    Cr#er $es constructeurs

  • 8/18/2019 Alphorm

    75/368

    " ;n constructeur est une fonction membre sp#ciale

    " Le nom $'un constructeur est le nom $e la classe

    " 4l peut a+oir $es param tres, mais pas $e retour" ans le corps $u constructeur, on $oit initialiser les champs $e $onn#e

    Java, les fondamentaux alphorm.com™©

    Cr#er $es m#tho$es

  • 8/18/2019 Alphorm

    76/368

    " ;ne m#tho$e est un traitement effectu# sur un objet

    " Son nom suit la m[me con+ention )ue les attributs

    " -lle $#clare une liste $e param tres TtHpe nomU" -lle peut ne pas a+oir $e param tres

    Java, les fondamentaux alphorm.com™©

    " -lle a un retour, sinon, elle $#clare +oi$ P" ;ne m#tho$e correspon$ = un message )ue l'on peut en+oHer = l'objet

    $e ce tHpe

    Ce )u'on a cou+ert

  • 8/18/2019 Alphorm

    77/368

    " Les composants possibles" Cr#er $es attributs

    " Cr#er $es constructeurs" Cr#er $es m#tho$es

    Java, les fondamentaux alphorm.com™©

  • 8/18/2019 Alphorm

    78/368

    Présentation du langage Java

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne uConsultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    de test

    !lan

  • 8/18/2019 Alphorm

    79/368

    " #finition $'une classe $e test" Construction $'une classe $e test

    " ;tilisation simple $'une classe $e test" ;tilisation $'une classe $e test +ia un frame or3

    Java, les fondamentaux alphorm.com™©

    #finition $'une classe $e test

  • 8/18/2019 Alphorm

    80/368

    " ;ne classe )ui ne sert )u'= tester une autre classe

    " ;ne classe est l'unit# $e test par e

  • 8/18/2019 Alphorm

    81/368

    " !our cha)ue classe $u mo$ le, cr#er une classe $e test

    " ans cette nou+elle classe, cr#er une m#tho$e par test = r#aliser

    " ans une m#tho$e $e test : mettre en place le jeu $e test, lancer

    Java, les fondamentaux alphorm.com™©

    ;tilisation simple $'une classe $e test

  • 8/18/2019 Alphorm

    82/368

    " ans un main

    " %ppeler les m#tho$es $e la classe $e test

    " On +oit )u'il est plus simple $e faire $es appels stati)ues P" Vemar)uer la +isualisation $es r#sultats $ans la console

    Java, les fondamentaux alphorm.com™©

    ;tilisation $'un frame or3 $e test

  • 8/18/2019 Alphorm

    83/368

    " *;nit s'est impos# comme un frame or3 $e test

    " %ppels stati)ues

    " Les classes et les m#tho$es $e tests sont annot#s" ;ne ihm simple permet $'i$entifier les r#ussites et les #checs

    Java, les fondamentaux alphorm.com™©

    Ce )u'on a cou+ert

  • 8/18/2019 Alphorm

    84/368

    " #finition $'une classe $e test" Construction $'une classe $e test

    " ;tilisation simple $'une classe $e test" ;tilisation $'une classe $e test +ia un frame or3

    Java, les fondamentaux alphorm.com™©

  • 8/18/2019 Alphorm

    85/368

    Présentation du langage Java

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne uConsultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    programme de test

    !lan

  • 8/18/2019 Alphorm

    86/368

    " Cr#ation $'un programme $e test" Lancement $'un programme $e test *;nit

    Java, les fondamentaux alphorm.com™©

    Cr#ation $'un programme $e test

  • 8/18/2019 Alphorm

    87/368

    " 4l faut $isposer $es classes = tester

    " Cr#er un programme a+ec un main

    " Compiler et e

  • 8/18/2019 Alphorm

    88/368

    " %+ec un frame or3 $e test comme *;nit, construction $es classes $etest simplifi#

    " Lancement $'un ihm sp#cifi)ue

    Java, les fondamentaux alphorm.com™©

    Ce )u'on a cou+ert$ $

  • 8/18/2019 Alphorm

    89/368

    " Cr#ation $'un programme $e test" Lancement $'un programme $e test

    Java, les fondamentaux alphorm.com™©

  • 8/18/2019 Alphorm

    90/368

    Utiliser des primitives

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne uConsultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    varia les de champs

    !lan& ' ( ) ' i i i

  • 8/18/2019 Alphorm

    91/368

    " &u'est(ce )u'une primiti+e " #claration $'un champ $e $onn#e

    " 4nitialiser un champ $e $onn#e

    Java, les fondamentaux alphorm.com™©

    &u'est(ce )u'une primiti+e " L H i i if l H f $ < $ *

  • 8/18/2019 Alphorm

    92/368

    " Les tHpes primitifs sont les tHpes fon$amentau< $e *a+a

    " Les $onn#es primiti+es sont plac#es sur la pile

    " Les +aleurs possibles sont $#termin#es par le tHpe" 4l n'est pas possible $e cr#er $e nou+eau< tHpes primitifs

    Java, les fondamentaux alphorm.com™©

    #claration $'un champ $e $onn#e" L f # # l t NH L 2 i bl \

  • 8/18/2019 Alphorm

    93/368

    " La forme g#n#rale est : NHpe nom eLa2ariable\

    " On peut rajouter la +isibilit#

    " -t une +aleur par $#faut

    Java, les fondamentaux alphorm.com™©

    4nitialiser un champ $e $onn#e" ! $#f t l + l t ? ? ? ll f l i+ t l tH

  • 8/18/2019 Alphorm

    94/368

    " !ar $#faut la +aleur est ?, ?.?, null ou false sui+ant le tHpe

    " 4l faut $onc en g#n#ral $onner une +aleur = ce champ

    " 4nitialiser par $#faut, lors $e la $#claration" -crire le co$e $'initialisation $ans un constructeur

    Java, les fondamentaux alphorm.com™©

    Ce )u'on a cou+ert" &u'est(ce )u'une primiti+e

  • 8/18/2019 Alphorm

    95/368

    &u'est(ce )u'une primiti+e " #claration $'un champ $e $onn#e" 4nitialiser un champ $e $onn#e

    Java, les fondamentaux alphorm.com™©

  • 8/18/2019 Alphorm

    96/368

    Utiliser des primitives

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne uConsultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    !lan" Les tHpes entiers

  • 8/18/2019 Alphorm

    97/368

    Les tHpes entiers" Les tHpes flottants" Le tHpe caract re" Le tHpe bool#en

    Java, les fondamentaux alphorm.com™©

    Les tHpes entiers" ;n octet sign# : bHte

  • 8/18/2019 Alphorm

    98/368

    ;n octet sign# : bHte" eu< octets sign#s : short

    " &uatre octets sign#s : int" Juit octets sign#s : long

    Java, les fondamentaux alphorm.com™©

    " !as $e tHpes non sign#s, mais $es m#tho$es sur les tHpes 4nteger etLong pour g#rer l'arithm#ti)ue non sign#e

    " Les litt#rau< sont tHp#s : ] est un int, ]L est un long

    Les tHpes flottants" A (bit 4--- E7] : float

  • 8/18/2019 Alphorm

    99/368

    A (bit 4--- E7] : float" 1](bit 4--- E7] : $ouble

    " e pas utiliser ces tHpes pour $es mon#taires, mais plutZt Big ecimal" Les litt#rau< sont tHp#s : 7.1 est un $ouble, 7.1F est un float

    Java, les fondamentaux alphorm.com™©

    Le tHpe caract re" Vepr#sent# par char

  • 8/18/2019 Alphorm

    100/368

    Vepr#sent# par char" 51(bit ;nico$e, soit $e ^u???? = ^uFFFF

    " Le tHpe chaRne $e caract re n'est pas un tHpe primitif TStringU

    Java, les fondamentaux alphorm.com™©

    Le tHpe bool#en" ;ne +aleur soit true soit false

  • 8/18/2019 Alphorm

    101/368

    ;ne +aleur soit true, soit false" La taille en m#moire n'est pas pr#cis#e

    " Les bool#ens ne peu+ent [tre confon$us ni a+ec $es entiers, ni a+ec $esr#f#rence TnullU

    Java, les fondamentaux alphorm.com™©

    Ce )u'on a cou+ert" Les tHpes entiers

  • 8/18/2019 Alphorm

    102/368

    Les tHpes entiers" Les tHpes flottants" Le tHpe caract re" Le tHpe bool#en

    Java, les fondamentaux alphorm.com™©

  • 8/18/2019 Alphorm

    103/368

    Utiliser des primitives

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne uConsultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    leur affecter des valeurs

    !lan" Les +ariables en *a+a

  • 8/18/2019 Alphorm

    104/368

    Les ariables en a a" Comportement $es +ariables locales" L'affectation $'une +aleur = une +ariable locale

    Java, les fondamentaux alphorm.com™©

    Les +ariables en *a+a" Les +ariables sont $#clar#es et tHp#es

  • 8/18/2019 Alphorm

    105/368

    $ p" Les +ariables attributs, ou champ $e $onn#e

    " Les +ariables param tres" Les +ariables locales = une m#tho$e

    Java, les fondamentaux alphorm.com™©

    " ote l'absence $e +ariable globale

    Comportement $es +ariables locales" ;ne +ariable locale est $#clar#e = l'int#rieur $'une m#tho$e

  • 8/18/2019 Alphorm

    106/368

    ; $ $ $" -lle $isparaRt = la fin $u bloc _ ` $ans le)uel elle est $#clar#e

    " -lle $oit [tre initialis#e a+ant $'[tre utilis#e

    Java, les fondamentaux alphorm.com™©

    L'affectation $'une +ariable locale" !our [tre utilis#e, une +ariable $oit a+oir une +aleur :

  • 8/18/2019 Alphorm

    107/368

    [ , l'initialisation

    !lus tar$, en affectant une +aleur calcul#e

    " Le compilateur i$entifie les chemins $ans la m#tho$e

    Java, les fondamentaux alphorm.com™©

    " Nous les chemins $oi+ent $onner une +aleur = la +ariable

    " Certaines +ariables sont utilis#es en retour $e fonctions

    Ce )u'on a cou+ert" Les +ariables en *a+a

  • 8/18/2019 Alphorm

    108/368

    " Comportement $es +ariables locales" L'affectation $'une +aleur = une +ariable locale

    Java, les fondamentaux alphorm.com™©

  • 8/18/2019 Alphorm

    109/368

    !lan" ;n mot cl# pour cr#er une constante

  • 8/18/2019 Alphorm

    110/368

    " ;ne constante en attribut, publi)ue ou non" ;ne constante en +ariable locale

    Java, les fondamentaux alphorm.com™©

    ;n mot cl# pour cr#er une constante" -n utilisant le mot(cl# final P

  • 8/18/2019 Alphorm

    111/368

    " 4l faut $onner une +aleur = la +ariable

    " 4l est impossible $e mo$ifier la +aleur $onn#e" Le tHpe $e la +ariable est )uelcon)ue

    Java, les fondamentaux alphorm.com™©

    " !ar con+ention, le nom $e la +ariable est en majuscules

    ;ne constante en attribut" ;ne constante en attribut peut([tre :

  • 8/18/2019 Alphorm

    112/368

    ;ne information constante pour le co$e $e la classe (X pri+ate

    ;ne information constante pour le reste $u mon$e (X public

    " ;n attribut publi)ue et constant n'est pas $angereu<

    Java, les fondamentaux alphorm.com™©

    " -

  • 8/18/2019 Alphorm

    113/368

    " -lle inter$it simplement toute mo$ification

    " -lle est utilisable $ans une classe anonHme $e la m[me port#e" ans le cas $u param tre, attention = ne pas confon$re a+ec les

    Java, les fondamentaux alphorm.com™©

    cons P u 88

    Ce )u'on a cou+ert" ;n mot cl# pour cr#er une constante

  • 8/18/2019 Alphorm

    114/368

    " ;ne constante en attribut, publi)ue ou non" ;ne constante en +ariable locale

    Java, les fondamentaux alphorm.com™©

  • 8/18/2019 Alphorm

    115/368

    Utiliser des primitives

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne uConsultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    arithmétiques

    !lan" Les op#rateurs arithm#ti)ues en *a+a

    L $ H

  • 8/18/2019 Alphorm

    116/368

    " Le comportement $es tHpes

    Java, les fondamentaux alphorm.com™©

    Les op#rateurs arithm#ti)ues" Op#rateurs 8, (, / ,

  • 8/18/2019 Alphorm

    117/368

    " Op#rateurs combinant affectation et op#ration 8 , ( , / ,

    " Op#rateurs unaires 88, ((" L'op#rateur d Tmo$uloU

    Java, les fondamentaux alphorm.com™©

    " !as $e surcharge possible $es op#rateurs

    " 4l e

  • 8/18/2019 Alphorm

    118/368

    " 4l +aut mieu< $onc utiliser $es int

    " Les $#bor$ements sur entiers ne sont pas g#r#s comme sur les r#els" Les litt#rau< ont $es tHpes :

    Java, les fondamentaux alphorm.com™©

    5 est un int

    5.? est un $ouble

  • 8/18/2019 Alphorm

    119/368

  • 8/18/2019 Alphorm

    120/368

    Utiliser des o !ets

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne uConsultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    o !ets

    !lan" V#f#rence +s objet" V#f#rence locale param tre

  • 8/18/2019 Alphorm

    121/368

    V#f#rence locale, param tre" V#f#rence en attribut

    Java, les fondamentaux alphorm.com™©

    V#f#rence +s objet" ;n objet est une one m#moire allou#e a+ec un ne P" ! $ li + tt # i tili #f#

  • 8/18/2019 Alphorm

    122/368

    " !our gar$er un lien +ers cette one m#moire, on utilise une r#f#rence

    " ;n objet ne peut pas [tre manipul# sans r#f#rence" Lors )u'un objet n'est plus r#f#renc#, il est finalis#

    Java, les fondamentaux alphorm.com™©

    " 2oiture titine ne 2oitureTU

    V#f#rence locale, param tre" ;ne r#f#rence +ers un objet peut apparaRtre en param tre

    L'appelant $oit fournir l'objet en )uestion

  • 8/18/2019 Alphorm

    123/368

    L appelant $oit fournir l objet en )uestion

    " ;ne r#f#rence peut [tre une +ariable locale4l faut initialiser cette +ariable :

    Java, les fondamentaux alphorm.com™©

    " partir $'une autre r#f#rence

    " -n cr#ant un objet

    V#f#rence en attribut" ;ne r#f#rence peut [tre un attribut" 4l s'agit $'un lien +ers un autre objet

  • 8/18/2019 Alphorm

    124/368

    " 4l s agit $ un lien +ers un autre objet

    " Les r gles $'initialisation $es tHpes primitifs s'appli)uent2aleur null par $#faut

    Java, les fondamentaux alphorm.com™©

    4nitialisation lors $e la $#claration ou $ans un constructeur

    Ce )u'on a cou+ert" V#f#rence +s objet" V#f#rence locale param tre

  • 8/18/2019 Alphorm

    125/368

    V#f#rence locale, param tre" V#f#rence en attribut

    Java, les fondamentaux alphorm.com™©

  • 8/18/2019 Alphorm

    126/368

    Utiliser des o !ets

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne uConsultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    mémoire

    !lan" ;n objet peut r#f#rencer $'autres objets" V gles $'acc s au< objets en m#moire

  • 8/18/2019 Alphorm

    127/368

    V gles $ acc s au objets en m#moire

    Java, les fondamentaux alphorm.com™©

    ;n objet peut r#f#rencer $'autres objets" 2ia $es attributs en m#moire" es graphes $'objets sont stoc3#s en m#moire

  • 8/18/2019 Alphorm

    128/368

    es graphes $ objets sont stoc3#s en m#moire

    " -

  • 8/18/2019 Alphorm

    129/368

    " Cette r gle s'appli)ue au< graphes $'objets

    " Suppose )ue les r#f#rences sur objet sont compt#es

    Java, les fondamentaux alphorm.com™©

    " au )ue e +e oppeur pense me re ses r rences nu P

    Ce )u'on a cou+ert" ;n objet peut r#f#rencer $'autres objets" V gles $'acc s au< objets en m#moire

  • 8/18/2019 Alphorm

    130/368

    g j

    Java, les fondamentaux alphorm.com™©

  • 8/18/2019 Alphorm

    131/368

    Utiliser des o !ets

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne uConsultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    d’o !ets

    !lan" V#f#rence et objets" %cc#$er = un champ $'un objet

  • 8/18/2019 Alphorm

    132/368

    " %cc#$er = une m#tho$e $'un objet

    Java, les fondamentaux alphorm.com™©

    V#f#rence et objet" ;n objet est accessible +ia les r#f#rences )ui pointent +ers lui" ;ne r#f#rence est un acc s m#moire, mais non e

  • 8/18/2019 Alphorm

    133/368

    ; , p

    " La s#lection $es membres se fait a+ec l'op#rateur . P" Obtenir une r#f#rence = un objet se fait :

    Java, les fondamentaux alphorm.com™©

    -n cr#ant soi(m[me l'objet

    -n in+o)uant une m#tho$e )ui cr#e l'objet et nous le retourne-n r#cup#rant la r#f#rence en param tre

    %cc#$er = un champ" 2ia une r#f#rence, on obtient un acc s au< membres" Si le champ est accessible Tchamp public P par e

  • 8/18/2019 Alphorm

    134/368

    p p p p p%+ec un co$e genre :ref . ttribut

    *e peu< lire, mo$ifierl' ttribut $e l'objet point# parref

    Java, les fondamentaux alphorm.com™©

    " ;n acc s $irect = un champ est rare, car cela ne respecte pas

    l'encapsulation

    %cc#$er = une m#tho$e" 2ia une r#f#rence, on acc $e au< traitements $e l'objet" L'appel se r#alise comme pour un attribut, mais a+ec $es parenth ses,

  • 8/18/2019 Alphorm

    135/368

    pp p pm[me s'il n'H a pas $e param tres = passer

    " Le $#clenchement $e la m#tho$e suppose un effet sur l'objet : '

    Java, les fondamentaux alphorm.com™©

    La m#tho$e mo$ifie l'#tat $e l'objet" -n g#n#ral, l'objet peut gar$er le r#sultat $u calcul lui(m[me

    Ce )u'on a cou+ert" V#f#rence et objets" %cc#$er = un champ $'un objet

  • 8/18/2019 Alphorm

    136/368

    " %cc#$er = une m#tho$e $'un objet

    Java, les fondamentaux alphorm.com™©

  • 8/18/2019 Alphorm

    137/368

    Utiliser des o !ets

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne uConsultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    !lan" &u'est(ce )ue ja+a$oc" 2isiter la $ocumentation $e jse

  • 8/18/2019 Alphorm

    138/368

    " %ppli)uer la $ocumentation $ans son co$e

    Java, les fondamentaux alphorm.com™©

    &u'est(ce )ue ja+a$oc" *a+a$oc est un outil pour pro$uire $e la $ocumentation techni)ue" 4l peut [tre appli)u# sur son propre projet

  • 8/18/2019 Alphorm

    139/368

    " La structure $e la $ocumentation suit celle $u projet

    " Les te

  • 8/18/2019 Alphorm

    140/368

    " La $escription contient $es g#n#ralit#s, $es e

  • 8/18/2019 Alphorm

    141/368

    " %+ec la classe ath, compren$re la $escription $es champs2oir le lien a+ec $'autres classes, Strict ath

    Java, les fondamentaux alphorm.com™©

    Ce )u'on a cou+ert" &u'est(ce )ue ja+a$oc" 2isiter la $ocumentation $e jse

    % l ) l $ $ $

  • 8/18/2019 Alphorm

    142/368

    " %ppli)uer la $ocumentation $ans son co$e

    Java, les fondamentaux alphorm.com™©

  • 8/18/2019 Alphorm

    143/368

    Utiliser des o !ets

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne uConsultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    &tring(uilder

    !lan" La chaRne $e caract res String" Les limites $e la classe String" L'i t# [t $ St i B il$

  • 8/18/2019 Alphorm

    144/368

    " L'int#r[t $e StringBuil$er

    Java, les fondamentaux alphorm.com™©

    La chaRne $e caract res String" ;ne classe, a+ec $es comportements" ;ne cr#ation e

  • 8/18/2019 Alphorm

    145/368

    " L'application $e l'op#rateur 8, H compris pour concat#ner $es primiti+es

    " #tho$e $e manipulation $e chaRne

    Java, les fondamentaux alphorm.com™©

    " 2oir la $ocumentation pour les $#tails

    Les limites $e la classe String" ;ne String est immutable +alue P" Noutes les m#tho$es )ui semblent mo$ifier l'objet String en cr#e un

    autre

  • 8/18/2019 Alphorm

    146/368

    autre

    " Nr s peu efficace pour cr#er un buffer

    Java, les fondamentaux alphorm.com™©

    L'int#r[t $e StringBuil$er" La classe StringBuil$er n'a pas $e relation $e tHpe a+ec String" #$i#e = la gestion $e buffer

    $ $

  • 8/18/2019 Alphorm

    147/368

    %jout $e morceau< $e chaRnesI

    Nroncature al#atoire

    Java, les fondamentaux alphorm.com™©

    " On obtient = tout moment le buffer +ia toStringTU

    Ce )u'on a cou+ert" La chaRne $e caract res String" Les limites $e la classe String" L'int#r[t $e StringBuil$er

  • 8/18/2019 Alphorm

    148/368

    L int#r[t $e StringBuil$er

    Java, les fondamentaux alphorm.com™©

    Utiliser des opérateurs et des

  • 8/18/2019 Alphorm

    149/368

    structures décisionnelles

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne uConsultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    conditionnels

    !lan" Les op#rateurs relationnels" Les op#rateurs con$itionnels

  • 8/18/2019 Alphorm

    150/368

    Java, les fondamentaux alphorm.com™©

    Les op#rateurs relationnels" Op#rateur , G , W,X,W ,X" -+alu#s = un bool#en

    " S' li) l H i i if

  • 8/18/2019 Alphorm

    151/368

    " S'appli)uent = tous les tHpes primitifs

    " S'appli)uent aussi au< r#f#rences, mais attention pas au< objets

    Java, les fondamentaux alphorm.com™©

    Les op#rateurs con$itionnels" Les op#rateurs , sont court(circuit" Les op#rateurs , , s'appli)uent comme sur les bits $'un entier

    " L' # t G t ON

  • 8/18/2019 Alphorm

    152/368

    " L'op#rateur G est ON

    " L'op#rateur ternaire :

    Java, les fondamentaux alphorm.com™©

    Ta X b U % : b

    Si a est sup#rieur = b alors a sinon b

    Ce )u'on a cou+ert" Les op#rateurs relationnels" Les op#rateurs con$itionnels

  • 8/18/2019 Alphorm

    153/368

    Java, les fondamentaux alphorm.com™©

    Utiliser des opérateurs et desstructures décisionnelles

  • 8/18/2019 Alphorm

    154/368

    structures décisionnelles ’

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne uConsultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    !lan" L'#galit# phHsi)ue ou s#manti)ue $es objets" La classe String et ses m#tho$es" ou bien e)ualsTIU

  • 8/18/2019 Alphorm

    155/368

    )

    Java, les fondamentaux alphorm.com™©

    L'#galit# s#manti)ue ou phHsi)ue" ;n objet est sur le tas et est r#f#renc# +ia une r#f#rence" L'op#rateur s'appli)ue sur la r#f#rence, test phHsi)ue

    " Comparer $eu< objets en prenant en compte ce )u'ils contiennent est

  • 8/18/2019 Alphorm

    156/368

    Comparer $eu< objets en prenant en compte ce )u ils contiennent estle test s#manti)ue

    Java, les fondamentaux alphorm.com™©

    " e es s man )ue se a es o e s eu

  • 8/18/2019 Alphorm

    157/368

    )

    " #tho$e e)uals4gnoreCase : test $'#galit# sans pren$re en compte la

    Java, les fondamentaux alphorm.com™©

    ou bien e)ualsTIU" est un test phHsi)ue" Les m#tho$es e)uals ou e)uals4gnoreCase testent le contenu

    " peut ser+ir = i$entifier le contenu C%V String est une immutable

  • 8/18/2019 Alphorm

    158/368

    peut ser+ir i$entifier le contenu C%V String est une immutable+alue P

    Java, les fondamentaux alphorm.com™©

    Ce )u'on a cou+ert" L'#galit# phHsi)ue ou s#manti)ue $es objets" La classe String et ses m#tho$es" ou bien e)ualsTIU

  • 8/18/2019 Alphorm

    159/368

    Java, les fondamentaux alphorm.com™©

    Utiliser des opérateurs et desstructures décisionnelles

  • 8/18/2019 Alphorm

    160/368

    structures décisionnelles

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne uConsultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    conditions et coder

    !lan" Les e

  • 8/18/2019 Alphorm

    161/368

    " ;n branchement comple

  • 8/18/2019 Alphorm

    162/368

    " Le tHpe boolean P repr#sente une +ariable bool#enne

    Java, les fondamentaux alphorm.com™©

    Nester une seule con$ition" !our tester une seule con$ition : if P a+ec ou sans accola$es" 4l est courant $e rajouter sHst#mati)uement les accola$es pour #+iter

    une erreur future : les in$entations ne comptent pas

  • 8/18/2019 Alphorm

    163/368

    " 4l est courant $e rajouter un else P car un if P seul est peu lisible

    Java, les fondamentaux alphorm.com™©

    " a con on es m se en re paren ses

    " La con$ition peut [tre comple

  • 8/18/2019 Alphorm

    164/368

    e fragilit#, $ifficile $e mo$ifier une con$ition sans impact

    Java, les fondamentaux alphorm.com™©

    Facile = boguer, la logi)ue est compli)u#e

    " Les con$itions elles(m[mes sont rapi$ement trop comple

  • 8/18/2019 Alphorm

    165/368

    p

    " !eu [tre le signe $'un man)ue $e conception objet

    Java, les fondamentaux alphorm.com™©

    Ce )u'on a cou+ert" Les e

  • 8/18/2019 Alphorm

    166/368

    " ;n branchement comple

  • 8/18/2019 Alphorm

    167/368

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne uConsultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    !lan" L'instruction if P" Le couple if / else P" L'intense if / else / if /else / I P

  • 8/18/2019 Alphorm

    168/368

    Java, les fondamentaux alphorm.com™©

    L'instruction if P" L'instruction if P est sui+ie $'une con$ition entre parenth ses

  • 8/18/2019 Alphorm

    169/368

    " 4l H a une seule instruction $erri re un if P

    Java, les fondamentaux alphorm.com™©

    " ais on +a placer plusieurs instructions gr ce au< accola$es

    Le couple if / else P" ;n if P sans else P a t(il $u sens

  • 8/18/2019 Alphorm

    170/368

    " ;ne seule instruction apr s un else P, ou bien $es accola$es

    Java, les fondamentaux alphorm.com™©

    L'intense I" -nchaRner $es if / else if / I P est rarement une bonne i$#e

  • 8/18/2019 Alphorm

    171/368

    Java, les fondamentaux alphorm.com™©

    Ce )u'on a cou+ert" L'instruction if P" Le couple if / else P" L'intense if / else / if /else / I P

  • 8/18/2019 Alphorm

    172/368

    Java, les fondamentaux alphorm.com™©

    Utiliser des opérateurs et desstructures décisionnelles

  • 8/18/2019 Alphorm

    173/368

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne uConsultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    !lan" L'instruction if / else P" Le cas $e la cr#ation $es objets" &ue testent r#ellement les con$itions

  • 8/18/2019 Alphorm

    174/368

    Java, les fondamentaux alphorm.com™©

    L'instruction if / else P

    " ;ne instruction con$itionnelle est rapi$ement in#+itable" e pas la ren$re trop comple

  • 8/18/2019 Alphorm

    175/368

    Java, les fondamentaux alphorm.com™©

    Le cas $e la cr#ation $es objets

    " !our cr#er un objet, il faut connaRtre sa classe" La logi)ue con$itionnelle est $onc )uasi(imparable

  • 8/18/2019 Alphorm

    176/368

    Java, les fondamentaux alphorm.com™©

    &ue testent r#ellement les con$itions

    " 4l faut #+iter $e tester le tHpe $es objets!ar instanceof

    !ar un autre moHen

    " ! $# l h $ #th $ $ bj t f ti $ tH il

  • 8/18/2019 Alphorm

    177/368

    " !our $#clencher $es m#tho$es sur $es objets en fonctions $es tHpes, il

    Java, les fondamentaux alphorm.com™©

    " Les con$itions sont sou+ent $es primiti+es

    " La combinaison $es +ariables $e con$itions refl te le r#sultat $'unem#tho$e

    Ce )u'on a cou+ert

    " L'instruction if / else P" Le cas $e la cr#ation $es objets" &ue testent r#ellement les con$itions

  • 8/18/2019 Alphorm

    178/368

    Java, les fondamentaux alphorm.com™©

    Utiliser des opérateurs et desstructures décisionnelles

  • 8/18/2019 Alphorm

    179/368

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne uConsultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    !lan" Forme g#n#rale $u s itch" &uan$ utiliser s itch" &uan$ ne pas utiliser s itch

  • 8/18/2019 Alphorm

    180/368

    Java, les fondamentaux alphorm.com™©

    Forme g#n#rale $u s itch

    " 4l faut une +ariable, enti re jus)u'= *a+aE, String compris $epuis" Le cas par $#faut est optionnel

  • 8/18/2019 Alphorm

    181/368

    Java, les fondamentaux alphorm.com™©

    &uan$ utiliser le s itch

    " Veste simple et in#+itable

  • 8/18/2019 Alphorm

    182/368

    Java, les fondamentaux alphorm.com™©

    &uan$ ne pas utiliser le s itch

    " -

  • 8/18/2019 Alphorm

    183/368

    Java, les fondamentaux alphorm.com™©

    Ce )u'on a cou+ert

    " Forme g#n#rale $u s itch" &uan$ utiliser s itch" &uan$ ne pas utiliser s itch

  • 8/18/2019 Alphorm

    184/368

    Java, les fondamentaux alphorm.com™©

    Créer et utiliser des ta leaux

  • 8/18/2019 Alphorm

    185/368

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne uConsultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    ta leau à . dimension

    !lan" &u'est(ce )u'un tableau " Nableau $e primiti+es" Nableau $'objets

  • 8/18/2019 Alphorm

    186/368

    Java, les fondamentaux alphorm.com™©

    &u'est(ce )u'un tableau

    " Le tableau est un objet" 4l s'instancie a+ec un ne

    " Son tHpe et N k

    " 4l ne fournit aucune information n'a aucune intelligence

  • 8/18/2019 Alphorm

    187/368

    4l ne fournit aucune information, n a aucune intelligence

    Java, les fondamentaux alphorm.com™©

    Nableau $e primiti+es

    " ;n tableau $e tHpe primitifs contient les +aleurs" Les +aleurs sont mises = ? Ten fonction $u tHpeU

    " ;ne seul ne P suffit = $isposer $es $onn#es

  • 8/18/2019 Alphorm

    188/368

    Java, les fondamentaux alphorm.com™©

    Nableau $'objets

    " Le tableau $'objets n'e

  • 8/18/2019 Alphorm

    189/368

    4l faut $onc un autre ne pour cha)ue objet $ont on +eut $isposer

    Java, les fondamentaux alphorm.com™©

    Ce )u'on a cou+ert"

    &u'est(ce )u'un tableau " Nableau $e primiti+es" Nableau $'objets

  • 8/18/2019 Alphorm

    190/368

    Java, les fondamentaux alphorm.com™©

    Créer et utiliser des ta leaux

  • 8/18/2019 Alphorm

    191/368

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne uConsultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    ta leau à / dimensions

    !lan" &u'est(ce )u'un tableau = $eu< $imensions" Les ser+ices $e ce tableau

  • 8/18/2019 Alphorm

    192/368

    Java, les fondamentaux alphorm.com™©

    &u'est(ce )u'un tableau = $eu< $imensions " On sp#cifie $imensions, le tableau est $onc une matrice

    " 4l faut $eu< in$ices pour ranger un #l#ment $ans le tableau

    " On peut aussi l'initialiser $e faMon stati)ue

  • 8/18/2019 Alphorm

    193/368

    Java, les fondamentaux alphorm.com™©

    Les ser+ices $e ce tableau" L'attribut en lecture seule length P est $isponible pour les

    $imensions

  • 8/18/2019 Alphorm

    194/368

    Java, les fondamentaux alphorm.com™©

    Ce )u'on a cou+ert" &u'est(ce )u'un tableau = $eu< $imensions" Les ser+ices $e ce tableau

  • 8/18/2019 Alphorm

    195/368

    Java, les fondamentaux alphorm.com™©

    Créer et utiliser des ta leaux

  • 8/18/2019 Alphorm

    196/368

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne uConsultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    le ta leau

    !lan" Les boucles for, hile, $o( hile, forTeachU" Le parcours $u tableau = une $imension" Le parcours $u tableau = $imensions

  • 8/18/2019 Alphorm

    197/368

    Java, les fondamentaux alphorm.com™©

    Les boucles" La boucle hileTcon$U _ `

    " La boucle $o _ I ` hileTcon$U \

    " La boucle forT int i ?\ iWcon$\ i88U _ `

    " La boucle for T - e: tabU _ `

  • 8/18/2019 Alphorm

    198/368

    Java, les fondamentaux alphorm.com™©

    !arcourir un tableau = une $imension" %+ec une boucle for bas# sur une +ariable

    La +ariable $e boucle est in$ice $'acc s $ans le tableau

    " %+ec une boucle for each P

    On ressort l'#lement contenu $ans le tableau

  • 8/18/2019 Alphorm

    199/368

    Java, les fondamentaux alphorm.com™©

    !arcourir un tableau = $eu< $imensions" %+ec une $ouble boucle

    " Les +ariables $e boucles sont les in$ices $'acc s au< #l#ments $utableau

    " La capacit# $u tableau length P est utilis#e

  • 8/18/2019 Alphorm

    200/368

    Java, les fondamentaux alphorm.com™©

    Ce )u'on a cou+ert" Les boucles for, hile, $o( hile, forTeachU" Le parcours $u tableau = une $imension" Le parcours $u tableau = $imensions

  • 8/18/2019 Alphorm

    201/368

    Java, les fondamentaux alphorm.com™©

    Créer et utiliser des ta leaux

  • 8/18/2019 Alphorm

    202/368

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne uConsultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    Arra%List

    !lan" &u'est(ce )ue ja+a.util.%rraHList" Comment initialiser une %rraHList" !arcourir une %rraHList

  • 8/18/2019 Alphorm

    203/368

    Java, les fondamentaux alphorm.com™©

    &u'est(ce )u'une %rraHList" ;n objet $e ja+a.util

    " Nableau $Hnami)ue, se re$imensionne seule

    " Offre $es ser+ices suppl#mentaires

  • 8/18/2019 Alphorm

    204/368

    Java, les fondamentaux alphorm.com™©

    Comment initialiser une %rraHList" -n la remplissant au fur et au mesure, a+ec a$$ P

    " -n lui $onnant une taille initiale

  • 8/18/2019 Alphorm

    205/368

    Java, les fondamentaux alphorm.com™©

    !arcourir une %rraHList" -n utilisant un in$ice jus)u'= si e P

    " -n utilisant le for each P

  • 8/18/2019 Alphorm

    206/368

    Java, les fondamentaux alphorm.com™©

    Ce )u'on a cou+ert" &u'est(ce )ue ja+a.util.%rraHList" Comment initialiser une %rraHList" !arcourir une %rraHList

  • 8/18/2019 Alphorm

    207/368

    Java, les fondamentaux alphorm.com™©

    Créer et utiliser des ta leaux

  • 8/18/2019 Alphorm

    208/368

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne uConsultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    !lan" Le pac3age ja+a.util" ;tiliser import

  • 8/18/2019 Alphorm

    209/368

    Java, les fondamentaux alphorm.com™©

    Le pac3age a+a.util" Les classes $e collection se trou+ent $ans ja+a.util

    2oir la $ocumentation

    " On ne peut pas utiliser le nom simple $e la classe %rraHList, sans son

    nom $e pac3age '

  • 8/18/2019 Alphorm

    210/368

    Java, les fondamentaux alphorm.com™©

    L'instruction import" %rbitrage entre utiliser le nom complet $e la classe

    " Ou bien faire un import P $e la classe, et utiliser son nom court

    " %ucun impact sur le co$e g#n#r#

    " Confort $e co$age et $e lecture" ! $'i t $ 3 l i( [

  • 8/18/2019 Alphorm

    211/368

    Java, les fondamentaux alphorm.com™©

    " !as $'import $u pac3age lui(m[me

    " On importe $es classes $'un pac3age" On peut importer toutes les classes $'un pac3age

    Ce )u'on a cou+ert" Le pac3age ja+a.util" ;tiliser import

  • 8/18/2019 Alphorm

    212/368

    Java, les fondamentaux alphorm.com™©

    Créer et utiliser des ta leaux

  • 8/18/2019 Alphorm

    213/368

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne uConsultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    ta leau

    !lan" %cc#$er au< +aleurs $ans un tableau" %cc#$er au< +aleurs $ans une %rraHList

  • 8/18/2019 Alphorm

    214/368

    Java, les fondamentaux alphorm.com™©

    %cc#$er au< +aleurs $ans un tableau" Le tableau supporte l'acc s al#atoire

    " %+ec l'op#rateur k, on lit n'importe )uelle +aleur

    " Les $#bor$ements sont rep#r#s

    " Le m[me op#rateur permet $'#crire" Le tableau ne se re$imensionne pas

  • 8/18/2019 Alphorm

    215/368

    Java, les fondamentaux alphorm.com™©

    Le tableau ne se re$imensionne pas

    %cc#$er au< +aleur $'une %rraHList" Ce tableau peut se re$imensionner seul

    " %+ec getTintU, on obtient la i me +aleur

    " ais pour mo$ifier le i me #l#ment, utiliser a$$Tint, -U

  • 8/18/2019 Alphorm

    216/368

    Java, les fondamentaux alphorm.com™©

    Ce )u'on a cou+ert" %cc#$er au< +aleurs $ans un tableau" %cc#$er au< +aleurs $ans une %rraHList

  • 8/18/2019 Alphorm

    217/368

    Java, les fondamentaux alphorm.com™©

    Créer et utiliser des ta leaux

  • 8/18/2019 Alphorm

    218/368

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne uConsultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

  • 8/18/2019 Alphorm

    219/368

    Les arguments $e la ligne $e comman$e" Les arguments fournit apr s ja+a app P sur le ligne $e comman$e

    " S#par#s par $es blancs

    " Ce sont $es chaRnes $e caract res $ans le main

  • 8/18/2019 Alphorm

    220/368

    Java, les fondamentaux alphorm.com™©

    !arcourir le tableau" Soit utiliser length, soit for each P

    " La capacit# $u tableau est sa taille utile

    " !ermet tHpi)uement $e passer $es options = l'application

    " ;tilisable m[me a+ec netbeans ou eclipse

  • 8/18/2019 Alphorm

    221/368

    Java, les fondamentaux alphorm.com™©

    Con+ertir les #l#ments $u tableau" !our [tre e

  • 8/18/2019 Alphorm

    222/368

    Java, les fondamentaux alphorm.com™©

    Ce )u'on a cou+ert" Les arguments $e la ligne $e comman$e" !arcourir le tableau" Con+ertir les #l#ments $e ce tableau

  • 8/18/2019 Alphorm

    223/368

    Java, les fondamentaux alphorm.com™©

    Utiliser des oucles

  • 8/18/2019 Alphorm

    224/368

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne uConsultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    !lan" Les composants $e la boucle $o / hile" Les composants $e la boucle hile" Les erreurs = ne pas faire

  • 8/18/2019 Alphorm

    225/368

    Java, les fondamentaux alphorm.com™©

    Les composants $e la boucle $o/ hile" ;n bloc $e co$e = e

  • 8/18/2019 Alphorm

    226/368

    Java, les fondamentaux alphorm.com™©

    Les composants $e la boucle hile" ;ne ou plusieurs instructions $ans un bloc

    " ;ne con$ition pour arr[ter la boucle

  • 8/18/2019 Alphorm

    227/368

    Java, les fondamentaux alphorm.com™©

    Les erreurs = ne pas faire" !our le hile P, ne pas oublier les accola$es si besoin

    " &ue la con$ition permette $e sortir $e la boucle

  • 8/18/2019 Alphorm

    228/368

    Java, les fondamentaux alphorm.com™©

    Ce )u'on a cou+ert" Les composants $e la boucle $o / hile" Les composants $e la boucle hile" Les erreurs = ne pas faire

  • 8/18/2019 Alphorm

    229/368

    Java, les fondamentaux alphorm.com™©

    Utiliser des oucles

  • 8/18/2019 Alphorm

    230/368

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne uConsultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    !lan" Les composants $'une boucle for P" Les a+antages $u for sur le hile" Les #critures limites $u for P

  • 8/18/2019 Alphorm

    231/368

    Java, les fondamentaux alphorm.com™©

    Les composants $'une boucle for" 4nitialisation

    " Nant )ue

    " 4ncr#ment

  • 8/18/2019 Alphorm

    232/368

    Java, les fondamentaux alphorm.com™©

    Les a+antages $u for sur le hile" Le for P poss $e toujours A parties

    " On oublie moins la mo$ification $e la +ariable $e boucle

    " L'initialisation est plus #+i$ente

  • 8/18/2019 Alphorm

    233/368

    Java, les fondamentaux alphorm.com™©

    Les #critures limites $u for" ;tiliser un for P pour une boucle infinie

    " Oublier +olontairement une partie $u for P

    " ettre $es listes $'initialisation

    " ettre $es listes $'incr#ments" ;tiliser $es con$itions $'arr[t compli)u#es

  • 8/18/2019 Alphorm

    234/368

    Java, les fondamentaux alphorm.com™©

    Ce )u'on a cou+ert" Les composants $'une boucle for P" Les a+antages $u for sur le hile" Les #critures limites $u for P

  • 8/18/2019 Alphorm

    235/368

    Java, les fondamentaux alphorm.com™©

    Utiliser des oucles

    une oucle for

  • 8/18/2019 Alphorm

    236/368

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne uConsultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.com

    Blog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    !lan" Vemar)ues sur le contenu $'une %rraHList" !arcourir une %rraHList en utilisant get P" !arcourir une %rraHList en utilisant un it#rateur

  • 8/18/2019 Alphorm

    237/368

    Java, les fondamentaux alphorm.com™©

    Vemar)ues sur le contenu $'une %rraHList" %rraHList est une impl#mentation tableau

    " epuis *a+a7, %rraHList peut [tre tHp# : %rraHListWStringX

    " %+ant, %rraHList contient $es Object

    " 4l est possible $e r#cup#rer le i me #l#ment $u tableau" L'or$re est conser+# G

  • 8/18/2019 Alphorm

    238/368

    Java, les fondamentaux alphorm.com™©

    !arcourir une %rraHList a+ec get" %+ec la m#tho$e get P, on peut passer un in$ice

    " V#cup#rer le i me #l#ment

    " La m#tho$e si e P $onne le nombre $'#l#ments pr#sents

  • 8/18/2019 Alphorm

    239/368

    Java, les fondamentaux alphorm.com™©

    !arcourir une %rraHList a+ec $es it#rateurs" ;n it#rateur est une sorte $e curseur P sur l'%rraHList

    " 4l peut a+ancer et $onner l'#l#ment courant

    " L'in$ice au)uel on acc $e n'est plus important

    " !rati)ue si on +eut juste parcourir $u premier au $ernier

  • 8/18/2019 Alphorm

    240/368

    Java, les fondamentaux alphorm.com™©

    Ce )u'on a cou+ert" Vemar)ues sur le contenu $'une %rraHList" !arcourir une %rraHList en utilisant get P" !arcourir une %rraHList en utilisant un it#rateur

  • 8/18/2019 Alphorm

    241/368

    Java, les fondamentaux alphorm.com™©

    Utiliser des oucles

    varia les

  • 8/18/2019 Alphorm

    242/368

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne u

    Consultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.com

    Blog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    !lan" #finir la port#e $'une +ariable" Les +ariables locales et les param tres" Les +ariables champ $e $onn#e" !our)uoi n'H a t(il pas en *a+a $e +ariable $e port#e globale

  • 8/18/2019 Alphorm

    243/368

    Java, les fondamentaux alphorm.com™©

    #finir la port#e $'une +ariable" La one $e co$e oQ l'acc s = la +ariable est possible

    " !lus la port#e est r#$uite, plus la gestion $e la ressource est simple

    " La $onn#e $isparaRt elle(m[me $ans certains cas

    " Lors)u'on sort $e la port#e $'une r#f#rence, on n'acc $e !L;S = l'objet" -n *a+a, les blocs _ I ` limite la port#e $'une +ariable

  • 8/18/2019 Alphorm

    244/368

    Java, les fondamentaux alphorm.com™©

    Les +ariables locales et param tres" ;ne +ariable locale ne peut pas [tre utilis#e en $ehors $e la m#tho$e

    $ans la)uelle elle est $#clar#e" !our gar$er la $onn#e, il faut la recopier $ans une autre +ariable

    Vetour $e fonction

    " Les param tres sont $es sortes $e +ariables locales

  • 8/18/2019 Alphorm

    245/368

    Java, les fondamentaux alphorm.com™©

    La +aleur est fournie par l'appelant

    Les +ariables champ $e $onn#e" ;n attribut, ou champ $e $onn#e a une port#e limit#e par la classe

    " 4l appartient = l'objet ou = la classe Tcf staticU

    " L'attribut a $onc une port#e sup#rieure = celle $'une +ariable locale

  • 8/18/2019 Alphorm

    246/368

    Java, les fondamentaux alphorm.com™©

    !as $e +ariables globales en *a+a" La port#e ultime serait la +ariable globale

    " ais ce tHpe $e port#e pose $es probl mesifficile $e maRtriser )ui utilise la +ariable

    -tat $e la +ariable cahoti)ue " %+ec le static P, certains essaient $e recr#er la situation $'une port#e

    globale

  • 8/18/2019 Alphorm

    247/368

    Java, les fondamentaux alphorm.com™©

    Ce )u'on a cou+ert" #finir la port#e $'une +ariable" Les +ariables locales et les param tres" Les +ariables champ $e $onn#e" !our)uoi n'H a t(il pas en *a+a $e +ariable $e port#e globale

  • 8/18/2019 Alphorm

    248/368

    Java, les fondamentaux alphorm.com™©

    Utiliser des méthodes

    méthodes

  • 8/18/2019 Alphorm

    249/368

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne u

    Consultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.com

    Blog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    !lan" Cr#er une m#tho$e $ans une classe" %ppeler une m#tho$e

  • 8/18/2019 Alphorm

    250/368

    Java, les fondamentaux alphorm.com™©

    Cr#er une m#tho$e" !our r#aliser un traitement sur les $onn#es $e l'objet

    ;ne m#tho$e a une impl#mentation

    " !our proposer un ser+ice = l'e

  • 8/18/2019 Alphorm

    251/368

    Java, les fondamentaux alphorm.com™©

  • 8/18/2019 Alphorm

    252/368

    Ce )u'on a cou+ert" Cr#er une m#tho$e $ans une classe" %ppeler une m#tho$e

  • 8/18/2019 Alphorm

    253/368

    Java, les fondamentaux alphorm.com™©

    Utiliser des méthodes

  • 8/18/2019 Alphorm

    254/368

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne u

    Consultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.com

    Blog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    !lan" Le passage $es arguments = l'appel" Le passage $e primiti+es" Le passage $'objets

  • 8/18/2019 Alphorm

    255/368

    Java, les fondamentaux alphorm.com™©

    Le passage $es arguments = l'appel" Lors $e l'appel $e la m#tho$e, utiliser les parenth ses

    Les parenth ses seules si pas $'argument

    La liste $es arguments sans leurs tHpes

    " Les arguments $oi+ent correspon$re au< tHpes atten$us " 4l n'est pas possible $'omettre $es arguments

    " !as $e +aleurs par $#faut sur les param tres

  • 8/18/2019 Alphorm

    256/368

    Java, les fondamentaux alphorm.com™©

    Le passage $e primiti+es" Les primiti+es sont toujours recopi#es $ans la m#tho$e

    " Les param tres sont $onc en 4

    " 4l n'H a aucun mot cl# pour changer ce comportement

    " On $it )ue les primiti+es sont pass#es par +aleur

  • 8/18/2019 Alphorm

    257/368

    Java, les fondamentaux alphorm.com™©

    Le passage $es objets" Les objets sont r#f#renc#s

    " La copie enti re $es objets n'e

  • 8/18/2019 Alphorm

    258/368

    Java, les fondamentaux alphorm.com™©

    Ce )u'on a cou+ert" Le passage $es arguments = l'appel" Le passage $e primiti+es" Le passage $'objets

  • 8/18/2019 Alphorm

    259/368

    Java, les fondamentaux alphorm.com™©

    Utiliser des méthodes

    varia les statiques

  • 8/18/2019 Alphorm

    260/368

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne u

    Consultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.com

    Blog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    !lan" Cr#er $es +ariables stati)ues et les utiliser" Cr#er $es m#tho$es stati)ues et les utiliser

  • 8/18/2019 Alphorm

    261/368

    Java, les fondamentaux alphorm.com™©

    Cr#er $es +ariables stati)ues et les utiliser" #finition $'une +ariable stati)ue

    ;ne +ariable )ui est allou#e en $ehors $es objets

    " La sHnta

  • 8/18/2019 Alphorm

    262/368

    Java, les fondamentaux alphorm.com™©

    " ;tilisation $#nonc#e : une +ariable globale en *a+a GG

    Cr#er $es m#tho$es stati)ues et les utiliser" SHnta

  • 8/18/2019 Alphorm

    263/368

    Java, les fondamentaux alphorm.com™©

    !arce )u on n a pas acc s = l objet

    I

    Ce )u'on a cou+ert" Cr#er $es +ariables stati)ues et les utiliser

    " Cr#er $es m#tho$es stati)ues et les utiliser

  • 8/18/2019 Alphorm

    264/368

    Java, les fondamentaux alphorm.com™©

    Utiliser des méthodes

  • 8/18/2019 Alphorm

    265/368

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne u

    Consultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    !lan" Les mo$ificateurs : public, protecte$, pri+ate

    " 2isibilit# par $#faut, sans mo$ificateur" 2isibilit# pri+ate P" 2isibilit# protecte$ P

    "

  • 8/18/2019 Alphorm

    266/368

    Java, les fondamentaux alphorm.com™©

    Les mo$ificateurs" ;n mot(cl# )ue l'on place a+ant la $#claration $u membre

    " Les mo$ificateurs $e +isibilit#!our r#gler l'encapsulation

    " Les mots(cl#s static P, final P, I

  • 8/18/2019 Alphorm

    267/368

    Java, les fondamentaux alphorm.com™©

    La +isibilit# par $#faut" ;n membre sans +isibilit#

    " Noutes les classes $u m[me pac3age peu+ent H acc#$er" 4nt#ressant pour les infos/traitements partag#s par le pac3age

  • 8/18/2019 Alphorm

    268/368

    Java, les fondamentaux alphorm.com™©

    La +isibilit# pri+ate" !our prot#ger les $onn#es internes = l'objet

    " %ccessible uni)uement par le co$e $e la classe elle(m[me" Les membres pri+ate P font partie $e l'impl#mentation

  • 8/18/2019 Alphorm

    269/368

    Java, les fondamentaux alphorm.com™©

    La +isibilit# protecte$" ;n acc s interm#$iaire

    " Noutes les classes $u pac3age H acc $ent" -t aussi toutes les classes filles' I cf h#ritageI

    " !ermet $'ou+rir un acc s en $irection $es futures classes #ten$ues" 4nt#ressant surtout pour les m#tho$es

  • 8/18/2019 Alphorm

    270/368

    Java, les fondamentaux alphorm.com™©

    La +isibilit# public" La +isibilit# la plus large

    " -

  • 8/18/2019 Alphorm

    271/368

    Java, les fondamentaux alphorm.com™©

  • 8/18/2019 Alphorm

    272/368

    Utiliser des méthodes

    méthodes

  • 8/18/2019 Alphorm

    273/368

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne u

    Consultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    !lan" La sHnta

  • 8/18/2019 Alphorm

    274/368

    Java, les fondamentaux alphorm.com™©

    La sHnta

  • 8/18/2019 Alphorm

    275/368

    Java, les fondamentaux alphorm.com™©

    %ppeler une m#tho$e surcharg#e" Choisir les arguments = passer

    ombre $'argumentsNHpe $es arguments

    " Le compilateur fait le bon appel

    " Nout est fig# = la compilation

    " On parle parfois $e polHmorphisme $e surcharge

  • 8/18/2019 Alphorm

    276/368

    Java, les fondamentaux alphorm.com™©

    La surcharge et l'h#ritage" La surcharge est r#solue = tra+ers l'h#ritage

    " ;ne classe fille peut enrichir l'interface en ajoutant une surcharge" e pas confon$re

    SurchargeVe$#finition

  • 8/18/2019 Alphorm

    277/368

    Java, les fondamentaux alphorm.com™©

    Ce )u'on a cou+ert" La sHnta

  • 8/18/2019 Alphorm

    278/368

    Java, les fondamentaux alphorm.com™©

    Utiliser l’encapsulation et lesconstructeurs

  • 8/18/2019 Alphorm

    279/368

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne uConsultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    !lan" L'initialisation $es objets

    " Le rZle $es constructeurs" Les blocs $'initialisation

  • 8/18/2019 Alphorm

    280/368

    Java, les fondamentaux alphorm.com™©

    L'initialisation $es objets" Les champs $e $onn#e sont mis = ? P

    ? pour les entiers, ?.? pour les flottants, ^u???? pour char!our les r#f#rences, null et false pour les bool#ens

    " Cette initialisation par $#faut est rarement suffisante

    " 4l est possible $e $onner une +aleur = la $#claration $u champ

  • 8/18/2019 Alphorm

    281/368

    Java, les fondamentaux alphorm.com™©

    Le rZle $es constructeurs" !ar $#faut, le compilateur g#n re un constructeur sans param tre

    " La r##criture $e ce constructeur est possible" 4l est possible $e cr#er $'autres constructeurs, a+ec $es signatures

    $iff#rentes

    ' '

    " e r e u cons ruc eur es n a ser es c amps e o e

    " %fin )ue l'objet soit $ans un bon #tat

  • 8/18/2019 Alphorm

    282/368

    Java, les fondamentaux alphorm.com™©

    Les blocs $'initialisation" On peut simplement #crire un bloc _I` $ans le)uel on initialise les

    champs" Ce bloc peut [tre mar)u# static P, $ans ce cas ce bloc sert = initialiser

    les champs static P

  • 8/18/2019 Alphorm

    283/368

    Java, les fondamentaux alphorm.com™©

    Ce )u'on a cou+ert" L'initialisation $es objets

    " Le rZle $es constructeurs" Les blocs $'initialisation

  • 8/18/2019 Alphorm

    284/368

    Java, les fondamentaux alphorm.com™©

    Utiliser l’encapsulation et lesconstructeurs

  • 8/18/2019 Alphorm

    285/368

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne uConsultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    !lan" L'encapsulation par la +isibilit# $es membres

    " L'encapsulation par la +isibilit# $es classes

  • 8/18/2019 Alphorm

    286/368

    Java, les fondamentaux alphorm.com™©

    L'encapsulation par la +isibilit# $es membres" Les membres $ans une classe sont par $#faut accessible $es autres

    classes $u pac3age" Les +isibilit#s public P, protecte$ P et pri+ate P permettent $e

    r#gler ces acc s

    " Ces +isibilit#s s'enten$ent par rapport = la classe" Cela n'a pas $e rapport a+ec la port#e

  • 8/18/2019 Alphorm

    287/368

    Java, les fondamentaux alphorm.com™©

    L'encapsulation par la +isibilit# $es classes" ;ne classe par $#faut n'est accessible )ue $epuis son pac3age

    " ;ne classe peut [tre public P, et elle $e+ient accessible $e l'e

  • 8/18/2019 Alphorm

    288/368

    Java, les fondamentaux alphorm.com™©

    Ce )u'on a cou+ert" L'encapsulation par la +isibilit# $es membres

    " L'encapsulation par la +isibilit# $es classes

  • 8/18/2019 Alphorm

    289/368

    Java, les fondamentaux alphorm.com™©

    Concepts avancés

  • 8/18/2019 Alphorm

    290/368

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne uConsultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    !lan" La relation $e g#n#ralisation(sp#cialisation

    " Les cons#)uences en termes $'h#ritage" Le mot(cl# e

  • 8/18/2019 Alphorm

    291/368

    Java, les fondamentaux alphorm.com™©

    La relation $e g#n#ralisation(sp#cialisation" ;ne relation stati)ue entre classe

    " &ui relie un concept g#n#ral = un concept sp#cialis#Chat(XF#lin

    " &ui #+ite les $oublonsLes membres $e F#lin sont h#rit#s par le Chat

    " &ui intro$uit $es +ariations sur un th me

    Le Chat parle $'une faMon sp#cifi)ue

  • 8/18/2019 Alphorm

    292/368

    Java, les fondamentaux alphorm.com™©

    Les cons#)uences en terme $'h#ritage" Les membres sont tous h#rit#s

    " Les membres publi)ues $e l'anc[tre restent publi)ues sur la classe fille" Seuls les membres pri+#s $e l'anc[tre sont inaccessibles $e la fille

    " La classe fille peut compl#terLes m#tho$es en en ajoutant

    Les champs $e $onn#es en en ajoutant

    Les m#tho$es en les re$#finissant

  • 8/18/2019 Alphorm

    293/368

    Java, les fondamentaux alphorm.com™©

    Le mot cl# e

  • 8/18/2019 Alphorm

    294/368

    Java, les fondamentaux alphorm.com™©

    Ce )u'on a cou+ert" La relation $e g#n#ralisation(sp#cialisation

    " Les cons#)uences en termes $'h#ritage" Le mot(cl# e

  • 8/18/2019 Alphorm

    295/368

    Java, les fondamentaux alphorm.com™©

    Concepts avancés

  • 8/18/2019 Alphorm

    296/368

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne uConsultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    !lan" La re$#finition $es m#tho$es

    " ettre en u+re le polHmorphisme" Sa+oir utiliser le polHmorphisme

  • 8/18/2019 Alphorm

    297/368

    Java, les fondamentaux alphorm.com™©

    La re$#finition $es m#tho$es" La relation $e g#n#ralisation(sp#cialisation suppose l'h#ritage $es

    membres $e la classe m re par la classe fille

    " Cette relation est utile lors)ue la sous(classe est une sp#cialisation $e lasuper(classe

    " Cette sp#cialisation peut [tre $ue = une re$#finition $e certainscomportementsVe$#clarer $ans la sous(classe la m[me m#tho$e )ue $ans la super(classe,mais mo$ifier le corps $e la m#tho$e

  • 8/18/2019 Alphorm

    298/368

    Java, les fondamentaux alphorm.com™©

    ettre en u+re le polHmorphisme" 4l suffit $e :

    isposer $'un h#ritageVe$#finir une m#tho$e

    !ointer sur un objet en tant )ue super(classe

    ppe er a m t o e re n e

  • 8/18/2019 Alphorm

    299/368

    Java, les fondamentaux alphorm.com™©

    Sa+oir utiliser le polHmorphisme" ;tiliser le polHmorphisme lors)u'on i$entifie une comportement )ui

    $#pen$ $u tHpe $e l'objete pas tester le tHpe $es objets

    " oin$re usage $e la logi)ue con$itionnelle

  • 8/18/2019 Alphorm

    300/368

    Java, les fondamentaux alphorm.com™©

    Ce )u'on a cou+ert" La re$#finition $es m#tho$es

    " ettre en u+re le polHmorphisme" Sa+oir utiliser le polHmorphisme

  • 8/18/2019 Alphorm

    301/368

    Java, les fondamentaux alphorm.com™©

    Concepts avancés

    0

    Si h // l h

    des sous0classes

  • 8/18/2019 Alphorm

    302/368

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne uConsultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blogForum :http:// .alphorm.com/forum

    !lan" es super(classes pour factoriser les membres

    " Substituer $es sous(classes au< super(classes" Sp#cialiser les comportements $es sous(classes

  • 8/18/2019 Alphorm

    303/368

    Java, les fondamentaux alphorm.com™©

    es super(classes pour factoriser" Lors)ue $es classes contiennent $es membres communs

    " Faire apparaRtre une super(classe )ui regroupe ces membres communs" Cette super(classe peut [tre abstraite

    " -lle peut contenir une ou plusieurs m#tho$es abstraites

  • 8/18/2019 Alphorm

    304/368

    Java, les fondamentaux alphorm.com™©

    Substituer $es sous(classes" ;ne sous(classe $oit [tre conforme = l'interface $e la super(classe

    " -lle contient 5??d $es $onn#es" -lle r#pon$ = 5??d $es m#tho$es

    La signification $es m#tho$es $oit [tre conforme

  • 8/18/2019 Alphorm

    305/368

    Java, les fondamentaux alphorm.com™©

    Sp#cialiser le comportement" ;ne sous(classe peut proposer $es attributs et $es m#tho$es en plus

    " -lle peut re$#finir une ou plusieurs m#tho$es[me signature, mais corps $iff#rent

    " Le comportement $iff#rent repose sur le fait )ue la m#tho$e s'e

  • 8/18/2019 Alphorm

    306/368

    Java, les fondamentaux alphorm.com™©

    Ce )u'on a cou+ert" es super(classes pour factoriser les membres

    " Substituer $es sous(classes au< super(classes" Sp#cialiser les comportements $es sous(classes

  • 8/18/2019 Alphorm

    307/368

    Java, les fondamentaux alphorm.com™©

    Concepts avancés

    F bien Brissonne uSite :http:// alphorm com

    d’a straction

  • 8/18/2019 Alphorm

    308/368

    Java, les fondamentaux alphorm.com™©

    F bien Brissonne uConsultant, concepteur et formateurObjets Logiciels

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blog

    Forum :http:// .alphorm.com/forum

    !lan" Les abstractions en *a+a : classes et interfaces

    " 4nt#r[ts $'utiliser $es abstractions" Les abstractions $ans le frame or3" %nalHse et conception

  • 8/18/2019 Alphorm

    309/368

    Java, les fondamentaux alphorm.com™©

    Les abstractions en *a+a" ;ne classe abstraite

    -st une classe )ui ne peut pas [tre instanci#e!eut contenir $es m#tho$es abstraites

    Contient en g#n#ral $es attributs et $es m#tho$es impl#ment#es

    " ;ne interface-st un tHpe non instanciable

    e peut contenir aucune impl#mentation $'instance

  • 8/18/2019 Alphorm

    310/368

    Java, les fondamentaux alphorm.com™©

    4nt#r[ts $es abstractions" ;ne abstraction est stable

    " Le co$e )ui utilise une abstraction ne bouge pas" ;ne abstraction sert $e point $e stabilit# entre mo$ules

  • 8/18/2019 Alphorm

    311/368

    Java, les fondamentaux alphorm.com™©

    Les abstractions $ans le frame or3" -

  • 8/18/2019 Alphorm

    312/368

    Java, les fondamentaux alphorm.com™©

    %nalHse et conception" ;ne abstraction en analHse

    ;ne classe abstraite pour factoriser $es $onn#es et $es traitements-

  • 8/18/2019 Alphorm

    313/368

    Java, les fondamentaux alphorm.com™©

    Ce )u'on a cou+ert" Les abstractions en *a+a : classes et interfaces

    " 4nt#r[ts $'utiliser $es abstractions" Les abstractions $ans le frame or3" %nalHse et conception

  • 8/18/2019 Alphorm

    314/368

    Java, les fondamentaux alphorm.com™©

    Concepts avancés

    F bien Brissonne uSite :http:// .alphorm.comBl h // l h /bl

  • 8/18/2019 Alphorm

    315/368

    Java, les fondamentaux alphorm.com™©

    Consultant, concepteur et formateurObjets Logiciels

    Blog :http:// .alphorm.com/blog

    Forum :http:// .alphorm.com/forum

    !lan" #finition et sHnta

  • 8/18/2019 Alphorm

    316/368

    Java, les fondamentaux alphorm.com™©

    #finition et sHnta

  • 8/18/2019 Alphorm

    317/368

    Java, les fondamentaux alphorm.com™©

    #finir une interface" -n tant )ue co$e client

    *'ai besoin $e telles et telles m#tho$esais je n'ai pas besoin $e sa+oir comment elles sont impl#ment#es

  • 8/18/2019 Alphorm

    318/368

    Java, les fondamentaux alphorm.com™©

    4mpl#menter une interface" S'engager = fournir une impl#mentation pour cha)ue m#tho$e pr#+ue

    par l'interface

    " Le compilateur +#rifie la pr#sence $e cette impl#mentation

  • 8/18/2019 Alphorm

    319/368

    Java, les fondamentaux alphorm.com™©

    Cas $'usage connus" 4nterconne

  • 8/18/2019 Alphorm

    320/368

    Java, les fondamentaux alphorm.com™©

    Ce )u'on a cou+ert" #finition et sHnta

  • 8/18/2019 Alphorm

    321/368

    Java, les fondamentaux alphorm.com™©

    La gestion des erreurs

    F bien Brissonne uConsultant concepteur et formateur

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blog

  • 8/18/2019 Alphorm

    322/368

    Java, les fondamentaux alphorm.com™©

    Consultant, concepteur et formateur

    Objets Logiciels

    Blog :http:// .alphorm.com/blog

    Forum :http:// .alphorm.com/forum

    !lan" Les erreurs $e sHnta

  • 8/18/2019 Alphorm

    323/368

    Java, les fondamentaux alphorm.com™©

    Les erreurs $e sHnta

  • 8/18/2019 Alphorm

    324/368

    Java, les fondamentaux alphorm.com™©

    Les erreurs $e logi)ue, $e programmation" ;ne bonne lecture #limine @?d $es erreurs P

    " 'ont pas = [tre g#r#es" oi+ent [tre corrig#es par le $#+eloppeur

    9ar$er un co$e lisible

    V#fl#chir la conception a+ant $'#crire le co$e

    " -

  • 8/18/2019 Alphorm

    325/368

    Java, les fondamentaux alphorm.com™©

    Les erreurs e

  • 8/18/2019 Alphorm

    326/368

    Java, les fondamentaux alphorm.com™©

    Ce )u'on a cou+ert" Les erreurs $e sHnta

  • 8/18/2019 Alphorm

    327/368

    Java, les fondamentaux alphorm.com™©

    La gestion des erreurs

    F bien Brissonne uConsultant, concepteur et formateur

    Site :http:// .alphorm.comBlog :http:// .alphorm.com/blog

    d’exceptions

  • 8/18/2019 Alphorm

    328/368

    Java, les fondamentaux alphorm.com™©

    p

    Objet