Inhoudsopgave cursusboek Java 8 Fundamentals
Hoofdstuk1: Inleiding
1.1 De geschiedenis van Java
1.2 Java als programmeertaal
1.2.1 Soorten programmeertalen
1.2.1.1 Gecompileerde programmeertalen
1.2.1.2 Geïnterpreteerde programmeertalen
1.2.2 Java versus andere programmeertalen
1.2.3 Kenmerken van Java als programmeertaal
1.3 Java als platform
1.4 Soorten Java-toepassingen
1.5 Samenvatting
Hoofdstuk2: De Java Development Kit
2.1 Inleiding
2.2 JDK en documentatie
2.3 Ontwikkelomgevingen
2.4 Samenvatting
Hoofdstuk3: Mijn eerste Java-toepassing
3.1 Inleiding
3.2 De broncode schrijven
3.3 De broncode compileren
3.4 De bytecode uitvoeren
3.5 De opbouw van het programma
3.5.1 Commentaar in Java-code
3.5.2 Het pakket definiëren
3.5.3 De klasse definiëren
3.5.4 De methode main()
3.5.5 Het eigenlijke werk
3.6 Samenvatting
Hoofdstuk4: Programmatielogica
4.1 Inleiding
4.2 Sequenties
4.3 Invoer en uitvoer
4.4 Keuzes
4.5 Herhalingen
4.6 Samenvatting: programmeeralgoritmen
Hoofdstuk5: De Java-programmeertaal
5.1 Inleiding
5.2 Variabelen en letterlijke waarden
5.2.1 De declaratie van variabelen
5.2.2 Het datatype
5.2.2.1 Het primitieve datatype
5.2.2.2 Het referentietype
5.2.3 Literals
5.2.3.1 Boolean-literals
5.2.3.2 Karakter-literals
5.2.3.3 Literals voor gehele getallen
5.2.3.4 Floating point literals
5.2.3.5 String literals
5.2.4 De naam
5.2.5 Final variables of constanten
5.2.6 Typeconversie
5.3 Operatoren
5.3.1 Rekenkundige operatoren
5.3.2 Relationele operatoren
5.3.3 Logische operatoren
5.3.4 Shift-operatoren
5.3.5 Bit-operatoren
5.3.6 Toekenningsoperatoren
5.3.7 Conditionele operatoren
5.3.8 Overige operatoren
5.3.9 Prioriteitsregels
5.4 Uitdrukkingen, statements en blokken
5.4.1 Uitdrukkingen
5.4.2 Statements
5.4.2.1 Uitdrukkings-statements
5.4.2.2 Declaratie-statements
5.4.2.3 Programmaverloop-statement
5.4.3 Codeblok
5.5 Programmaverloop-statements
5.5.1 Inleiding
5.5.2 Het if else statement
5.5.3 Het switch statement
5.5.4 Het while en do while statement
5.5.5 Het for statement of zelftellende lus
5.6 Methoden
5.7 Samenvatting
Hoofdstuk6: Objectgeoriënteerd programmeren
6.1 Inleiding
6.2 Inleiding in het objectgeoriënteerd
programmeren
6.2.1 Objecten
6.2.1.1 Private en publieke eigenschappen
6.2.1.2 Private en publieke methoden
6.2.1.3 Voordelen van OOP
6.2.2 Boodschappen
6.2.3 Klassen
6.3 Werken met bestaande objecten
6.3.1 Inleiding
6.3.2 Objecten maken
6.3.2.1 De creatie van het object
6.3.2.2 De initialisatie van het object
6.3.2.3 De declaratie en initialisatie van de
referentievariabele
6.3.2.4 Pakketten importeren
6.3.3 Objecten gebruiken
6.3.3.1 Publieke eigenschappen gebruiken
6.3.3.2 Publieke methoden gebruiken
6.3.4 Objecten opruimen
6.4 Tekenreeksen
6.4.1 Inleiding
6.4.2 De klasse String
6.4.2.1 Eigenschappen
6.4.2.2 Constructors
6.4.2.3 Methoden
6.4.2.4 Geheugengebruik bij strings
6.4.3 De klasse StringBuilder
6.4.4 Strings samenvoegen met de + operator
6.4.5 Gegevens formatteren met de klasse
Formatter
6.5 Samenvatting
Hoofdstuk7: Arrays
7.1 Inleiding
7.2 Arrays maken
7.3 Arrays gebruiken
7.4 De uitgebreide for-lus (for each)
7.5 Arrays van objecten
7.6 Arrays van arrays
7.7 Lookup tables
7.8 Methoden met variabel aantal parameters
7.9 Samenvatting
Hoofdstuk8: Klassen definiëren
8.1 Inleiding
8.2 De declaratie van de klasse
8.3 De klassenomschrijving (body)
8.3.1 Eigenschappen
8.3.2 Methoden
8.3.2.1 Declaratie van methoden
8.3.2.2 De body van de methode
8.3.2.3 Gegevens doorgeven aan een methode
8.3.2.4 Waarden teruggeven via een methode
8.3.2.5 Method name overloading
8.3.3 Constructors
8.3.4 Instance members en class members
8.3.4.1 Instance-variabelen
8.3.4.2 Klassenvariabelen
8.3.4.3 Instance-methoden
8.3.4.4 Klassenmethoden
8.3.5 De klasse Math
8.4 Samenvatting
Hoofdstuk9: Associaties
9.1 Inleiding
9.2 Associaties
9.3 Aggregaties
9.4 Composities
9.5 High cohesion
9.6 Samenvatting
Hoofdstuk10: Overerving en klassenhiërarchie
10.1 Inleiding
10.1.1 Subklassen en superklassen
10.1.2 Overerving
10.1.2.1 Overerven
10.1.2.2 Toevoegen
10.1.2.3 Vervangen
10.1.3 Klassenhiërarchie
10.1.4 Abstracte klassen
10.2 Subklassen definiëren in Java
10.3 Eigenschappen van subklassen
10.3.1 Overerven van eigenschappen
10.3.2 Toevoegen van eigenschappen
10.3.3 Vervangen (verbergen) van eigenschappen
10.4 Methoden van subklassen
10.4.1 Overerven van methoden
10.4.2 Toevoegen van methoden
10.4.3 Vervangen van methoden (override)
10.4.4 Polymorfisme
10.5 Constructors van subklassen
10.6 Klasseneigenschappen en klassenmethoden
10.7 Final-klassen en methoden
10.8 Abstracte klassen
10.9 De superklasse Object
10.9.1 Klassenhiërarchie
10.9.2 De operator instanceof
10.9.3 Methoden van de Object-klasse
10.9.3.1 toString()
10.9.3.2 equals() en hashCode()
10.10 Polymorfisme (bis)
10.11 Code hergebruik: overerving versus
associaties
10.12 Samenvatting
Hoofdstuk11: De opsomming
11.1 Inleiding
11.2 Eigenschappen, methoden en constructors
11.3 Samenvatting
Hoofdstuk12: Eenvoudige klassen
12.1 Inleiding
12.2 Wrappers voor primitieve datatypes
12.2.1 Wrapper-klassen
12.2.2 Autoboxing
12.2.3 Static members
12.3 Datums en tijden
12.3.1 Inleiding
12.3.2 Computertijden: de klasse Instant
12.3.3 Menselijke datums en tijden
12.3.3.1 Opsommingstypes voor weekdagen en
maanden
12.3.3.2 Lokale datums en tijden
12.3.3.3 Tijdzones
12.3.3.4 Datums en tijden met tijdzones
12.3.4 Tijdsduur
12.3.5 Formattering van datums en tijden
12.3.6 Omzetting van en naar Date en Calendar
12.4 Samenvatting
Hoofdstuk13: Interfaces
13.1 Inleiding
13.2 Een interface definiëren
13.2.1 De declaratie van de interface
13.2.2 De beschrijving van de interface
13.3 Een interface implementeren in een klasse
13.4 Standaardmethoden
13.5 Statische methoden
13.6 De interface als datatype
13.7 Samenvatting
Hoofdstuk14: Geneste en anonieme klassen
14.1 Inleiding
14.2 Gewone geneste klassen (inner classes)
14.3 Lokale geneste klassen (local inner
classes)
14.4 Anonieme geneste klassen (anonymous inner
classes)
14.5 Static geneste klassen (static nested
classes)
14.6 Samenvatting
Hoofdstuk15: Exception handling
15.1 Inleiding
15.2 Exceptions afhandelen
15.2.1 Een exception veroorzaken
15.2.2 Een exception opvangen
15.2.3 Meerdere exceptions opvangen
15.2.4 Gemeenschappelijke exception handlers
15.2.5 Het finally blok
15.3 Exceptions genereren
15.3.1 Het throw-statement
15.3.2 Exceptions bij vervangen methoden
15.4 Soorten exceptions
15.4.1 Exceptions versus errors
15.4.2 Checked exceptions versus runtime
exceptions
15.4.2.1 Checked exceptions
15.4.2.2 Runtime exceptions
15.5 Zelf een exception-klasse maken
15.6 Exceptions opvangen, inpakken en verder
gooien
15.7 Samenvatting
Hoofdstuk16: Javadoc
16.1 Inleiding
16.2 Javadoc tags
16.2.1 Documentatie van klassen en interfaces
16.2.2 Documentatie van eigenschappen
16.2.3 Documentatie van methoden en
constructors
16.2.4 Documentatie van pakketten
16.2.5 Overzichtsdocumentatie
16.3 JAVADOC-tool
16.4 Samenvatting
Hoofdstuk17: Generieken
17.1 Inleiding
17.2 Generieke klassen
17.2.1 Generieken definiëren
17.2.2 Het gebruikte type inperken
17.2.3 Onbepaald type
17.2.4 Subklassen van generieke klassen
17.3 Generieke interfaces
17.4 Generieke methoden
17.4.1 Formele generieke parameters
17.4.2 Formele generieke parameters met
wildcards
17.4.3 Formele generieke parameters met bounded
wildcards
17.4.4 Type-parameters
17.5 Achter de schermen van de generieken
17.6 Reeksen en generieken
17.7 Samenwerking tussen oude en nieuwe code
17.8 Samenvatting
Hoofdstuk18: Lambda Expressions
18.1 Inleiding
18.2 Functionele interfaces
18.3 Definitie van lambda expressions
18.4 Methodereferenties
18.4.1 Statische methoden van een klasse of
interface
18.4.2 Methoden van een gebonden object
18.4.3 Methoden van een ongebonden object
18.4.4 Constructorreferenties
18.5 Standaard functionele interfaces
18.5.1 Predicate
18.5.2 Function
18.5.3 Consumer
Hoofdstuk19: Streaming API
19.1 Inleiding: interne versus externe
iteraties
19.2 Bron van streams
19.3 Bewerkingen
19.3.1 Eindbewerkingen
19.3.1.1 Consumerende bewerkingen
19.3.1.2 Reducerende bewerkingen
19.3.1.3 Collecteren
19.3.2 Tussenliggende bewerkingen
19.3.2.1 Filters
19.3.2.2 Omzetting
19.3.2.3 Sortering
19.4 Samenvatting
Hoofdstuk20: Collections
20.1 Het Collections Framework
20.2 De interface Collection en implementaties
20.2.1 List
20.2.1.1 ArrayList
20.2.1.2 LinkedList
20.2.2 Set
20.2.2.1 HashSet
20.2.2.2 LinkedHashSet
20.2.3 SortedSet & NavigableSet
20.2.3.1 TreeSet
20.2.4 Queue
20.2.4.1 LinkedList
20.2.4.2 PriorityQueue
20.2.5 Deque
20.2.6 Vergelijking tussen de implementaties
20.2.7 Het sorteren van verzamelingen
20.2.7.1 Intrinsieke sortering
20.2.7.2 Eenmalig sorteren van een List
20.2.8 Collections en streams
20.3 De interface Map en implementaties
20.3.1 Map
20.3.1.1 HashMap
20.3.1.2 LinkedHashMap
20.3.2 SortedMap & NavigableMap
20.3.2.1 TreeMap
20.3.3 Vergelijking tussen de implementaties
Hoofdstuk21: Lezen en schrijven (I/O)
21.1 Inleiding
21.2 Mappen en bestanden
21.2.1 De interface Path
21.2.2 De klasse FileSystem
21.2.3 De klasse Files
21.2.4 De klasse File
21.3 IO-streams
21.3.1 Character streams
21.3.1.1 Tekst schrijven naar een bestand
21.3.1.2 Tekst lezen van een bestand
21.3.1.3 Tekst lezen met een Processing Stream
21.3.2 Byte streams
21.3.2.1 Binaire gegevens schrijven naar een
bestand
21.3.2.2 Binaire gegevens lezen van een bestand
21.3.2.3 Codering en karaktersets
21.4 Object Serialization
21.4.1 Objecten serialiseren en deserialiseren
21.4.2 Klassen serialiseerbaar maken
21.4.3 Transiënte variabelen
21.4.4 Het serialisatiemechanisme aanpassen
21.4.5 Serialisatie en overerving
21.4.6 Versienummering
21.5 Programma-attributen
Hoofdstuk22: Systeembronnen gebruiken
22.1 Inleiding
22.2 De System-klasse
22.2.1 Standaard-I/O streams
22.2.1.1 Standaard-inputstream
22.2.1.2 Standaard-outputstream
22.2.1.3 De standaard-errorstream
22.2.1.4 De klasse Console
22.2.2 Systeemeigenschappen
22.2.3 Finalization en Garbage Collection
22.2.4 Overige methoden
22.3 Het Runtime object
22.4 De ProcessBuilder
Hoofdstuk23: Java via de commandolijn
23.1 Inleiding
23.2 De omgevingsvariabele JAVA_HOME
23.3 Compileren
23.4 Uitvoeren
23.5 JAR-bestanden
23.5.1 Basisprincipes van JAR
23.5.2 Een JAR-bestand maken
23.5.3 Een JAR-bestand opnemen in het classpath
23.5.4 JAR-bestanden als applicaties gebruiken
23.5.5 Resources uit een JAR-bestand lezen.
Hoofdstuk24: Multithreading
24.1 Inleiding: multiprocessing en
multithreading
24.2 Een nieuwe thread creëren
24.2.1 Subklasse van de klasse Thread
24.2.2 De interface Runnable
24.2.3 Thread met lambda expression
24.3 De levenscyclus van threads
24.4 De uitvoering van threads in de toestand
RUNNABLE
24.4.1 De scheduler
24.4.2 Prioriteiten van threads
24.4.3 Preëmptieve multitasking
24.4.4 Coöperatieve multitasking
24.5 Daemon threads
24.6 De wachttoestand
24.6.1 De slaaptoestand
24.6.2 Wachten op de beëindiging van een thread
24.7 Synchronisatie van threads (monitoring)
24.7.1 Object locking
24.7.2 Wait() en notify()
24.8 De Timer-klasse en de TimerTask-klasse
24.9 Concurrency framework
24.9.1 Concurrent collections
24.9.2 Atomaire objecten
24.9.3 Callable, ExecutorService and Future
24.10 Parallellisme met streams
Hoofdstuk25: Grafische applicaties met JavaFX
25.1 Inleiding
25.2 Mijn eerste JavaFX-toepassing
25.3 FXML
25.4 Stage, Scenes en Nodes
25.5 Model View Controller
25.6 Controls
25.6.1 Label
25.6.2 TextField en PasswordField
25.6.3 Button
25.6.4 CheckBox
25.6.5 RadioButton
25.6.6 ChoiceBox
25.6.7 ComboBox
25.6.8 ListView
25.6.9 Slider
25.6.10 ScrollBar
25.6.11 DatePicker
25.6.12 ColorPicker
25.7 Layout met Panes
25.7.1 BorderPane
25.7.2 HBox
25.7.3 VBox
25.7.4 GridPane
25.7.5 FlowPane
25.7.6 TilePane
25.7.7 AnchorPane
25.7.8 ScrollPane
25.7.9 Combinatie van panes
25.8 Menu's
25.9 Event Handling
25.10 Tekenen met Canvas
25.11 Cascading Style Sheets (CSS)
25.11.1 CSS-bestanden
25.11.2 Selectors
25.11.2.1 Class selectors
25.11.2.2 ID selectors
25.11.2.3 Selectors voor pseudoklassen
25.11.2.4 Root selector
25.11.3 Stijlkenmerken via code instellen
25.12 Dialoogvensters
25.12.1 Alert
25.12.2 TextInputDialog
25.12.3 FileChooser
25.13 Samenvatting