Stručný obsah Skrytí sp olua u to ři..............................................................................................................22 Ú vo d ....................................................................................................................................23
Část I: Vývojové prostředí 1. 2. 3. 4. 5. 6. 7. 8.
Co byste měli znát z prvního d ílu ...........................................................................30 Vývojové prostředí NetBeans.................................................................................46 Projekty v NetBeans - L ib ra ry ...............................................................................76 Vytváříme nový projekt - AHA.................................................................................. 99 Práce na připraveném projektu - E le v a to r........................................................111 Spolupráce projektů - V e h icle .............................................................................138 Testovací třída - V ehicleTest, Robot.................................................................. 162 Ladění programů - Robot...................................................................................... 190
Část II: Vylepšování architektury 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
29
201
Program ve výjim ečné s itu a c i..............................................................................202 Návrhový vzor Tovární m e tod a ............................................................................228 Návrhový vzor Stav -R o b o t4 ...............................................................................243 Návrhový vzor Stavitel - R in g B u ild e r................................................................ 260 Návrhový vzor Dekorátor - SmoothVehicle....................................................... 284 Im plicitní implementace - RingVehicle, C o n tro lle d V e h icle ........................... 300 Generické datové typy a m etody......................................................................... 320 Pokročilejší práce s typovým i param etry...........................................................342 Funkční interfejsy a lam bda-výrazy....................................................................358 Rekurzivní v o lá n í................................................................................................... 386 Interní datové ty p y ................................................................................................. 397 Kontejnery a datovody..........................................................................................424
Stručný ob sah
Část III: Dědění implementace 21. 22. 23. 24. 25. 26.
7
455
Podrobnosti o konstruktorech tříd a in sta n cí.................................................. 456 Úvod do dědění implementace: Mother - Daughter - Granddaughter..........473 Zakrývání atributů a m etod................................................................................. 498 Virtuální metody a je jich přebíjení..................................................................... 515 Pasti a propasti dědění im plem entace.............................................................. 532 Vytváříme rodičovskou třídu - ARobotl.............................................................555
Část IV: Další užitečné programové konstrukce
575
27. Učíme program p ře m ýšle t................................................................................... 576 28. Ještě jednu rundu, prosím ...................................................................................603 29. Další důležité datové stru ktu ry............................................................................619 30. O čem jsm e ještě n e h o vo řili................................................................................638 Rejstřík..............................................................................................................................642
8
J a v a 8 - Ú v o d d o o b je k to v é a rc h ite k tu ry p ro m írně p o k ro č ilé
P o d ro b n ý obsah
Podrobný obsah Skrytí sp olua u to ři..............................................................................................................22 Ú v o d ....................................................................................................................................23 Komu je kniha určena........................................................................................................................ 23 Koncepce k n ih y................................................................................................................................. 23 Co se naučíte, uspořádání knihy...................................................................................................... 24 Programovací ja zyk........................................................................................................................... 25 Potřebné vybavení............................................................................................................................. 25 Doprovodné projekty......................................................................................................................... 26 Doplňková literatura.......................................................................................................................... 26 P o u ž ité k o n v e n c e .......................................................................................................................................27 Místní nabídka.................................................................................................................................... 27 Formátování....................................................................................................................................... 27
Část I: Vývojové prostředí 1.
2.
29
C o b y s t e m ě li z n á t z p r v n í h o d í l u ................................................................................................ 30 1.1
P ře h le d lá tk y p rv n íh o d ílu .......................................................................................................... 30
1.2
D e fin ic e x d e k la ra c e .....................................................................................................................31
1.3
C o je to o b je k t.................................................................................................................................31
1.4
D a to v ý ty p , tříd a , c la s s -o b je k t.................................................................................................. 32
1.5
Z p rá v a x m e to d a , p o ly m o rfis m u s ...........................................................................................33
1.6
R o zh ra n í x in te r fe js ...................................................................................................................... 33
1.7
Z a p o u z d ře n í a s k rý v á n í im p le m e n ta c e ................................................................................. 34
1.8
D a to vé ty p y a je jic h d ě d ě n í.......................................................................................................35 Vlastní instance třídy a mateřská třída objektu.............................................................................. 36 LSP - Liskov Substitution Principle................................................................................................ 36 Přetěžování x přebíjení x zakrývání m etod..................................................................................... 37
1.9
O d ka zo vé a h o d n o to v é d a to v é t y p y ...................................................................................... 38
1.10
N á vrh o vé v z o r y .............................................................................................................................. 38
1.11
1.12
M o d u l x k o m p o n e n ta x k n ih o v n a x fr a m e w o r k ...................................................................40 M odul.................................................................................................................................................. 40 Komponenta.......................................................................................................................................40 Knihovna............................................................................................................................................. 41 Framework.......................................................................................................................................... 41 Z m ě n y š a b lo n ................................................................................................................................ 42
1.13
K n ih o v n a CanvasM anager........................................................................................................... 44
1.14
S h r n u t í - c o js m e s e n a u č ili......................................................................................................44
V ý v o jo v é p r o s t ř e d í N e t B e a n s ........................................................................................................4 6 2.1
In s ta la c e ........................................................................................................................................... 47 Instalace pro Windows..................................................................................................................48
2.2
P rv n í s p u š tě n í.................................................................................................................................50
P odrobný ob sah
2.3
A p lik a č n í o k n o , p a n e ly a k a r ty ................................................................................................. 51 Změny rozměrů panelů......................................................................................................................53 Minimalizace a obnovení panelů a karet..........................................................................................53 Další m ožnosti....................................................................................................................................53
2.4
O te vře n í e x is tu jíc íh o p r o je k tu .................................................................................................. 53
2.5
N a v ig á to ra je h o ik o n y .................................................................................................................57
2.6
Ú p ra va n a s ta v e n í p ro s tře d í....................................................................................................... 57
2.7
G eneral - o b e cn á n a s ta v e n í...................................................................................................... 58
2.8
E d ito r - n a s ta v e n í e d it o r u ..........................................................................................................59 Karta General......................................................................................................................................59 Braces Matching........................................................................................................................... 59 Camel Case Behavior................................................................................................................... 59 Search...........................................................................................................................................59 Karta Folding......................................................................................................................................60 Karta Formatting.................................................................................................................................60 Karta Code Completion......................................................................................................................61 Language...................................................................................................................................... 61 Karta Code Templates........................................................................................................................62 Karta H ints..........................................................................................................................................63 Karta H ighlighting..............................................................................................................................63 Karta Macros.......................................................................................................................................63 Karta OnSave......................................................................................................................................64 Karta Spellchecker.............................................................................................................................64
2.9
2.10
F o n ts & C o lo rs - n a s ta v e n í písm a a b a re v .......................................................................... 64 Nastaveni pism a.................................................................................................................................64 Vybarvení komentářů........................................................................................................................ 65 K e ym a p - k lá v e s o v é z k r a tk y .....................................................................................................67
2.11
J a v a - n a s ta v e n í p ro J a v u ......................................................................................................... 67
2.12
T e a m .................................................................................................................................................. 67 Karta Action Items..............................................................................................................................67
2.13
A p p e a ra n c e - n a s ta v e n í v z h le d u ............................................................................................ 67 Karta Document T abs........................................................................................................................68 Karta Windows....................................................................................................................................69 Karta Look and Feel.......................................................................................................................... 69
2.14
M is c e lla n e o u s - z b y lá n a s ta v e n í............................................................................................ 69 Karta CSS Preprocessors..................................................................................................................70 Karta Diff............................................................................................................................................. 70 Karta F ile s.......................................................................................................................................... 70 Karta Output....................................................................................................................................... 70 Karta Term inal................................................................................................................................... 71 N a sta ve n í p a n e lů n á s tro jů ......................................................................................................... 71
2.15
3.
9
2.16
E x p o rt a im p o rt n a s ta v e n í..........................................................................................................72 E xport................................................................................................................................................. 73 Import.................................................................................................................................................. 73
2.17
S h r n u t í - c o js m e se n a u č ili......................................................................................................74
Projekty v NetBeans - L ib r a r y .............................................................................. 76 3.1
B a líč k y p ro g ra m ů to h o to d ílu ................................................................................................... 76
3.2
B a líč k o v á s tru k tu ra k n ih o v n y .................................................................................................. 77
3.3
S lo ž k y se z d ro jo v ý m i s o u b o r y .................................................................................................77
3.4
B a líč k y na k a rtě p r o je k tů ........................................................................................................... 80
3.5
P ráce s b a lí č k y .............................................................................................................................. 81 Vytvoření nového balíčku..................................................................................................................81 Přesun tříd mezi balíčky................................................................................................................... 82 Importy z vlastního balíčku........................................................................................................... 85 Přejmenování balíčku........................................................................................................................ 85
J a v a 8 - Ú v o d d o o b je k to v é a rc h ite k tu ry p r o m írně p o k ro č ilé
10
4.
5.
3.6
P ře kla d a s e s ta v e n í p r o je k tu .................................................................................................... 87
3.7
P ro g ra m á to rs k á d o k u m e n ta c e ( A P I) ..................................................................................... 87 Dokumentace při psáni kódu............................................................................................................87 Možnosti okna dokumentace............................................................................................................88 Samostatná karta dokumentace....................................................................................................... 89 Vytvoření dokumentace projektu..................................................................................................... 89
3.8
K a rta s o u b o r ů ................................................................................................................................ 90
3.9
V la s tn o s ti p r o je k tu ....................................................................................................................... 91 Stránka Sources.................................................................................................................................91 Stránka Libraries................................................................................................................................92 Stránka Compiling.............................................................................................................................92 Stránka Documenting........................................................................................................................92 Stránka Run........................................................................................................................................93
3.10
P ře jm e n o v á n í p ro je k tu ................................................................................................................ 93
3.11
D e fin ic e p ro je k tu ja k o k n ih o v n y ..............................................................................................94
3.12
S h r n u t í - c o js m e se n a u č ili......................................................................................................96
V y t v á ř í m e n o v ý p r o je k t - AHA........................................................................................................ 9 9 4.1
V y tv o ře n í n o v é h o p r o je k tu ........................................................................................................ 99
4.2 4.3
S p u š tě n í a p lik a c e ....................................................................................................................... 103 V y tv o ře n í k o p ie t ř í d y ..................................................................................................................103
4 .4
N á po věda p ři p sa n í k ó d u ..........................................................................................................104
4.5
Z a d á n í s p o u š tě c í tříd y p r o je k tu ............................................................................................ 105
4.6
S p o u š tě c í k o n fig u ra c e .............................................................................................................. 106
4.7
V y tv o ře n í a s p u š tě n í a p lik a c e ................................................................................................ 107
4.8
P a ra le ln í s p u š tě n í v íc e a p lik a c í.............................................................................................. 108
4.9
S h r n u t í - c o js m e s e n a u č ili....................................................................................................109
P r á c e n a p ř ip r a v e n é m p r o je k t u - E l e v a t o r ........................................................................111 5.1
P o lo p rá z d n á tříd a a m e to d a ....................................................................................................111
5.2
Z a d á n í..............................................................................................................................................112
5.3
A n a lý z a p ro b lé m u ....................................................................................................................... 113 Sjednocení různých řešení............................................................................................................. 113 Implementované interfejsy............................................................................................................. 114 Okolí.................................................................................................................................................. 114 Konstruktory.................................................................................................................................... 115 Dva přístupy к řešení problému..................................................................................................... 116 Potřebné metody.............................................................................................................................. 117
5.4
In te rfe js I E le v a t o r ..................................................................................................................... 118
5.5
V z o ro v ý p ro je k t............................................................................................................................ 120
5.6
T e s to v a c í t ř íd a ............................................................................................................................. 121 Přizpůsobující se společná testovací tříd a................................................................................... 121 Inicializace a finalizace bloku testů v dané tříd ě.......................................................................... 122 Třídy jako objekty - class-objekt třídy........................................................................................... 123 Zafixování testované třídy........................................................................................................... 123 Vynechání konkrétního testu.......................................................................................................... 124 Spuštění a vyhodnocení testů........................................................................................................ 125
5.7
D e fin ice v la s tn í t ř í d y .................................................................................................................. 126 A tributy............................................................................................................................................. 126 Konstruktory a metody interfejsů IP aintable a IMovable...........................................................127 Interfejs a data.................................................................................................................................. 128 Postup při návrhu metod deklarovaných v interfejsů IE le v a to r................................................129 Metoda goTo(int) - předehra......................................................................................................... 129 Metody flo o r 2 y ( in t) a y 2 f lo o r ( in t ) ........................................................................................... 129 Metoda goTo(int) - realizace......................................................................................................... 130
P o d ro b n ý o b sa h
5.8
11
Metoda comeTo(IMovable)......................................................................... ............. 130 Metoda enter(IM ovable) .......................................................................... .................130 Metody e x it L e ft ( ) a e x itR ig h t( ) .............................................................. .................131 Test převozu pasažéra.................................................................................................. .................131 Metody tra n sp o rtR ig h t(IM o va b le ,in t) a tra n s p o rtL e ft(IM o v a b le ,in t)............. .................132 P o ro v n á n í ř e š e n í....................................................... .............. 132
5.9
Práce s v íc e s o u b o r y ..........................................................................
5.10
S h rn u tí - c o is m e s e n a u č ili ................................................................
6.3
D o ku m e n ta ce b a líč k u ..................................................................................
... 135 ... 136 Sooluoráce Droiektů - V e h i c l e ................................................................ .......... 138 6.1 Z a d á n í .................................................................................................. ........... 138 6.2 V y tv o ře n í n o v é t ř í d y ............................................................................ ........... 139 Zakomentování a odkomentování části kódu ................................................. ............. 141 6.4
6.5
6.6 6.7
6.8 6.9
... 141 P o u ž ití fra m e w o rk u č i k n ih o v n y ........................................................................... ... 143 Třída 10 jako aplikace návrhového vzoru Fasáda....................................................... .................144 Zkopírování zdrojových souborů.................................................................................. .................144 Podporované způsoby připojení potřebného projektu ..................................... ............. 144 Připojení celého potřebného projektu .......................................................... .................145 Přidání JAR-souboru mezi knihovny ............................................................ ............. 146 Přidání propojení na knihovnu .................................................................... ............. 148 O p ra va š p a tn é h o n a s ta v e n í ................................................................. ........... 149 Nevytvořený JAR-soubor .................................. .................................. .................150 Přestěhování souborů na jiné místo disku .................................................... ............. 150 P o lo a u to m a tic k á im p le m e n ta c e in te rfe js ů ........................................... .............. 150 K o n s tr u k to ry ...................................................................................................... ... 151 Poloautomatická generace konstruktoru..................................................................... .................151 Poloautomatické doplnění komentářových značek.................................................... ............. 152 Doplnění těl konstruktorů .......................................................................... ............. 153 Dokončení těla konstruktoru ........................................................... ................153 Výraz - » lokální proměnná ......................................................................... ............. 155 Lokální proměnná - » atrib ut ...................................................................... ............ 156 .............. 157 R y c h lý t e s t ............................................................... H is to rie z m ě n ...................................................................................... ........... 158 Podrobnosti o barvách ............................................................................. ................159
6.10 S h rn u tí - c o is m e s e n a u č ili ................................................................ ........... 161 Testovací třída - VehicleTest, Robot...................................................... 162 7.1 V y tv o ře n í ....................................................................................... ... 162 7.2 O bsa h te s to v a c í t ř íd y ........................................................................... ........... 165 Inicializace a finalizace ............................................................................. ............. 165 Těla poloprázdných metod ......................................................................... ................ 165 7.3 Š a b lo n a te s to v a c í t ř í d y ............................................................ .............. 166 Parametry anotace §Test........................................................................... ................167 7.4 V y u ž ití s lu ž e b tř íd y In d e n tin g R e p o r te r ............................................... ........... 167 Popis některých m etod ............................................................................. ............ 168 Použití odsazení...................................................................................... ............ 173 ....173 Získání názvu spouštěného testu ...................................................... 7.5
7.6
7.7
.............. 175 S p u š tě n í te s tů ................................................................................ Spuštění konkrétního testu ........................................................................ ............ 175 Spuštění všech testů dané tříd y .................................................................. ............ 175 Spuštění všech testů projektu .................................................................... ................ 176 D e fin ic e in ic ia liz a č n íc h a fin a liz a č n íc h m e to d ...................................... ........... 176 Získání správce plátna .............................................................................. ............. 177 Lokální proměnná - > statická konstanta ....................................................... ............ 177 N e chtěn é a u to m a tic k é d o p ln ě n í id e n tifik á to ru .............................. ........... 180
12
8.
J a v a 8 - Ú vo d d o o b je k to v é a rc h ite k tu ry p ro m írně p o k ro č ilé
7.8
V y tv o ře n í p o ža d o v a n ý c h te s tů ................................................................................................181 Test funkce přípravku...................................................................................................................... 181 Test implementovaných m etod...................................................................................................... 181
7.9
D e fin ic e p řís tu p o v ý c h m e to d te s to v a n é t ř íd y ................................................................... 183
7.10
L o ka liza ce s o u b o ru v p ro je k tu ................................................................................................184
7.11
P ře jm e n o vá n í tříd y s p o lu s te s te m ....................................................................................... 184
7.12
P ře su n d o n o v é h o b a líč k u ........................................................................................................185
7.13
V y h le d á v á n í a n a h ra z o v á n í t e x t u ...........................................................................................186
7.14
S h rn u tí - c o js m e se n a u č ili.................................................................................................... 188
L a d ě n í p r o g r a m ů - R o b o t..............................................................................................................19 0 8.1
M e to d y la d ě n í................................................................................................................................ 190 Kontrolní tisky.................................................................................................................................. 191 Používání ladícího programu.......................................................................................................... 191
8.2
N a sta ve n í za rá ž k y v řá d ku k ó d u ............................................................................................191
8.3
M o ž n o s ti k ro k o v á n í.................................................................................................................... 192
8.4
Z o b ra z o v á n í d a t ........................................................................................................................... 193
8.5
Z á s o b n ík v o lá n í ........................................................................................................................... 195
8.6
Z a rá žka na e n t it ě .........................................................................................................................195 Trvalost zarážek............................................................................................................................... 197
8.7
Z á lo ž k y (b o o k m a rk )....................................................................................................................198
8.8
Ú k o ly ................................................................................................................................................ 198
8.9
S h r n u t í - c o js m e se n a u č ili.................................................................................................... 198
Část II: Vylepšování architektury 9.
201
Program ve výjimečné s itu a c i..............................................................................202 9.1
C o to js o u v ý jim k y ..................................................................................................................... 202
9.2
N e jd ů le ž itě jš í v ý jim k y ............................................................................................................... 203
9.3
V yh o z e n í v ý jim k y ........................................................................................................................ 204
9.4
V ý jim k y a n e d o s a ž ite ln ý k ó d .................................................................................................. 206
9.5
C o v ý jim k y u m í............................................................................................................................ 206 getMessageO............................................................................................................................. 206 to S trin g O ................................................................................................................................. 207 printS tackT raceO ................................................................................................................... 207 printStackTrace(PrintStream ).............................................................................................. 207
9.6
H ie ra rc h ie d ě d ě n í v ý jim e k ....................................................................................................... 208
9.7
Z a c h y c e n í v y h o z e n é v ý jim k y ................................................................................................. 209 Analýza rekurzivní m etody............................................................................................................. 211
9.8
N ě k o lik s o u č a s n ě o d c h y tá v a n ý c h v ý jim e k ....................................................................... 212 Společná reakce na několik výjimek.............................................................................................. 213
9.9
S p o le č n ý ú k lid - b lo k f in a lly .................................................................................................. 214
9.10
9.11
T e s to v á n í s p rá v n é h o v y h o z e n í v ý jim k y ............................................................................. 216 Tělo metody testující správné vyhození výjimky.......................................................................... 216 Specifikace očekávané výjimky v anotaci..................................................................................... 217 D e fin ic e v la s tn íc h v ý jim e k ....................................................................................................... 218
9.12
K o n tro lo v a n é v ý jim k y ............................................................................................................... 218
9.13
P ře ve d e n í k o n tro lo v a n é v ý jim k y na n e k o n tr o lo v a n o u ................................................. 220
9.14
In fo rm a c e o s k u te č n é m p ů v o d c i v ý jim k y ..........................................................................221
9.15
O v ě řo v á n í p o d m ín e k - p řík a z a s s e r t ................................................................................. 222 Design by Contract..........................................................................................................................223 S h rn u tí - c o js m e se n a u č ili................................................................................................... 225
9.16
P o d ro b n ý ob sah
10.
11.
13
N á v r h o v ý v z o r T o v á r n í m e t o d a ..............................................................................................2 2 8 10.1
M o tiv a c e ......................................................................................................................................... 228
10.2 10.3
J a k na t o ......................................................................................................................................... 230 P o u ž ití v p ro je k tu s v ý t a h y ...................................................................................................... 231
10.4
P ro g ra m o v á n í p ro ti ro z h ra n í...................................................................................................234
10.5
P o u ž ití to v á rn í tříd y v p ro je k tu s v o z id ly ............................................................................ 235 Definice interfejsů IV e h icle ........................................................................................................... 235 Testovací třída VehicleTest........................................................................................................... 237
10.6
M o ž n o s t v ý b ě ru te s to v a n é tř íd y ............................................................................................ 238 Přepínání mezi pevně zadanou a volitelnou tovární třídou.......................................................... 239
10.7
M o ž n o s t v y u ž ití k o n s tru k to ru t ř í d y .......................................................................................240
10.8
S h r n u t í - c o js m e s e n a u č ili....................................................................................................241
N á v r h o v ý v z o r S t a v - R o b o t4 ..................................................................................................2 4 3 11.1
Ř e še n ý p r o b lé m .......................................................................................................................... 243
11.2
V o z id la na š a c h o v n ic i............................................................................................................... 244
11.3
S p o le č n é ro z h ra n í o to č n ý c h v o z id e l I V e h ic le .................................................................244
11.4
R ů zné c h o v á n í v z á v is lo s ti na s m ě ru .................................................................................. 245
11.5
J e d n o s ta v o v é tř íd y ..................................................................................................................... 245
11.6
Č ty řs ta v o v á t ř íd a .........................................................................................................................246
11.7
S ta vo vé r o z h r a n í.........................................................................................................................246
11.8
D e fin ic e je d n o s ta v o v ý c h tř íd .................................................................................................. 247
11.9
D e fin ic e v íc e s ta v o v é t ř í d y ....................................................................................................... 251
11.10 T e s to v a c í t ř íd a ............................................................................................................................. 255 11.11 Z á s a d y p o u ž ití v z o ru S ta v .......................................................................................................257 11.12 S h rn u tí - c o js m e s e n a u č ili.................................................................................................... 258 12.
N á v r h o v ý v z o r S t a v it e l - R i n g B u i l d e r ............................................................................... 2 6 0 12.1
Ř e še n ý p r o b lé m .......................................................................................................................... 260
12.2
D vě s k u p in y p o ža d a vků na s e g m e n t................................................................................... 261
12.3
D e fin ic e s e g m e n tů ..................................................................................................................... 263 Nastavení barvy................................................................................................................................264 Konstruktory.....................................................................................................................................265 Test správného vytvořeni segmentů..............................................................................................266 Přidání následníka............................................................................................................................267 Potřebné atributy............................................................................................................................. 267 Zbylé m etody....................................................................................................................................268
12.4
Z d á n liv ý p ro b lé m s v id ite ln o s tí s e g m e n tů .........................................................................268
12.5
D e fin ic e d o p ra v n íh o o k r u h u ....................................................................................................269 Správa vytvořeného okruhu............................................................................................................270 Zobrazení okruhu........................................................................................................................270 Přizpůsobeni se změně kroku plátna......................................................................................... 270 Oznámeni startovního segmentu................................................................................................270 Konstrukce okruhu...........................................................................................................................270
12.6
N á v rh o v ý v z o r S ta v ite l.............................................................................................................. 271
12.7
D e fin ic e s ta v ite le - R in g B u ild e r ........................................................................................... 272 A tributy............................................................................................................................................. 272 Konstruktor.......................................................................................................................................273 Start stavby okruhu..........................................................................................................................273 Zřetězení volání metod.....................................................................................................................274 Pokračování ve stavbě okruhu....................................................................................................... 274 Ukončení stavby okruhu..................................................................................................................274 Test stavby okruhů.......................................................................................................................... 275
J a v a 8 - Ú vo d d o o b je k to v é a rc h ite k tu ry p ro m írně p o k ro č ilé
14
12.8
O v ě řo vá n í p o d m ín e k ............................................................................................................... 276
12.9
T e s t v y h a z o v á n í v ý jim k y ........................................................................................................276
12.10
13.
12.11
E xtra kce č á s ti kó d u d o s a m o s ta tn é m e to d y ................................................................... 279
12.12
T e s t v y b u d o v a n é h o o k ru h u .................................................................................................. 281
12.13
T o vá rn a na o k r u h y .................................................................................................................. 282
12.14
S h rn u tí - c o js m e se n a u č ili................................................................................................. 283
N á v rh o v ý v z o r 13.1
14.
D o k o n č e n í d e fin ic e o k r u h u .................................................................................................. 278 Nastavení poličkové pozice............................................................................................................ 278 Prozrazení poličkového rozměru................................................................................................... 278 Přizpůsobení se změně kroku plátna............................................................................................. 279
Dekorátor -
S m o o t h V e h ic le ....................................................... 2 8 4
M o d ifik a c e c h o v á n í s k u p in y o b je k tů ............................................................................... 284
13.2
P ly n u le p o s u v n á v o z id la ........................................................................................................ 285
13.3
D e fin ic e d e k o ru jíc í t ř íd y ..........................................................................................................285 Delegát a konstruktory.................................................................................................................... 290 Implementace metod pro porovnání objektů.................................................................................290 Implementace zbylých metod......................................................................................................... 291 Ještě trochu kosmetiky................................................................................................................... 291
13.4
D e fin ic e tě la m e to d y g o F o rw a rd Q ......................................................................................292
13.5
D o p ln ě n í m e to d y d e le g u jíc í z o d p o v ě d n o s t na a t r ib u t .................................................293
13.6 13.7
P řid á n í v la s tn o s ti.......................................................................................................................294 D o k o n č e n í ú p r a v ....................................................................................................................... 296
13.8
T e s t................................................................................................................................................ 296
13.9
P rin c ip v z o ru D e k o rá to r..........................................................................................................297
13.10
S h rn u tí - c o js m e se n a u č ili..................................................................................................298
I m p li c it n í im p le m e n t a c e - R i n g V e h ic le , C o n t r o l l e d V e h i c l e ................................. 3 0 0 14.1
D e k o rá to r p řid á v a jíc í d a lš í f u n k č n o s t ............................................................................... 300
14.2
T říd a M u ltim o v e r a in te rfe js IM u ltiM o v a b le .................................................................... 301
14.3
D e fin ic e tříd y R in g V e h ic le ......................................................................................................301
14.4
Im p lic itn í d e fin ic e m e to d in te r fe js ů ....................................................................................302
14.5
S ta tic k é m e to d y d e fin o v a n é v in te r fe js ů ...........................................................................305
14.6
Š a b lo n a in te r fe js ů .....................................................................................................................306
14.7
Č ím se liš í in te rfe js o d tř íd y ................................................................................................... 306
14.8
V ý h o d y im p lic itn í im p le m e n ta c e ..........................................................................................307
14.9
Ú prava in te rfe js ů I V e h ic le .....................................................................................................307
14.10
D o p ln ě n í k o n s tru k to rů to v á rn íc h o b je k tů .........................................................................308
14.11
R o zšíře n í in te rfe js ů iV e h ic le F a c t o r y ................................................................................309 Test....................................................................................................................................................311
14.12
P o k ra č o v á n í d e fin ic e p ř e s u n u ............................................................................................. 312
14.13
V y p u š tě n í v o z id la na o k r u h ................................................................................................... 312
14.14
T e s t ................................................................................................................................................. 313
14.15 14.16
V o z id lo o v lá d a n é z k lá v e s n ic e ..............................................................................................314 N á v rh o v ý v z o r A d a p té r (A d a p te r)........................................................................................315
14.17
N á vrh tříd y C o n tro lle d V e h ic le ............................................................................................... 315
14.18
P ře b ití im p lic itn íc h d e fin ic ...................................................................................................... 316
14.19
T e s to v á n í.......................................................................................................................................316 Mechanismus reakce na klávesnici............................................................................................... 317
14.20 S h rn u tí - c o js m e s e n a u č ili.................................................................................................. 318
P odrobný obsah
15.
15
G e n e r ic k é d a t o v é t y p y a m e t o d y .............................................................................................3 2 0 15.1
M o tiv a c e ........................................................................................................................................ 320
15.2
G e n e rické a p a ra m e triz o v a n é d a to v é ty p y ........................................................................ 324
15.3
D e fin ic e g e n e ric k ý c h t y p ů .......................................................................................................326
15.4
P o u ž ití g e n e ric k ý c h t y p ů .........................................................................................................328
15.5
R izika n e p o u ž ití ty p o v ý c h p a ra m e trů ..................................................................................330
15.6
V a ro v á n í p ře kla d a če a je jic h p o tla č e n í............................................................................... 333 Proč vypínat varování......................................................................................................................334
15.7
P ře kla d g e n e ric k ý c h d a to v ý c h ty p ů a o č iš ť o v á n í...........................................................335
15.8
O m ezení ty p o v ý c h a trib u tů na in s ta n č n í č le n y ............................................................... 336
15.9
G e n e rické m e to d y ...................................................................................................................... 336
15.10 S h r n u t í - c o js m e se n a u č ili................................................................................................... 340 16.
17.
P o k r o č ile jš í p r á c e s t y p o v ý m i p a r a m e t r y .......................................................................... 3 4 2 16.1
O m ezení ty p o v ý c h p a ra m e trů ................................................................................................342
16.2
T y p o v é p a ra m e try s více p ře d k y ...........................................................................................343
16.3
P o to m c i a p ře d c i g e n e ric k ý c h t y p ů ..................................................................................... 344
16.4 16.5
Ž o lík y ...............................................................................................................................................344 P řík la d : d a to v ý ty p I n t e r v a lc T e xte n d s Comparable su p e r Т » ....................... 346
16.6
T e rn á rn í o p e rá to r ?: - p o d m ín ě n ý v ý r a z .......................................................................... 351
16.7
D e fin ic e p a ra m e triz o v a n é h o d a to v é h o t y p u ..................................................................... 352 Grupy................................................................................................................................................ 353 Deklarace IGroup
16.8
S h r n u t í - c o js m e se n a u č ili................................................................................................... 356
F u n k č n í in t e r f e js y a la m b d a - v ý r a z y ......................................................................................3 5 8 17.1
M o tiv a c e ......................................................................................................................................... 358
17.2
F u n k č n í in te rfe js (fu n c tio n a l in te rfa c e )...............................................................................359
17.3
L a m b d a -v ý ra z y ............................................................................................................................ 362
17.4
P o u ž ití la m b d a v ý ra z ů v p ro g ra m u .......................................................................................363
17.5
P ře d ča sn é z h a s ín á n í..................................................................................................................365 Metoda sto p B lin k in g O ...................................................................................................................365 Modifikátor volatile a synchronizace vlá ken .................................................................................366 Test ukončení neexistujícího blikání -te stW ro ng S to pB linking()............................................. 367 Reakce na ukončení blikání.............................................................................................................367 Test správné reakce na předčasné spuštění.................................................................................368 Test korektního ukončení blikání - testStoppedMovingAndBlinking() ..................................... 369
17.6
A lte rn a tiv n í d e fin ic e fu n k č n íc h o b je k tů ............................................................................. 370
17.7
S v ě tlo u m o ž ň u jíc í o v liv n it tv a r ž á r o v k y ............................................................................. 372 Získání žárovky.................................................................................................................................373 Požadavky na typ žárovky.............................................................................................................. 373 Uložení žárovky............................................................................................................................... 374 Uložení továrního objektu................................................................................................................375 Upravená definice třídy Light..........................................................................................................375 Testy................................................................................................................................................. 375 G e n e rická v e rz e tříd y - tříd a
17.8
L ig h tG
..........................................................379 Důsledky definice třídy LightG jako generické.............................................................................380 17.9
S je d n o c e n í d e fin ic o to č e k ro b o ta ......................................................................................... 381
17.10 S h rn u tí - c o js m e s e n a u č ili....................................................................................................383
J a v a 8 — Ú v o d d o o b je k to v é a rc h ite k tu ry p ro m írně p o k ro č ilé
16
18.
Rekurzivní v o lá n í...................................................................................................386 18.1
19.
P r in c ip ........................................................................................................................................... 386
18.2
Přím á a n e p řím á re k u rz e ......................................................................................................... 387
18.3
P ře p ln ě n í z á s o b n ík u n á v ra to v ý c h a d re s .......................................................................... 388
18.4
P o je zd y ta m z p ě t - m e to d a z ig Z a g ..................................................................................... 388 1. U kol...............................................................................................................................................389 2. Otočka...........................................................................................................................................389 3. Délka pojezdu............................................................................................................................... 389 4. Cílová pozice................................................................................................................................390 5. Předání metody multipřesouvači............................................................................................... 390 Odbočka: rekurze versus zpětné volání........................................................................................ 392 Test správného naprogramování přesunu.................................................................................... 392
18.5
O b jížd ě n í č tv e rc e ........................................................................................................................ 394
18.6
S h rn u tí - c o js m e s e n a u č ili................................................................................................... 395
Interní datové ty p y .................................................................................................397 19.1
M o tiv a c e .........................................................................................................................................397
19.2
T e rm in o lo g ie .................................................................................................................................398
19.3
S p o le č n é c h a ra k te ris tik y in te rn íc h t y p ů ............................................................................ 399
19.4
P o u ž ití............................................................................................................................................. 400 Pomocný soukromý ty p .................................................................................................................. 401 Objekt znající útroby a implementující veřejné rozhraní..............................................................401 Sdružení souvisejících ty p ů ........................................................................................................... 402
19.5
G lo b á ln í in te rn í (čle n ské ) d a to v é t y p y .................................................................................402
19.6
V n o ře n é d a to v é t y p y ..................................................................................................................403
19.7
P o m o cn á v n o ře n á p ře p ra v k a ................................................................................................. 403 Řešený problém...............................................................................................................................403 První nástřel: poloveřejná přepravka............................................................................................ 404 Test.................................................................................................................................................... 406 Co je na předchozím řešení nešikovné......................................................................................... 406 V n o ře n á to v á rn í t ř í d a ................................................................................................................ 409 Výhody a nevýhody jednotlivých možností.................................................................................. 409
19.8 19.9
V n itřn í t ř í d y ................................................................................................................................... 411 Blikající světlo s vnitřní třídou........................................................................................................ 412 Hraniční obdélník objektu na plátně.............................................................................................. 415
19.10 L o k á ln í t ř í d y .................................................................................................................................. 419 Pojmenované lokální tříd y .............................................................................................................. 420 Anonymní třídy.................................................................................................................................420 Blikající světlo s anonymní třídou.................................................................................................. 420 Použití anonymních tříd ..................................................................................................................422 19.11 S h rn u tí - c o js m e s e n a u č ili....................................................................................................422
20.
Kontejnery a d atovody.......................................................................................... 424 20.1
K o n te jn e ry ...................................................................................................................................... 424 Zvláštnosti programových kontejnerů.......................................................................................... 425 Přepravky..........................................................................................................................................425 Pole (array).......................................................................................................................................425 Kolekce (collection).........................................................................................................................427 Mapy, slovníky (map, dictionary)................................................................................................... 427
20.2
M o tiv a c e p ro z a ve d e n í d a to v o d ů ...........................................................................................428 Deklarativní a imperativní styl programování............................................................................... 429
20.3
D a to v o d y (s tre a m s ).....................................................................................................................430 Druhy operací...................................................................................................................................431 Práce datovodu................................................................................................................................432
20.4
V y tv á ře n í d a to v o d ů z k o le k c í a p o lí...................................................................................... 432
17
P od rob ný ob sah
20.5
P o u ž ití d a to v o d u - b lik a jíc í s v ě tla ...................................................................................... 433 Třída StreamTest............................................................................................................................. 434 Pomocná metoda streamBlink(Stream,String).................................................................435
20.6
P o ro v n á n í s é rio v é h o a p a ra le ln íh o d a to v o d u ................................................................. 437
20.7
P o u žití m e to d y fo rE a c h (R u n n a b le ) ....................................................................................437
20.8
P o u ž ití f ilt r ů ................................................................................................................................. 438
20.9
Ř azení o b je k tů v d a to v o d u .................................................................................................... 439
20.10
S lo ž itě jš í p ř ík la d ........................................................................................................................440 0. Zadání........................................................................................................................................... 440 1. Rozbor...........................................................................................................................................441 2. Test - metoda testMovementsStepObj ( ) ....................................................................................441 3. Vytvoření a zpracováni proudu kroků - metoda movementsStepObj(String, C o lle c tio n s extends IChangeable>)......................................... 443 4. Přesun objektů v daném kroku - metoda moveInStepA110bjects(String, C o lle c tio n s extends IChangeablex).................................. 444 Definice metod „plynulé“ verze......................................................................................................445 K o n ve rze p rv k ů v d a to v o d u ..................................................................................................446 MetodacreateAndDrive(IVehicleFactory, S trin g , P o s it io n . . . ) ......................................... 446 Pomocná metoda g o In O ire ctio n s(S trin g )..................................................................................448 Test................................................................................................................................................... 448
20.11
20.12
V y tv o ře n í v la s tn íh o d a to v o d u .............................................................................................. 449
20.13
S h rn u tí - c o js m e se n a u č ili..................................................................................................450
Část III: Dědění implementace 21.
455
P o d r o b n o s t i o k o n s t r u k t o r e c h t ř í d a i n s t a n c í ................................................................ 4 5 6 21.1
O p a ko vá n í: c o vím e o k o n s tru k to re c h in s ta n c í................................................................. 456
21.2
Z a v á d ě n í tř íd y - ja v a . la n g . C la s s L o a d e r........................................................................... 457
21.3
S ta tic k ý k o n s tru k to r - k o n s tru k to r t ř í d y .............................................................................458
21.4
In s ta n č n í in ic ia liz a č n í b lo k .......................................................................................................458
21.5
D v o jito s t tě la k o n s tru k to ru in s ta n c í..................................................................................... 459
21.6
P ř ík la d ............................................................................................................................................. 459
21.7
S ta tic k ý k o n s tru k to r, k o n s tru k to r t ř í d y ............................................................................... 465 Důležitá pravidla.............................................................................................................................. 465 8 -1 4 : Úvodní statický inicializační blok.....................................................................................465 29: Předčasné použití atributu.................................................................................................... 465 13: Nekorektní použití metod.......................................................................................................466 46: Předčasné použiti konstanty.................................................................................................466 66: Nekorektní volání konstruktoru..............................................................................................466 Doporučení: jediný statický inicializační blok...............................................................................467
21.8
K o n s tru k to r in s ta n c í.................................................................................................................. 467 „Roztroušená“ část......................................................................................................................... 467 1 7 -2 0 : Úvodní instanční inicializační blok.................................................................................467 146: Deklarace konstanty loaded...............................................................................................468 150 -1 5 4 : Inicializační výpočet...................................................................................................468 160: Použití t h i s ........................................................................................................................ 468 250 - 253: Závěrečný blok......................................................................................................... 468 Tělo osloveného konstruktoru....................................................................................................... 468 170 -1 7 5 : Bezparametrický konstruktor.....................................................................................469 182 -1 8 8 : Jednoparametrický konstruktor.................................................................................469 196 - 201: Dvouparametrický konstruktor...................................................................................469 209 - 222: Tříparametrický konstruktor.......................................................................................469 E x p e rim e n ty ...................................................................................................................................470
21.9
21.10 S h rn u tí - c o js m e s e n a u č ili.................................................................................................... 470 Jihočeská vědecká kniho« na v Českých Budějovicích
( 1)
J a v a 8 - Ú vo d d o o b je k to v é a rc h ite k tu ry p ro m írně p o k ro č ilé
18
22.
Ú v o d d o d ě d ě n í im p le m e n t a c e : M o th e r - D a u g h te r - G r a n d d a u g h t e r ...............4 7 3 22.1
Ú v o d n í p o z n á m k y ....................................................................................................................... 474
22.2
D e fin ic e d c e řin é t ř í d y ................................................................................................................ 474
22.3
R o d ič o v s k ý p o d o b je k t..............................................................................................................476
22.4
K o n s tr u k to r ................................................................................................................................... 477 Konstrukce rodičovského podobjektu.......................................................................................... 477
22.5
P řetížené verze k o n s tru k to rů - p o u ž ití sup er x t h i s ..................................................... 478 Test................................................................................................................................................... 481
22.6
K o n s tru k to ry ro d ič e a p o to m k a .............................................................................................481
22.7
E m u la ce d ě d ě n í d e k o rá to re m ................................................................................................ 482 Přípony názvů typů v přípravku..................................................................................................... 484
22.8
D e m o n s tra c e c h o v á n í k o n s tru k to r ů ....................................................................................484 Konstrukce podpisu........................................................................................................................487 Zpráva o zavedení tříd y................................................................................................................... 488 Demonstrace....................................................................................................................................489 Rodičovský podobjekt je abstrakce...............................................................................................490
22.9
V y tv á ře n í in s ta n c í tříd v y u ž ív a jíc íc h d e k o r á to r .............................................................. 491
22.10 C h rá n ě n é č le n y - m o d ifik á to r p řís tu p u p ro te c te d .......................................................... 493 22.11 Z ákaz v y tv á ře n í p o to m k ů t ř íd y .............................................................................................. 495 22.12 S h rn u tí - c o js m e se n a u č ili...................................................................................................496 23.
Z a k r ý v á n í a t r ib u t ů a m e t o d ......................................................................................................... 4 9 8 23.1
P o sílá n í z p rá v a v o lá n í m e to d ................................................................................................498
23.2
D ědění m e to d ............................................................................................................................... 499 Zděděné, dále neupravované metody............................................................................................ 499 Zděděné metody, pro něž potomek definuje „lepší“ implementaci............................................ 500 Kompatibilita signatur..................................................................................................................... 500
23.3 23.4
Z a k rý v á n í m e to d p ře d ka (m e th o d h id in g ) ..........................................................................501 M e to d y, kte ré ne ní m o žn o v p o to m k u z a k rý t č i p ře b ít - m o d ifik á to r f in a l............. 504
23.5
T říd y, k te ré n e m o h o u m ít p o to m k y ...................................................................................... 506
23.6
Z a k rý v á n í a trib u tů p ře d k a ........................................................................................................506 Emulace zakrývání v D-třídách....................................................................................................... 508
23.7
23.8
M e to d y n o v ě d e fin o v a n é v p o to m k u ................................................................................... 508 Staticky x dynamicky typované jazyky.......................................................................................... 509 Proč je situace jednoduchá jen zdánlivě....................................................................................... 510 Z a k rý v á n í in te rn íc h d a to v ý c h t y p ů .......................................................................................510
23.9
Z á v ě r................................................................................................................................................ 513
23.10 S h rn u tí - c o js m e se n a u č ili....................................................................................................514 24.
V ir t u á ln í m e t o d y a j e j i c h p ř e b í je n í ...........................................................................................5 1 5 24.1
V irtu á ln í m e to d y a je jic h p ře b íje n í........................................................................................ 515 Časná a pozdní vazba...................................................................................................................... 516 Virtuální metody...............................................................................................................................516
24.2
K teré m e to d y js o u v J a v ě v ir t u á ln í ....................................................................................... 517
24.3
C h o vá n í v irtu á ln íc h m e to d ...................................................................................................... 517
24.4
E m u la ce v irtu á ln íc h m e to d v d e k o r á to r u ........................................................................... 521
24.5
Z d o k o n a le n í tříd y S q u a re ......................................................................................................... 521 Přebití metody c o p y ()..................................................................................................................... 522 Problémy s nastavováním velikosti............................................................................................... 522 První návrh definice metody s e tS iz e ( in t,in t) ........................................................................... 523 Test prvního návrhu........................................................................................................................ 524 Oprava...............................................................................................................................................526
24.6
C o se nám na d ě d ě n í n e líb í..................................................................................................... 527
24.7
N á v rh o v ý v z o r Š a b lo n o v á m e to d a (T em plate m e th o d ).................................................. 528
Podrobný ob sah
19
Princip.......................................................................................................... ....................................528 Implicitní metody interfejsů....................................................................... ....................................528 Metoda to S trin g O ..................................................................................... ....................................529
24.8 S h rn u tí - c o is m e se n a u č ili............................................................... .......................... 530 Pasti a propasti dědění im plem entace.................................... .......................... 532 25.1 T říd a X C R e c ta n g le ................................................................................. .......................... 532
25.2 25.3 25.4
25.5 25.6
Testovací tříd a............................................................................................ ....................................533 Podklady pro vlastní řešení....................................................................... ....................................534 Definice konstruktorů................................................................................ ....................................534 Definice tovární tříd y.................................................................................. ....................................536 Metoda p a in t(P a in te r)............................................................................. ....................................536 Změny pozice a ve liko sti........................................................................... ....................................537 Upravená podoba definice třídy................................................................. ....................................538 C o je na u ve d e n é m ře še n í n e v h o d n é ............................................ .......................... 538 Ř ešení d e fin ic í a tr ib u tu ....................................................................... .......................... 541 Ř ešení s lo u č e n ím d ě d ě n í a d e k o rá to ru ......................................... .......................... 541 Typové parametry....................................................................................... ....................................542 Předci ....................................................................................................... ....................................546 Statické členy.............................................................................................. ....................................546 Instanční členy............................................................................................ ....................................546 S a m o sta tn á ú lo h a : T e rč ...................................................................... .................................. 547 V irtu á ln í m e to d y v k o n s tru k to r u ...................................................... .................................. 547 Definice třídy Aureole................................................................................. ....................................547 Test objektů se svatozáří........................................................................... ....................................548 Řešení 1: Změna řešení............................................................................. ....................................552 Řešení 2: Devirtualizace m etody............................................................... ....................................552 Řešení 3: Využití rodičovské verze metody.............................................. ....................................553 Řešení 4: Definice ekvivalentní soukromé metody.................................. .................................... 553
25.7 S h rn u tí - c o js m e se n a u č ili.............................................................. .................................. 553 Vytváříme rodičovskou třídu - ARobotl ........................................... ................................. 555 26.1 A b s tra k tn í m e to d y a t ř í d y ................................................................... .................................. 555 Abstraktní a konkrétní metody.................................................................. .................................... 555 Interfejsy................................................................................................ .................................... 556 Třídy...................................................................................................... ......................................... 556 Abstraktní a konkrétní tříd y ....................................................................... Účel abstraktních tříd ................................................................................. Účel abstraktních metod............................................................................ .....................................557
26.2 26.3
26.4
P ro č s p o le č n ý r o d ič ............................................................................. .................................. 558 N á v rh o v ý v z o r S ta v s ro d ič o v s k o u tříd o u .................................... .................................. 558 Vytvoření prázdného společného rodiče................................................. .....................................559 Příprava potom ků...................................................................................... .....................................559 Členy tříd y .................................................................................................. .....................................560 Konstantní atributy instancí...................................................................... .....................................560 Konstruktory.............................................................................................. .....................................560 Metody instancí......................................................................................... .....................................562 Ověření regresním testem ........................................................................ R o d ič o v s k á tříd a se g m e n tů o k r u h u ................................................................................. 564 Specifikace předků.................................................................................... .....................................564 IRingSegment....................................................................................... ..................................... 564 IChangeable......................................................................................... ..................................... 564 cop yO .................................................................................................. ..........................................565 IRingBuildSegment............................................................................. .....................................565 Společný abstraktní rodič......................................................................... Definice potom ků......................................................................................
20
J a v a 8 - Ú vo d d o o b je k to v é a rc h ite k tu ry p ro m írně p o k ro č ilé
26.5
N á v rh o v ý v z o r A d a p té r p o d ru h é ........................................................................................... 570
26.6
S p o le č n ý ro d ič d e k o rá to rů ..................................................................................................... 571
26.7
P o u ž ití v e tříd ě C o n t r o lle d V e h ic le ..................................................................................... 572
26.8
S p o le č n ý ro d ič v ý t a h ů ..............................................................................................................572
26.9
S h r n u t í - c o js m e s e n a u č ili.................................................................................................. 573
Část IV: Další užitečné programové konstrukce
575
27. Učíme program p ře m ýšle t....................................................................................576 27.1
J e d n o d u c h ý p o d m ín ě n ý p řík a z ...........................................................................................577
27.2
P ře d ča sn é u k o n č e n í m e to d y ................................................................................................578
27.3
K d y a s s e r t a k d y i f ................................................................................................................ 578
27.4
B lo k příka zů (s lo ž e n ý p řík a z )...............................................................................................579 Formátování bloků příkazů............................................................................................................. 579 Blok je chápán jako jeden příkaz................................................................................................... 580 Další vlastnosti bloku příkazů........................................................................................................ 581 Vnořování bloků příkazů................................................................................................................. 581
27.5
M e to d a e q u a ls ( O b je c t) ............................................................................................................ 583 Kontrakt m etody............................................................................................................................... 583 Definice m etody............................................................................................................................... 583
27.6
M e to d a hashC odeQ ..................................................................................................................... 585
27.7
N e m ě n n o s t o b je k tů ..................................................................................................................587
27.8
Z a n o řo v á n í p o d m ín ě n ý c h p ř ík a z ů ..................................................................................... 588 Architektura...................................................................................................................................... 589
27.9
V ý b ě r ze d v o u m o ž n o s tí........................................................................................................591
27.10
K aská da m o ž n o s tí....................................................................................................................592 Tovární metoda jednosměrného vozidla....................................................................................... 594
27.11
P ře p ín a č - p říka z s w i t c h ....................................................................................................... 595 Slučování návěští............................................................................................................................. 597
27.12
P ře p ín a č nad v ý č to v ý m ty p e m ............................................................................................ 598 Kvalifikace v návěštích................................................................................................................... 598
27.13
P ře p ín a č nad ře tě z c i................................................................................................................ 599
27.14
S h rn u tí - c o js m e se n a u č ili................................................................................................. 600
28. Ještě jednu rundu, prosím .................................................................................... 603 28.1
M ěření č a s u v J a v ě .................................................................................................................. 603
28.2
C y k ly ............................................................................................................................................. 604
28.3
J a k m ám e ry c h lý p o č íta č - c y k lu s s k o n c o v o u p o d m ín k o u ..................................... 604
28.4
Je d e n te s t n e s ta č í - c y k lu s s p o č á te č n í p o d m ín k o u .................................................. 606
28.5
C y k lu s s p a ra m e tre m .............................................................................................................. 607
28.6
N e k o n e č n ý c y k lu s ....................................................................................................................609
28.7
V n o řo v á n í c y k lů ........................................................................................................................ 610
28.8
C y k lu s s p o d m ín k o u u p ro s tře d ........................................................................................... 611
28.9
P říkaz bre ak s n á v ě š tím ......................................................................................................... 612
28.10
C y k lu s s p rá z d n ý m t ě le m ..................................................................................................... 614
28.11
D v o jte č k o v ý c y k lu s f o r ......................................................................................................... 615
28.12
S h rn u tí - c o js m e se n a u č ili.................................................................................................617
P odrobný ob sah
29.
30.
21
D a lš í d ů le ž it é d a t o v é s t r u k t u r y ................................................................................................. 6 1 9 29.1
P ra cu je m e s n á h o d o u ..............................................................................................................619
29.2
K o n te jn e ry ..................................................................................................................................... 621 Statické a dynamické kontejnery....................................................................................................621 Kolekce (Collection)........................................................................................................................ 623 Množina (Set)................................................................................................................................... 623 Seznam (List)................................................................................................................................... 624 Fronta (Queue)................................................................................................................................. 624 Oboustranná fronta (Deque)........................................................................................................... 625 Zásobník (Stack)...............................................................................................................................625 Strom (Tree)..................................................................................................................................... 625 Graf (Graph)..................................................................................................................................... 626 Mapa (Map), Slovník (Dictionary)....................................................................................................626
29.3
S ta n d a rd n í k n ih o v n a k o le k c í J a v y ........................................................................................ 627
29.4
P ře vo d d a to v o d u na k o le k c i č i p o le .................................................................................... 628
29.5
N á v rh o v ý v z o r Ite rá to r (Ite ra to r).............................................................................................628 Princip................................................................................................................................................629 Interfejsy ja v a . u t il. Ite ra to r< E> a ja v a . la n g . Iterable<E > .....................................................629 Použití iterátorů v Javě....................................................................................................................630 Odebírání objektů během cyklu ......................................................................................................631 Zobecnění možností cyklu fo r ( : ) ..................................................................................................633
29.6
S h rn u tí - c o js m e se n a u č ili....................................................................................................635
O č e m j s m e je š t ě n e h o v o ř i l i ....................................................................................................... 6 3 8 30.1
U žite čn é tříd y ze s ta n d a rd n í k n ih o v n y ................................................................................638
30.2
V ý č to v é d a to v é t y p y ...................................................................................................................639
30.3
D a to v ý ty p O p tio n a l< T > ............................................................................................................639
30.4
R e g u lá rn í v ý ra z y (re g u la r e x p re s s io n s ) ............................................................................. 640
30.5
Seznam d o p o ru č e n é a n e d o p o ru č e n é lite r a tu r y ............................................................. 641
30.6
S lo v o na z á v ě r ............................................................................................................................. 641
R e js t ř í k ................................................................................................................................................................6 4 2