Upload
ons-attia
View
213
Download
0
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