Objectgeoriënteerd ontwerpen en programmeren
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.
Voorwoord
1 Introductie
1.1 Inleiding
1.2 Achtergrond
1.3 En dan is er Java
1.4 Applicatie, applet en servlet
1.5 Hoe gaat het programmeren in zijn werk?
1.6 Wat heb je nodig?
1.7 De software installeren
1.7.1 NetBeans en JDK installeren
1.7.2 JDK en Eclipse installeren
1.8 Verschillende versies van Java
1.9 Bomen en JavaFX
2 Een JavaFX-applicatie maken
2.1 Inleiding
2.2 Een opstartklasse voor een JavaFX-applicatie
2.3 Oefeningen
2.3.1 NetBeans-oefeningen
2.3.2 Eclipse-oefeningen
2.3.3 Oefeningen voor beide IDE’s
2.4 Wat is een klasse?
2.4.1 Waaruit bestaat de opstartklasse?
2.4.2 De methode start() en de methode main()
2.4.3 De kop van de methode
2.4.4 De body van de methode
2.4.5 De klasse FXVb0201
2.4.6 Importeren van klassen uit een package
2.4.7 Commentaar
2.5 Een gebruikersinterface
2.5.1 Een klasse voor de gebruikersinterface
2.5.2 Declaratie van referenties
2.5.3 Constructor
2.6 Samenwerking tussen klassen
2.6.1 Opstart- en gui-klasse in dezelfde package
2.7 Oefeningen
2.8 Event-afhandeling
2.8.1 Een event-handler
2.9 Twee knoppen en een tekstvak
2.10 Richtlijnen voor de opmaak van broncode
2.10.1 Witregels
2.11 Regels voor namen in Java
2.12 Handige hulp van NetBeans en Eclipse
2.13 Samenvatting
2.14 Oefeningen
3 Rekenen en tekenen
3.1 Inleiding
3.2 Variabelen van het type int
3.2.1 Het assignment-statement
3.2.2 Tekst op het scherm
3.2.3 Het keyword final
3.2.4 De coördinaten van Pane
3.2.5 Verkorte declaratie en initialisatie
3.3 De rekenkundige operatoren +, -, *, / en %
3.3.1 De gehele deling en de rest
3.3.2 Grote gehele getallen
3.3.3 Prioriteiten
3.4 Oefeningen
3.5 Meer operatoren
3.5.1 De toekenningsoperator +=
3.5.2 Andere toekenningsoperatoren
3.5.3 De increment-operator ++
3.5.4 De decrement-operator --
3.5.5 Postfix en prefix
3.6 Invoer van gehele getallen via een tekstvak
3.6.1 Lokale variabelen
3.6.2 Twee lokale variabelen met dezelfde naam
3.6.3 Attributen en lokale variabelen
3.6.4 Initialisatie van lokale variabelen en attributen
3.6.5 NullPointerException
3.6.6 Componenten in een Pane plaatsen
3.7 Oefeningen
3.8 Tekenen met JavaFX
3.8.1 Kleur
3.8.2 Transparantie
3.8.3 De groeiende cirkel
3.9 De klasse Shape
3.9.1 De klasse Line
3.9.2 De klasse Rectangle
3.9.3 De klassen Circle en Ellipse
3.9.4 Vereniging, verschil en doorsnede
3.10 Samenvatting
3.11 Oefeningen
4 Objectgeoriënteerd programmeren
4.1 Inleiding
4.2 Het type double
4.2.1 Rekenkundige operatoren
4.2.2 Delen: de gehele en de normale deling
4.2.3 De operator %
4.2.4 Omzetten van int naar double: typecasting
4.2.5 Omzetten van double naar int
4.2.6 Invoer van double via een tekstvak
4.3 Een betere lay-out met een GridPane
4.3.1 Een TextField-event
4.3.2 Een niet te wijzigen TextField
4.3.3 Formatteren van uitvoer met String.format()
4.3.4 Ruimte om de componenten
4.3.5 Een Label
4.3.6 De broncode
4.3.7 Scheidingsteken in getallen
4.4 Oefeningen
4.5 Algoritme: de kassa
4.6 Een kassa is een object
4.6.1 De klasse Kassa
4.6.2 Data hiding
4.6.3 Een methode voor de kassa
4.6.4 Opvragen van de waarde van een attribuut
4.6.5 De klasse Kassa
4.7 Objecten maken
4.8 Gebruikersinterface voor de kassa
4.9 De kracht van objectgeoriënteerd programmeren
4.10 Statische methoden en constanten
4.10.1 Toevalsgetallen: random
4.10.2 Toevalsgetallen tussen andere waarden dan 0 en 1
4.11 Samenvatting
4.12 Oefeningen
5 Keuzes en herhalingen
5.1 Inleiding
5.2 Relationele en logische operatoren
5.2.1 Relationele operatoren
5.2.2 Logische operatoren: de en-operator &&
5.2.3 Een consoleapplicatie
5.2.4 Operanden
5.2.5 De of-operator ||
5.2.6 De niet-operator !
5.2.7 Een boolean-variabele
5.3 Het if-statement
5.3.1 Een ingewikkelder voorbeeld
5.4 Het if-else-statement
5.4.1 Deelbaarheid onderzoeken
5.5 Een sorteeralgoritme
5.5.1 Algoritme voor het verwisselen van twee waarden
5.5.2 Algoritme voor het sorteren van drie waarden
5.6 Wanneer zijn twee strings gelijk?
5.6.1 De methoden equals() en equalsIgnoreCase()
5.7 Oefeningen
5.8 Het for-statement
5.8.1 Controlegedeelte van het for-statement
5.8.2 De body van het for-statement
5.8.3 Zet geen puntkomma na het controlegedeelte
5.8.4 De tafel van 13
5.8.5 Een nette tabel
5.9 Andere mogelijkheden met een for-statement
5.9.1 Andere beginwaarden dan 0 of 1
5.9.2 Terugtellen
5.9.3 Grotere stappen
5.9.4 Variabele begin- en eindwaarden
5.9.5 Een for-statement waarvan de body niet wordt uitgevoerd
5.10 Een rijtje cirkels
5.11 Tekenen en schrijven op een canvas
5.11.1 Cirkels tekenen
5.12 Oefeningen
5.13 Het while-statement
5.13.1 Opmerkingen bij het while-statement
5.13.2 Oneindige herhaling
5.13.3 Gelijkwaardigheid van het for-statement en het while-statement
5.14 Het do-while-statement
5.15 Samenvatting
5.16 Oefeningen
6 Ontwerpen en testen
6.1 Inleiding
6.2 Ontwerp van Datum
6.2.1 Een klasse in UML
6.2.2 Getters voor Datum
6.2.3 Setters voor Datum
6.2.4 Properties
6.2.5 Notatieverschillen Java en UML
6.2.6 Implementatie van Datum
6.2.7 Over this
6.2.8 Een kleine test
6.3 Oefeningen
6.4 O
ntwerpen op basis van verantwoordelijkheid
6.4.1 Verantwoordelijkheden van een bankrekening
6.4.2 Het type van de attributen en methoden
6.4.3 De implementatie van Bankrekening
6.5 Oefeningen
6.6 Een constructor
6.6.1 Constructor toevoegen
6.6.2 Een tweede constructor voor Bankrekening
6.6.3 Formele en actuele argumenten of parameters
6.7 Default constructor
6.7.1 In de broncode onzichtbare default constructor
6.7.2 In de broncode wél zichtbare default constructor
6.7.3 Constructor overloading bij Datum
6.7.4 Waarschuwing
6.7.5 In de ene constructor de andere aanroepen
6.7.6 Ambiguïteit
6.8 De methode toString()
6.8.1 De klasse Object en toString()
6.9 De volledige klasse Datum
6.9.1 Getters en setters automatisch genereren in NetBeans
6.9.2 Getters en setters automatisch genereren in Eclipse
6.10 Oefeningen
6.11 Testen van klassen: JUnit
6.11.1 Testen met JUnit in NetBeans
6.11.2 Testen met JUnit in Eclipse
6.11.3 Meer tests aan een methode toevoegen
6.11.4 Meer testmethoden toevoegen
6.12 Samenvatting
6.13 Oefeningen
7 Van domeinklasse tot implementatie
7.1 Inleiding
7.2 Een lesrooster
7.2.1 Analyse
7.2.2 Wat is de samenhang tussen de begrippen?
7.3 Domeinmodel en UML
7.3.1 Multipliciteit
7.3.2 Overzicht multipliciteiten in UML
7.3.3 Analyse, ontwerp en implementatie
7.3.4 Navigeerbaarheid
7.4 Implementatie
7.4.1 De klasse Tijdstip
7.4.2 De klasse Les
7.4.3 De klasse Lesrooster
7.4.4 De methode forEach()
7.4.5 Het for-each-statement
7.4.6 Een klein testprogramma voor Lesrooster
7.4.7 Beter toString() dan print()
7.4.8 StringBuffer
7.4.9 TextArea
7.5 Tussenstand
7.6 Wat is een ArrayList?
7.6.1 Toevoegen aan ArrayList
7.7 Oefeningen
7.8 Kassa 2
7.8.1 Wikkelklasse
7.8.2 ArrayList met double
7.8.3 De methode System.out.printf()
7.9 Javadoc
7.9.1 Het schrijven en genereren van documentatie
7.9.2 De documentatie in NetBeans openen
7.9.3 De documentatie in Eclipse openen
7.9.4 Javadoc bij klassen
7.9.5 Javadoc bij constructors en methoden
7.9.6 Javadoc bij een bepaald item bekijken
7.9.7 Javadoc-commentaar automatisch invoegen in de broncode
7.10 Arrays
7.10.1 Een array met int-waarden
7.10.2 De lengte van een array
7.10.3 De grenzen van de index
7.10.4 Array en for-each
7.10.5 Een array vullen met een for-statement
7.10.6 Een array met doubles
7.10.7 Verkorte declaratie en initialisatie
7.11 Samenvatting
7.12 Oefeningen
8 Overerving en polymorfie
8.1 Inleiding
8.2 De klasse Bank
8.2.1 Oplossing 1: twee lijsten
8.2.2 Oplossing 2: één lijst met instanties van Object
8.2.3 De operator instanceof
8.2.4 Statisch en dynamisch type
8.2.5 De klassen Betaalrekening en Spaarrekening
8.3 Oplossing 3: Overerving
8.3.1 Klassendiagram met overerving
8.3.2 Private en protected
8.3.3 Access modifiers
8.3.4 Een Betaalrekening is een Rekening
8.3.5 De Bank in werking
8.4 Intermezzo: Rechthoek
8.4.1 Overerving: FlexRechthoek
8.4.2 Constructor en overerving
8.4.3 Aanroep met super()
8.5 Overriding
8.5.1 Overerving en overriding in JavaFX
8.5.2 De annotatie @Override
8.6 Dynamische binding
8.6.1 Gebreken van de eerste Bank
8.6.2 Superioriteit van de tweede Bank
8.6.3 Polymorfie
8.6.4 Nogmaals de klasse Object en toString()
8.7 Samenvatting
8.8 Oefeningen
9 Abstracties
9.1 Inleiding
9.2 Een interface
9.2.1 Een abstractie
9.2.2 Referenties van een interfacetype
9.2.3 Interface in UML
9.2.4 Gevolgen van het implementeren van een interface
9.3 Een abstracte klasse
9.4 Meer dan één interface implementeren
9.4.1 Interfaces en abstracte klassen
9.4.2 Statische en default-methoden
9.5 Oefeningen
9.6 Lambdafuncties en functionele interfaces
9.6.1 Notatie van lambdafuncties
9.6.2 Een functionele interface
9.6.3 Drie lambdafuncties aan het werk
9.6.4 Event-handlers en lambdafuncties
9.7 Samenvatting
9.8 Oefeningen
10 Exception handling
10.1 Inleiding
10.2 Het genereren van een exceptie
10.3 Het opvangen van een exceptie: try en catch
10.3.1 Wat gebeurt er precies in een try-catch-blok?
10.3.2 Mededeling in een Alert-venster
10.3.3 Finally
10.4 Zelf een exceptie opwerpen: throw
10.4.1 Javadoc bij exceptie
10.4.2 Exceptie en informatie voor de gebruiker
10.5 Eén try, twee catches
10.6 De exceptie-klassen
10.6.1 Over de volgorde van de catch-blokken
10.7 Wat gebeurt er als je een exceptie niet opvangt?
10.7.1 De call stack
10.8 Rethrow
10.9 Samenvatting
10.10 Oefeningen
Index
Je hebt een zakelijk account nodig om dit product te kunnen bestellen. Je bent nu ingelogd met het e-mailadres: .
Wil je dit e-mailadres gebruiken voor je zakelijk account?
Ander e-mailadres gebruiken voor zakelijk account Huidig e-mailadres gebruiken voor zakelijk account
Binnenkort verhuist onze website naar Boom.nl/hogeronderwijs. Wil je alvast kennismaken met onze nieuwe website?
Voor een beter begrip