Inhoudsopgave 1 Inleiding 1 1.1 Wat kan je met Java doen?..................... 1 1.2 Over Java............................... 3 1.3 Gebruik van dit boek......................... 5 1.4 Installatie............................... 6 1.5 Het eerste programma........................ 11 1.6 Vaak voorkomende problemen.................... 13 1.6.1 Invalid jdkhome specified.................. 13 1.6.2 Het indrukken van de F6-toets heeft geen effect...... 13 1.6.3 Eén of meer projecten ontwikkelden fouten tijdens de compilatie............................. 14 1.7 Ontleding van het eerste programma................ 14 2 Object-georiënteerd programmeren 17 2.1 Abstractie............................... 17 2.2 Klasse................................. 18 2.3 Attribuut............................... 19 2.3.1 Type.............................. 21 2.3.2 Een attribuut declareren................... 22 2.3.3 Een attribuut initialiseren.................. 22 2.4 Methode................................ 23 2.4.1 Definitie............................ 23 2.4.2 De leden van een object benoemen............. 25 2.4.3 Parameter........................... 26 2.4.4 Teruggeefwaarde....................... 27 2.4.5 Overladen........................... 29 2.5 Objecten construeren......................... 29 2.6 Statische attributen en methodes.................. 33 2.7 Primitieve types en referentietypes................. 35 3 Basisconstructies 39 3.1 Opdrachten.............................. 39 3.2 Veranderlijken............................ 40 3.3 Toekenningsopdrachten....................... 41 3.3.1 Uitdrukking.......................... 42 3.3.2 Initialisatie van een veranderlijke of een attribuut..... 42 3.3.3 Afgekorte toekenning..................... 43 3.3.4 Ophoging en verlaging.................... 43 iii
iv INHOUDSOPGAVE 3.4 Bewerkingen............................. 44 3.4.1 Rekenkundige bewerkingen................. 44 3.4.2 Samenstelling van tekststrengen.............. 46 3.4.3 Andere bewerkingen..................... 46 3.5 Invoer langs het toetsenbord..................... 48 3.6 Uitdrukking.............................. 51 3.6.1 Afgekorte toekenning..................... 54 3.7 De uitvoering van een Java-programma.............. 55 4 Controlestructuren 59 4.1 Voorwaardelijke opdrachten..................... 60 4.1.1 Vergelijkingen......................... 60 4.1.2 Logische bewerkingen.................... 63 4.1.3 Algemene vorm van de voorwaardelijke opdracht..... 64 4.1.4 Voorwaardelijke uitdrukking................. 66 4.1.5 Keuze-opdracht........................ 67 4.2 Herhalingen.............................. 68 4.2.1 Lusopdracht while..................... 69 4.2.2 Genestelde lussen....................... 73 4.2.3 Rij............................... 74 4.2.4 for............................... 76 4.2.5 do/while............................ 79 4.2.6 Een iteratie onderbreken................... 82 4.2.7 De lusopdracht afbreken................... 83 4.2.8 Labels............................. 84 4.3 Recursie................................ 85 5 Overerving 87 5.1 Subtypes............................... 87 5.2 Overerving van attributen en methodes.............. 92 5.3 Een geërfde methode onderdrukken................. 95 5.4 Abstracte klassen en abstracte methodes.............. 98 5.5 Interface................................ 100 5.6 De bijzondere rol van de klasse Object............... 104 6 Pakketten, afscherming en groepering 105 6.1 De klassenbibliotheek......................... 105 6.2 Gebruik van pakketten........................ 108 6.2.1 Naamconventies....................... 110 6.3 Werken met tekstveranderlijken................... 111 6.3.1 De klasse java.lang.string.................. 111 6.3.2 StringBuffer.......................... 120 6.4 Werken met bestanden: het pakket java.io............. 122 6.4.1 Sequentiële bestanden versus willekeurige toegang.... 123 6.4.2 Wat is de kleinste eenheid van informatie?......... 123 6.4.3 Afgeleide streams....................... 128 6.4.4 De standaard-bytestromen van het systeem........ 129 6.4.5 Geheugenstromen...................... 130 6.5 Toegangsbeperking.......................... 132 6.6 Inwendige klassen........................... 135
INHOUDSOPGAVE v 6.6.1 Statische inwendige klassen................. 137 6.6.2 Gewone inwendige klassen.................. 139 6.6.3 Anonieme klassen...................... 141 6.7 Bereik, zichtbaarheid, levensduur en toegankelijkheid....... 141 7 Kwaliteit 145 7.1 Uitzonderingen............................ 145 7.1.1 Paranoia............................ 145 7.1.2 Definitie............................ 148 7.1.3 Exceptions doorgeven.................... 148 7.1.4 Exceptions opvangen..................... 150 7.1.5 Exceptions genereren..................... 152 7.1.6 Exceptions definiëren..................... 153 7.2 Commentaar............................. 156 7.3 De documentatie-generator Javadoc................ 157 7.4 Levenscyclus systeemontwikkeling.................. 161 7.5 Domeinklassen............................ 163 7.6 Technisch ontwerp.......................... 165 7.6.1 Architectuur......................... 165 7.6.2 Ontwerppatronen....................... 171 7.6.3 Voorbeeld van een patroon: factory method........ 172 7.6.4 Voorbeeld van een patroon: adapter............ 173 7.6.5 Frameworks.......................... 175 7.7 Moduletest met JUnit........................ 176 8 Webtoepassingen 185 8.1 De technologie van het web..................... 185 8.1.1 De context: webservers en browsers............ 185 8.1.2 HTML............................. 188 8.2 Servlet................................. 190 8.2.1 Definitie en voorbeeld.................... 190 8.2.2 Informatie doorgeven met formulieren........... 195 8.2.3 De levenscyclus van een servlet............... 198 8.3 JavaServer Pages (JSP)....................... 202 8.4 Sessie................................. 204 9 Grafische gebruikersinterfaces 207 9.1 Swing................................. 207 9.2 Opbouw van een interface...................... 208 9.3 De opmaak beheersen........................ 215 9.3.1 FlowLayout.......................... 216 9.3.2 BorderLayout........................ 216 9.3.3 GridLayout.......................... 219 9.3.4 GridBagLayout........................ 220 9.3.5 Opmaakbeheerders combineren............... 225 9.4 Gebeurtenissen afhandelen...................... 227 9.5 Menu................................. 233 9.6 Tekenen................................ 237 9.7 Applet................................. 240 9.7.1 Definitie en voorbeeld.................... 240
vi INHOUDSOPGAVE 9.7.2 Het leven van een applet................... 242 9.8 Model/View/Controller....................... 242 9.9 Tabellen en bomen weergeven.................... 250 9.9.1 Tabellen............................ 250 10 Herbruikbare componenten (Beans) 259 10.1 Begrippen............................... 259 10.2 Een bestaande Bean gebruiken in een toepassing......... 260 10.3 Archieven............................... 262 10.3.1 Wat is een archief?...................... 262 10.3.2 Manifest............................ 264 10.4 Zelf een Bean ontwikkelen...................... 265 10.5 Eigenschap.............................. 266 10.6 Gebeurtenis.............................. 268 10.7 Gebonden eigenschappen...................... 271 10.8 Beperkte eigenschappen....................... 274 10.9 BeanInfo................................ 276 11 Parallel programmeren 279 11.1 Begrippen............................... 279 11.2 Timers................................. 280 11.3 Animatie............................... 282 11.4 De klasse Thread en de interface Runnable............ 283 11.5 Prioriteit en activering........................ 286 11.6 Synchronisatie............................ 290 11.6.1 join.............................. 290 11.6.2 synchronized........................ 291 11.6.3 wait en notify........................ 297 12 Relationele gegevensbanken 301 12.1 Platform-onafhankelijke toegang.................. 301 12.2 Voorbeelden van installaties..................... 301 12.3 Een gegevensbank bevragen..................... 301 12.4 Een gegevensbank manipuleren................... 301 12.5 Transactie............................... 301 12.6 Gevorderde technieken........................ 301 12.7 Object-relational mapping...................... 302 13 Gedistribueerd programmeren 303 13.1 Taakverdeling............................. 303 13.2 Web services............................. 303 13.3 Uitgewerkt voorbeeld: vliegtuigreizen................ 303 14 Bedrijfstoepassingen 305 14.1 Enterprise JavaBeans......................... 305 14.2 Spring................................. 305 14.2.1 Inversion of Control..................... 305 14.2.2 Een elementair voorbeeld.................. 307
INHOUDSOPGAVE vii 15 Bijzondere programmeertechnieken 313 15.1 Abstracte gegevenstypes....................... 313 15.2 Generische types........................... 316 15.3 Collecties............................... 317 16 Java op de GSM 323 16.1 J2ME: schaarse hulpbronnen.................... 323 16.2 Een simulator voor onze GSM-omgeving.............. 324 16.3 Een eerste voorbeeldprogramma................... 324 16.4 Een MIDlet overbrengen naar een GSM.............. 334 16.5 Een spel................................ 335 A Oplossingen van de oefeningen 341 Bibliografie 343 Index 346