Gertjan Laan (www.gertjanlaan.nl) was als docent werkzaam in het hoger onderwijs. Hij gaf jaren les in wiskunde en programmeertalen, waaronder C++ en Java.
Meer over Gertjan LaanAan de slag met Java en JavaFX
Objectgeoriënteerd ontwerpen en programmeren
Paperback Nederlands 2018 5e druk 9789024415663Samenvatting
'Aan de slag met Java en JavaFX' maakt je wegwijs in de wereld van Java. Met de komst van Java 8 is JavaFX een geïntegreerd onderdeel van Java, wat het mogelijk maakt modern uitziende applicaties te maken. Het boek is bestemd voor beginnende Java-programmeurs, studenten die Java moeten leren en iedereen die wil weten wat een klasse, object, methode of interface is.
Java is een objectgeoriënteerde programmeertaal.
Alle - vaak abstracte - concepten die daarbij horen worden vanaf het eerste hoofdstuk glashelder uitgelegd en aan de hand van zo'n 150 goedgekozen voorbeelden gedemonstreerd. Aan de slag met Java en JavaFX richt zich naast het programmeren van applicaties op de basisprincipes van objectgeoriënteerd ontwerpen en programmeren.
Dankzij de vele vragen en gevarieerde opgaven in het boek en de website www.aandeslagmetjava.nl (met directe feedback!) is Aan de slag met Java en JavaFX zeer geschikt als cursusmateriaal dat door studenten zelfstandig kan worden doorgewerkt.
Specificaties
Lezersrecensies
Inhoudsopgave
1 Introductie 1
1.1 Inleiding 1
1.2 Achtergrond 1
1.3 En dan is er Java 2
1.4 Applicatie, applet en servlet 3
1.5 Hoe gaat het programmeren in zijn werk? 3
1.6 Wat heb je nodig? 5
1.7 De software installeren 5
1.7.1 NetBeans en JDK installeren 5
1.7.2 JDK en Eclipse installeren 6
1.8 Verschillende versies van Java 6
1.9 Bomen en JavaFX 7
2 Een JavaFX-applicatie maken 11
2.1 Inleiding 11
2.2 Een opstartklasse voor een JavaFX-applicatie 11
2.3 Oefeningen 13
2.3.1 NetBeans-oefeningen 13
2.3.2 Eclipse-oefeningen 15
2.3.3 Oefeningen voor beide IDE’s 18
2.4 Wat is een klasse? 18
2.4.1 Waaruit bestaat de opstartklasse? 19
2.4.2 De methode start() en de methode main() 20
2.4.3 De kop van de methode 21
2.4.4 De body van de methode 21
2.4.5 De klasse FXVb0201 21
2.4.6 Importeren van klassen uit een package 22
2.4.7 Commentaar 23
2.5 Een gebruikersinterface 24
2.5.1 Een klasse voor de gebruikersinterface 24
2.5.2 Declaratie van referenties 25
2.5.3 Constructor 25
2.6 Samenwerking tussen klassen 27
2.6.1 Opstart- en gui-klasse in dezelfde package 29
2.7 Oefeningen 29
2.8 Event-afhandeling 32
2.8.1 Een event-handler 32
2.9 Twee knoppen en een tekstvak 33
2.10 Richtlijnen voor de opmaak van broncode 35
2.10.1 Witregels 36
2.11 Regels voor namen in Java 36
2.12 Handige hulp van NetBeans en Eclipse 37
2.13 Samenvatting 38
2.14 Oefeningen 40
3 Rekenen en tekenen 41
3.1 Inleiding 41
3.2 Variabelen van het type int 41
3.2.1 Het assignment-statement 43
3.2.2 Tekst op het scherm 44
3.2.3 Het keyword final 45
3.2.4 De coördinaten van Pane 46
3.2.5 Verkorte declaratie en initialisatie 46
3.3 De rekenkundige operatoren +, -, *, / en % 47
3.3.1 De gehele deling en de rest 48
3.3.2 Grote gehele getallen 49
3.3.3 Prioriteiten 51
3.4 Oefeningen 52
3.5 Meer operatoren 52
3.5.1 De toekenningsoperator += 53
3.5.2 Andere toekenningsoperatoren 53
3.5.3 De increment-operator ++ 53
3.5.4 De decrement-operator -- 54
3.5.5 Postfix en prefix 54
3.6 Invoer van gehele getallen via een tekstvak 55
3.6.1 Lokale variabelen 57
3.6.2 Twee lokale variabelen met dezelfde naam 58
3.6.3 Attributen en lokale variabelen 58
3.6.4 Initialisatie van lokale variabelen en attributen 59
3.6.5 NullPointerException 59
3.6.6 Componenten in een Pane plaatsen 59
3.7 Oefeningen 61
3.8 Tekenen met JavaFX 61
3.8.1 Kleur 62
3.8.2 Transparantie 65
3.8.3 De groeiende cirkel 67
3.9 De klasse Shape 68
3.9.1 De klasse Line 69
3.9.2 De klasse Rectangle 71
3.9.3 De klassen Circle en Ellipse 73
3.9.4 Vereniging, verschil en doorsnede 75
3.10 Samenvatting 77
3.11 Oefeningen 78
4 Objectgeoriënteerd programmeren 81
4.1 Inleiding 81
4.2 Het type double 81
4.2.1 Rekenkundige operatoren 82
4.2.2 Delen: de gehele en de normale deling 82
4.2.3 De operator % 83
4.2.4 Omzetten van int naar double: typecasting 83
4.2.5 Omzetten van double naar int 84
4.2.6 Invoer van double via een tekstvak 84
4.3 Een betere lay-out met een GridPane 86
4.3.1 Een TextField-event 89
4.3.2 Een niet te wijzigen TextField 89
4.3.3 Formatteren van uitvoer met String.format() 89
4.3.4 Ruimte om de componenten 91
4.3.5 Een Label 92
4.3.6 De broncode 92
4.3.7 Scheidingsteken in getallen 94
4.4 Oefeningen 95
4.5 Algoritme: de kassa 95
4.6 Een kassa is een object 96
4.6.1 De klasse Kassa 96
4.6.2 Data hiding 97
4.6.3 Een methode voor de kassa 97
4.6.4 Opvragen van de waarde van een attribuut 98
4.6.5 De klasse Kassa 98
4.7 Objecten maken 99
4.8 Gebruikersinterface voor de kassa 100
4.9 De kracht van objectgeoriënteerd programmeren 103
4.10 Statische methoden en constanten 106
4.10.1 Toevalsgetallen: random 107
4.10.2 Toevalsgetallen tussen andere waarden dan 0 en 1 108
4.11 Samenvatting 108
4.12 Oefeningen 109
5 Keuzes en herhalingen 111
5.1 Inleiding 111
5.2 Relationele en logische operatoren 111
5.2.1 Relationele operatoren 111
5.2.2 Logische operatoren: de en-operator && 112
5.2.3 Een consoleapplicatie 113
5.2.4 Operanden 114
5.2.5 De of-operator || 115
5.2.6 De niet-operator ! 115
5.2.7 Een boolean-variabele 116
5.3 Het if-statement 116
5.3.1 Een ingewikkelder voorbeeld 119
5.4 Het if-else-statement 120
5.4.1 Deelbaarheid onderzoeken 122
5.5 Een sorteeralgoritme 122
5.5.1 Algoritme voor het verwisselen van twee waarden 123
5.5.2 Algoritme voor het sorteren van drie waarden 123
5.6 Wanneer zijn twee strings gelijk? 124
5.6.1 De methoden equals() en equalsIgnoreCase() 125
5.7 Oefeningen 126
5.8 Het for-statement 126
5.8.1 Controlegedeelte van het for-statement 127
5.8.2 De body van het for-statement 128
5.8.3 Zet geen puntkomma na het controlegedeelte 129
5.8.4 De tafel van 13 129
5.8.5 Een nette tabel 130
5.9 Andere mogelijkheden met een for-statement 132
5.9.1 Andere beginwaarden dan 0 of 1 132
5.9.2 Terugtellen 133
5.9.3 Grotere stappen 133
5.9.4 Variabele begin- en eindwaarden 133
5.9.5 Een for-statement waarvan de body niet wordt uitgevoerd 133
5.10 Een rijtje cirkels 134
5.11 Tekenen en schrijven op een canvas 136
5.11.1 Cirkels tekenen 137
5.12 Oefeningen 139
5.13 Het while-statement 140
5.13.1 Opmerkingen bij het while-statement 144
5.13.2 Oneindige herhaling 144
5.13.3 Gelijkwaardigheid van het for-statement en het while-statement 145
5.14 Het do-while-statement 146
5.15 Samenvatting 146
5.16 Oefeningen 147
6 Ontwerpen en testen 151
6.1 Inleiding 151
6.2 Ontwerp van Datum 151
6.2.1 Een klasse in UML 152
6.2.2 Getters voor Datum 152
6.2.3 Setters voor Datum 153
6.2.4 Properties 153
6.2.5 Notatieverschillen Java en UML 154
6.2.6 Implementatie van Datum 154
6.2.7 Over this 155
6.2.8 Een kleine test 156
6.3 Oefeningen 158
6.4 Ontwerpen op basis van verantwoordelijkheid 159
6.4.1 Verantwoordelijkheden van een bankrekening 160
6.4.2 Het type van de attributen en methoden 160
6.4.3 De implementatie van Bankrekening 161
6.5 Oefeningen 161
6.6 Een constructor 162
6.6.1 Constructor toevoegen 162
6.6.2 Een tweede constructor voor Bankrekening 164
6.6.3 Formele en actuele argumenten of parameters 164
6.7 Default constructor 165
6.7.1 In de broncode onzichtbare default constructor 165
6.7.2 In de broncode wél zichtbare default constructor 166
6.7.3 Constructor overloading bij Datum 166
6.7.4 Waarschuwing 167
6.7.5 In de ene constructor de andere aanroepen 167
6.7.6 Ambiguïteit 168
6.8 De methode toString() 168
6.8.1 De klasse Object en toString() 169
6.9 De volledige klasse Datum 170
6.9.1 Getters en setters automatisch genereren in NetBeans 171
6.9.2 Getters en setters automatisch genereren in Eclipse 174
6.10 Oefeningen 176
6.11 Testen van klassen: JUnit 176
6.11.1 Testen met JUnit in NetBeans 177
6.11.2 Testen met JUnit in Eclipse 181
6.11.3 Meer tests aan een methode toevoegen 183
6.11.4 Meer testmethoden toevoegen 184
6.12 Samenvatting 185
6.13 Oefeningen 186
7 Van domeinklasse tot implementatie 189
7.1 Inleiding 189
7.2 Een lesrooster 189
7.2.1 Analyse 189
7.2.2 Wat is de samenhang tussen de begrippen? 191
7.3 Domeinmodel en UML 192
7.3.1 Multipliciteit 193
7.3.2 Overzicht multipliciteiten in UML 194
7.3.3 Analyse, ontwerp en implementatie 194
7.3.4 Navigeerbaarheid 194
7.4 Implementatie 195
7.4.1 De klasse Tijdstip 195
7.4.2 De klasse Les 196
7.4.3 De klasse Lesrooster 197
7.4.4 De methode forEach() 199
7.4.5 Het for-each-statement 200
7.4.6 Een klein testprogramma voor Lesrooster 200
7.4.7 Beter toString() dan print() 201
7.4.8 StringBuffer 202
7.4.9 TextArea 203
7.5 Tussenstand 205
7.6 Wat is een ArrayList? 205
7.6.1 Toevoegen aan ArrayList 206
7.7 Oefeningen 206
7.8 Kassa 2 207
7.8.1 Wikkelklasse 208
7.8.2 ArrayList met double 209
7.8.3 De methode System.out.printf() 211
7.9 Javadoc 211
7.9.1 Het schrijven en genereren van documentatie 212
7.9.2 De documentatie in NetBeans openen 215
7.9.3 De documentatie in Eclipse openen 215
7.9.4 Javadoc bij klassen 216
7.9.5 Javadoc bij constructors en methoden 216
7.9.6 Javadoc bij een bepaald item bekijken 217
7.9.7 Javadoc-commentaar automatisch invoegen in de broncode 217
7.10 Arrays 218
7.10.1 Een array met int-waarden 218
7.10.2 De lengte van een array 220
7.10.3 De grenzen van de index 220
7.10.4 Array en for-each 221
7.10.5 Een array vullen met een for-statement 221
7.10.6 Een array met doubles 222
7.10.7 Verkorte declaratie en initialisatie 222
7.11 Samenvatting 223
7.12 Oefeningen 224
8 Overerving en polymorfie 227
8.1 Inleiding 227
8.2 De klasse Bank 227
8.2.1 Oplossing 1: twee lijsten 228
8.2.2 Oplossing 2: één lijst met instanties van Object 228
8.2.3 De operator instanceof 229
8.2.4 Statisch en dynamisch type 230
8.2.5 De klassen Betaalrekening en Spaarrekening 230
8.3 Oplossing 3: Overerving 232
8.3.1 Klassendiagram met overerving 233
8.3.2 Private en protected 235
8.3.3 Access modifiers 236
8.3.4 Een Betaalrekening is een Rekening 237
8.3.5 De Bank in werking 238
8.4 Intermezzo: Rechthoek 239
8.4.1 Overerving: FlexRechthoek 240
8.4.2 Constructor en overerving 241
8.4.3 Aanroep met super() 242
8.5 Overriding 243
8.5.1 Overerving en overriding in JavaFX 245
8.5.2 De annotatie @Override 245
8.6 Dynamische binding 246
8.6.1 Gebreken van de eerste Bank 247
8.6.2 Superioriteit van de tweede Bank 248
8.6.3 Polymorfie 250
8.6.4 Nogmaals de klasse Object en toString() 250
8.7 Samenvatting 251
8.8 Oefeningen 252
9 Abstracties 253
9.1 Inleiding 253
9.2 Een interface 253
9.2.1 Een abstractie 256
9.2.2 Referenties van een interfacetype 257
9.2.3 Interface in UML 257
9.2.4 Gevolgen van het implementeren van een interface 258
9.3 Een abstracte klasse 261
9.4 Meer dan één interface implementeren 264
9.4.1 Interfaces en abstracte klassen 264
9.4.2 Statische en default-methoden 265
9.5 Oefeningen 266
9.6 Lambdafuncties en functionele interfaces 267
9.6.1 Notatie van lambdafuncties 267
9.6.2 Een functionele interface 268
9.6.3 Drie lambdafuncties aan het werk 269
9.6.4 Event-handlers en lambdafuncties 272
9.7 Samenvatting 272
9.8 Oefeningen 273
10 Exception handling 275
10.1 Inleiding 275
10.2 Het genereren van een exceptie 275
10.3 Het opvangen van een exceptie: try en catch 277
10.3.1 Wat gebeurt er precies in een try-catch-blok? 279
10.3.2 Mededeling in een Alert-venster 280
10.3.3 Finally 282
10.4 Zelf een exceptie opwerpen: throw 283
10.4.1 Javadoc bij exceptie 285
10.4.2 Exceptie en informatie voor de gebruiker 285
10.5 Eén try, twee catches 287
10.6 De exceptie-klassen 289
10.6.1 Over de volgorde van de catch-blokken 291
10.7 Wat gebeurt er als je een exceptie niet opvangt? 292
10.7.1 De call stack 292
10.8 Rethrow 296
10.9 Samenvatting 297
10.10 Oefeningen 297
Index 299
Rubrieken
- advisering
- algemeen management
- coaching en trainen
- communicatie en media
- economie
- financieel management
- inkoop en logistiek
- internet en social media
- it-management / ict
- juridisch
- leiderschap
- marketing
- mens en maatschappij
- non-profit
- ondernemen
- organisatiekunde
- personal finance
- personeelsmanagement
- persoonlijke effectiviteit
- projectmanagement
- psychologie
- reclame en verkoop
- strategisch management
- verandermanagement
- werk en loopbaan