Suchen und Finden
Service
Infos und Kontakt
Mehr zum Inhalt
Grundkurs Programmieren in Java, Band 1 - Der Einstieg in Programmierung und Objektorientierung
Inhaltsverzeichnis
6
Vorwort
16
1 Einleitung
18
1.1 Java – mehr als nur kalter Kaffee?
18
1.2 Java für Anfänger – das Konzept dieses Buches
19
1.3 Weitere Infos und Kontakt zu den Autoren
21
1.4 Verwendete Schreibweisen
21
2 Einige Grundbegriffe aus der Welt des Programmierens
22
2.1 Computer, Software, Informatik und das Internet
22
2.2 Was heißt Programmieren?
25
Teil I: Einstieg in das Programmieren in Java
28
3 Aller Anfang ist schwer
30
3.1 Mein erstes Programm
30
3.2 Formeln, Ausdrücke und Anweisungen
31
3.3 Zahlenbeispiele
32
3.4 Verwendung von Variablen
33
3.5 ”Auf den Schirm!&ldquo
33
3.6 Das Programmgerüst
34
3.7 Eingeben, übersetzen und ausführen
36
3.8 Übungsaufgaben
37
4 Grundlagen der Programmierung in Java
38
4.1 Grundelemente eines Java-Programms
38
4.1.1 Kommentare
40
4.1.2 Bezeichner und Namen
42
4.1.3 Literale
43
4.1.4 Reservierte Wörter, Schlüsselwörter
43
4.1.5 Trennzeichen
44
4.1.6 Interpunktionszeichen
45
4.1.7 Operatorsymbole
45
4.1.8 import-Anweisungen
46
4.1.9 Zusammenfassung
47
4.1.10 Übungsaufgaben
47
4.2 Erste Schritte in Java
48
4.2.1 Grundstruktur eines Java-Programms
49
4.2.2 Ausgaben auf der Konsole
50
4.2.3 Eingaben von der Konsole
51
4.2.4 Schöner programmieren in Java
52
4.2.5 Zusammenfassung
53
4.2.6 Übungsaufgaben
53
4.3 Einfache Datentypen
54
4.3.1 Ganzzahlige Datentypen
54
4.3.2 Gleitkommatypen
56
4.3.3 Der Datentyp char für Zeichen
58
4.3.4 Zeichenketten
59
4.3.5 Der Datentyp boolean für Wahrheitswerte
59
4.3.6 Implizite und explizite Typumwandlungen
59
4.3.7 Zusammenfassung
61
4.3.8 Übungsaufgaben
61
4.4 Der Umgang mit einfachen Datentypen
62
4.4.1 Variablen
62
4.4.2 Operatoren und Ausdrücke
66
4.4.3 Allgemeine Ausdrücke
76
4.4.4 Ein- und Ausgabe
77
4.4.5 Zusammenfassung
80
4.4.6 Übungsaufgaben
80
4.5 Anweisungen und Ablaufsteuerung
83
4.5.1 Anweisungen
84
4.5.2 Blöcke und ihre Struktur
84
4.5.3 Entscheidungsanweisung
85
4.5.4 Wiederholungsanweisungen, Schleifen
88
4.5.5 Sprungbefehle und markierte Anweisungen
92
4.5.6 Zusammenfassung
94
4.5.7 Übungsaufgaben
94
5 Referenzdatentypen
104
5.1 Felder
106
5.1.1 Was sind Felder?
108
5.1.2 Deklaration, Erzeugung und Initialisierung von Feldern
109
5.1.3 Felder unbekannter Länge
112
5.1.4 Referenzen
114
5.1.5 Ein besserer Terminkalender
118
5.1.6 Mehrdimensionale Felder
120
5.1.7 Mehrdimensionale Felder unterschiedlicher Länge
123
5.1.8 Vorsicht, Falle: Kopieren von mehrdimensionalen Feldern
125
5.1.9 Vereinfachte for-Schleifen-Notation
126
5.1.10 Zusammenfassung
128
5.1.11 Übungsaufgaben
128
5.2 Klassen
131
5.2.1 Was sind Klassen?
132
5.2.2 Deklaration und Instantiierung von Klassen
133
5.2.3 Komponentenzugriff bei Objekten
134
5.2.4 Ein erstes Adressbuch
135
5.2.5 Klassen als Referenzdatentyp
137
5.2.6 Felder von Klassen
140
5.2.7 Vorsicht, Falle: Kopieren von geschachteltenReferenzdatentypen
143
5.2.8 Auslagern von Klassen
144
5.2.9 Zusammenfassung
146
5.2.10 Übungsaufgaben
146
6 Methoden, Unterprogramme
148
6.1 Methoden
149
6.1.1 Was sind Methoden?
149
6.1.2 Deklaration von Methoden
150
6.1.3 Parameterübergabe und Ergebnisrückgabe
151
6.1.4 Aufruf von Methoden
153
6.1.5 Überladen von Methoden
154
6.1.6 Variable Argument-Anzahl bei Methoden
156
6.1.7 Vorsicht, Falle: Referenzen als Parameter
157
6.1.8 Sichtbarkeit und Verdecken von Variablen
159
6.1.9 Zusammenfassung
161
6.1.10 Übungsaufgaben
161
6.2 Rekursiv definierte Methoden
162
6.2.1 Motivation
162
6.2.2 Gute und schlechte Beispiele für rekursive Methoden
164
6.2.3 Zusammenfassung
167
6.3 Die Methode main
167
6.3.1 Kommandozeilenparameter
168
6.3.2 Anwendung der vereinfachten for-Schleifen-Notation
169
6.3.3 Zusammenfassung
170
6.3.4 Übungsaufgaben
170
6.4 Methoden aus anderen Klassen aufrufen
172
6.4.1 Klassenmethoden
172
6.4.2 Die Methoden der Klasse java.lang.Math
173
6.4.3 Statischer Import
174
6.5 Methoden von Objekten aufrufen
175
6.5.1 Instanzmethoden
175
6.5.2 Die Methoden der Klasse java.lang.String
176
6.6 Übungsaufgaben
179
Teil II: Objektorientiertes Programmieren in Java
184
7 Die objektorientierte Philosophie
186
7.1 Die Welt, in der wir leben
186
7.2 Programmierparadigmen – Objektorientierung im Vergleich
187
7.3 Die vier Grundpfeiler objektorientierter Programmierung
189
7.3.1 Generalisierung
189
7.3.2 Vererbung
191
7.3.3 Kapselung
194
7.3.4 Polymorphismus
195
7.3.5 Weitere wichtige Grundbegriffe
196
7.4 Modellbildung – von der realen Welt in den Computer
197
7.4.1 Grafisches Modellieren mit UML
197
7.4.2 Entwurfsmuster
198
7.5 Zusammenfassung
199
7.6 Übungsaufgaben
200
8 Der grundlegende Umgang mit Klassen
202
8.1 Vom Referenzdatentyp zur Objektorientierung
202
8.2 Instanzmethoden
204
8.2.1 Zugriffsrechte
204
8.2.2 Was sind Instanzmethoden?
205
8.2.3 Instanzmethoden zur Validierung von Eingaben
208
8.2.4 Instanzmethoden als erweiterte Funktionalität
209
8.3 Statische Komponenten einer Klasse
210
8.3.1 Klassenvariablen und -methoden
211
8.3.2 Klassenkonstanten
213
8.4 Instantiierung und Initialisierung
214
8.4.1 Konstruktoren
214
8.4.2 Überladen von Konstruktoren
216
8.4.3 Der statische Initialisierer
218
8.4.4 Der Mechanismus der Objekterzeugung
221
8.5 Zusammenfassung
225
8.6 Übungsaufgaben
226
9 Vererbung und Polymorphismus – der fortgeschrittene Umgang mit Klassen in Java
246
9.1 Wozu braucht man Vererbung?
246
9.1.1 Aufgabenstellung
246
9.1.2 Analyse des Problems
247
9.1.3 Ein erster Ansatz
247
9.1.4 Eine Klasse für sich
248
9.1.5 Stärken der Vererbung
249
9.1.6 Vererbung verhindern durch final
252
9.1.7 Übungsaufgaben
253
9.2 Die super-Referenz
254
9.3 Überschreiben von Methoden und Variablen
256
9.3.1 Dynamisches Binden
256
9.3.2 Überschreiben von Methoden verhindern durch final
258
9.4 Die Klasse java.lang.Object
259
9.5 Übungsaufgaben
262
9.6 Abstrakte Klassen und Interfaces
262
9.7 Übungsaufgaben
266
9.8 Weiteres zum Thema Objektorientierung
271
9.8.1 Erstellen von Paketen
271
9.8.2 Zugriffsrechte
272
9.8.3 Innere Klassen
273
9.8.4 Anonyme Klassen
279
9.9 Zusammenfassung
281
9.10 Übungsaufgaben
281
10 Exceptions und Errors
292
10.1 Eine Einführung in Exceptions
293
10.1.1 Was ist eine Exception?
293
10.1.2 Übungsaufgaben
295
10.1.3 Abfangen von Exceptions
295
10.1.4 Ein Anwendungsbeispiel
296
10.1.5 Die RuntimeException
299
10.1.6 Übungsaufgaben
300
10.2 Exceptions für Fortgeschrittene
302
10.2.1 Definieren eigener Exceptions
302
10.2.2 Übungsaufgaben
304
10.2.3 Vererbung und Exceptions
304
10.2.4 Vorsicht, Falle!
308
10.2.5 Der finally-Block
310
10.2.6 Die Klassen Throwable und Error
314
10.2.7 Zusammenfassung
316
10.2.8 Übungsaufgaben
316
10.3 Assertions
317
10.3.1 Zusicherungen im Programmcode
317
10.3.2 Compilieren des Programmcodes
318
10.3.3 Ausführen des Programmcodes
319
10.3.4 Zusammenfassung
319
11 Fortgeschrittene objektorientierte Programmierung
320
11.1 Aufzählungstypen
321
11.1.1 Deklaration eines Aufzählungstyps
321
11.1.2 Instanzmethoden der enum-Objekte
322
11.1.3 Selbstdefinierte Instanzmethoden für enum-Objekte
322
11.1.4 Übungsaufgaben
324
11.2 Generische Datentypen
326
11.2.1 Generizität in alten Java-Versionen
326
11.2.2 Generizität ab Java 5.0
329
11.2.3 Einschränkungen der Typ-Parameter
331
11.2.4 Wildcards
333
11.2.5 Bounded Wildcards
334
11.2.6 Generische Methoden
336
11.2.7 Ausblick
338
11.2.8 Übungsaufgaben
338
11.3 Sortieren von Feldern und das Interface Comparable
343
12 Einige wichtige Hilfsklassen
346
12.1 Die Klasse StringBuffer
346
12.1.1 Arbeiten mit String-Objekten
346
12.1.2 Arbeiten mit StringBuffer-Objekten
349
12.1.3 Übungsaufgaben
351
12.2 Die Wrapper-Klassen (Hüll-Klassen)
352
12.2.1 Arbeiten mit ”eingepackten“ Daten
352
12.2.2 Aufbau der Wrapper-Klassen
353
12.2.3 Ein Anwendungsbeispiel
356
12.2.4 Automatische Typwandlung für die Wrapper-Klassen
357
12.2.5 Übungsaufgaben
359
12.3 Die Klassen BigInteger und BigDecimal
360
12.3.1 Arbeiten mit langen Ganzzahlen
360
12.3.2 Aufbau der Klasse BigInteger
362
12.3.4 Arbeiten mit langen Gleitkommazahlen
364
12.3.5 Aufbau der Klasse BigDecimal
367
12.3.6 Viele Stellen von Nullstellen gefällig?
370
12.3.7 Übungsaufgaben
371
12.4 Die Klasse DecimalFormat
372
12.4.1 Standard-Ausgaben in Java
372
12.4.2 Arbeiten mit Format-Objekten
373
12.4.3 Vereinfachte formatierte Ausgabe
375
12.4.4 Übungsaufgaben
376
12.5 Die Klassen Date und Calendar
376
12.5.1 Arbeiten mit ”Zeitpunkten&ldquo
377
12.5.2 Auf die Plätze, fertig, los!
378
12.5.3 Spezielle Calendar-Klassen
379
12.5.4 Noch einmal: Zeitmessung
381
12.5.5 Übungsaufgaben
383
12.6 Die Klassen SimpleDateFormat undDateFormat
383
12.6.1 Arbeiten mit Format-Objekten für Datum/Zeit-Angaben
383
12.6.2 Übungsaufgaben
388
12.7 Die Collection-Klassen
388
12.7.1 ”Sammlungen“ von Objekten – Der Aufbau des Interface Collection
388
12.7.2 ”Sammlungen“ durchgehen – Der Aufbau des Interface Iterator
391
12.7.3 Mengen
392
12.7.4 Listen
396
12.7.5 Übungsaufgaben
402
12.8 Die Klasse StringTokenizer
403
12.8.1 Übungsaufgaben
405
Teil III: Grafische Oberflächen in Java
406
13 Aufbau grafischer Oberflächen in Frames – von AWT nach Swing
408
13.1 Grundsätzliches zum Aufbau grafischer Oberflächen
408
13.2 Ein einfaches Beispiel mit dem AWT
410
13.3 Let’s swing now!
412
13.4 Etwas ”Fill-in“ gefällig?
414
13.5 Die AWT- und Swing-Klassenbibliothekim Überblick
416
13.6 Übungsaufgaben
418
14 Swing-Komponenten
420
14.1 Die abstrakte Klasse Component
420
14.2 Die Klasse Container
421
14.3 Die abstrakte Klasse JComponent
422
14.4 Layout-Manager, Farben und Schriften
423
14.4.1 Die Klasse Color
424
14.4.2 Die Klasse Font
426
14.4.3 Layout-Manager
427
14.5 Einige Grundkomponenten
433
14.5.1 Die Klasse JLabel
435
14.5.2 Die abstrakte Klasse AbstractButton
435
14.5.3 Die Klasse JButton
437
14.5.4 Die Klasse JToggleButton
438
14.5.5 Die Klasse JCheckBox
439
14.5.6 Die Klassen JRadioButton und ButtonGroup
440
14.5.7 Die Klasse JComboBox
442
14.5.8 Die Klasse JList
445
14.5.9 Die abstrakte Klasse JTextComponent
448
14.5.10 Die Klassen JTextField und JPasswordField
449
14.5.11 Die Klasse JTextArea
451
14.5.12 Die Klasse JScrollPane
453
14.5.13 Die Klasse JPanel
455
14.6 Spezielle Container, Menüs und Toolbars
457
14.6.1 Die Klasse JFrame
457
14.6.2 Die Klasse JWindow
458
14.6.3 Die Klasse JDialog
458
14.6.4 Die Klasse JMenuBar
462
14.6.5 Die Klasse JToolBar
464
14.7 Übungsaufgaben
467
15 Ereignisverarbeitung
470
15.1 Zwei einfache Beispiele
471
15.1.1 Zufällige Grautöne als Hintergrund
471
15.1.2 Ein interaktiver Bilderrahmen
474
15.2 Programmiervarianten für die Ereignisverarbeitung
478
15.2.1 Innere Klasse als Listener-Klasse
478
15.2.2 Anonyme Klasse als Listener-Klasse
478
15.2.3 Container-Klasse als Listener-Klasse
479
15.2.4 Separate Klasse als Listener-Klasse
480
15.3 Event-Klassen und -Quellen
482
15.4 Listener-Interfaces und Adapter-Klassen
486
15.5 Listener-Registrierung bei den Event-Quellen
491
15.6 Auf die Plätze, fertig, los!
495
15.7 Übungsaufgaben
499
16 Einige Ergänzungen zuSwing-Komponenten
504
16.1 Zeichnen in Swing-Komponenten
504
16.1.1 Grafische Darstellung von Komponenten
504
16.1.2 Das Grafik-Koordinatensystem
505
16.1.3 Die abstrakte Klasse Graphics
506
16.1.4 Ein einfaches Zeichenprogramm
509
16.1.5 Layoutveränderungen und der Einsatz von revalidate
511
16.2 Noch mehr Swing gefällig?
514
16.3 Übungsaufgaben
515
17 Applets
518
17.1 Erstellen und Ausführen von Applets
518
17.1.1 Vom Frame zum Applet am Beispiel
518
17.1.2 Applet in HTML-Datei einbetten
520
17.1.3 Applet über HTML-Datei ausführen
522
17.2 Die Methoden der Klasse JApplet
523
17.3 Zwei Beispiele
525
17.3.1 Auf die Plätze, fertig, los!
526
17.3.2 Punkte verbinden im Applet
529
17.4 Details zur HTML-Einbettung
530
17.4.1 Der Applet-Tag
530
17.4.2 Die Methode showDocument
533
17.5 Sicherheitseinschränkungen bei Applets
535
17.6 Übungsaufgaben
539
Teil IV: Threads, Datenströme undNetzwerk-Anwendungen
542
18 Parallele Programmierung mit Threads
544
18.1 Ein einfaches Beispiel
544
18.2 Threads in Java
546
18.2.1 Die Klasse Thread
547
18.2.2 Das Interface Runnable
551
18.2.3 Threads vorzeitig beenden
553
18.3 Wissenswertes über Threads
555
18.3.1 Lebenszyklus eines Threads
555
18.3.2 Thread-Scheduling
557
18.3.3 Dämon-Threads und Thread-Gruppen
557
18.4 Thread-Synchronisation und -Kommunikation
558
18.4.1 Das Leser/Schreiber-Problem
559
18.4.2 Das Erzeuger/Verbraucher-Problem
563
18.5 Threads in Frames und Applets
570
18.5.1 Auf die Plätze, fertig, los!
570
18.5.2 Spielereien
574
18.5.3 Swing-Komponenten sind nicht Thread-sicher
576
18.6 Übungsaufgaben
577
19 Ein- und Ausgabe über Streams
580
19.1 Grundsätzliches zu Streams in Java
581
19.2 Dateien und Verzeichnisse – Die Klasse File
581
19.3 Ein- und Ausgabe über Character-Streams
584
19.3.1 Einfache Reader- und Writer-Klassen
585
19.3.2 Gepufferte Reader- und Writer-Klassen
588
19.3.3 Die Klasse StreamTokenizer
590
19.3.4 Die Klasse PrintWriter
591
19.3.5 Die Klassen IOTools und Scanner
593
19.4 Ein- und Ausgabe über Byte-Streams
595
19.4.1 Einige InputStream- und OutputStream-Klassen
596
19.4.2 Die Serialisierung und Deserialisierung von Objekten
598
19.4.3 Die Klasse PrintStream
600
19.5 Einige abschließende Bemerkungen
601
19.6 Übungsaufgaben
602
20 Client/Server-Programmierung in Netzwerken
604
20.1 Wissenswertes über Netzwerk-Kommunikation
605
20.1.1 Protokolle
605
20.1.2 IP-Adressen
607
20.1.3 Ports und Sockets
608
20.2 Client/Server-Programmierung
609
20.2.1 Die Klassen ServerSocket und Socket
610
20.2.2 Ein einfacher Server
612
20.2.3 Ein einfacher Client
615
20.2.4 Ein Server für mehrere Clients
616
20.2.5 Ein Mehrzweck-Client
619
20.3 Wissenswertes über URLs
622
20.3.1 Client/Server-Kommunikation über URLs
622
20.3.2 Netzwerkverbindungen in Applets
623
20.4 Übungsaufgaben
624
Teil V: Ausblick und Anhang
628
21 Blick über den Tellerrand
630
21.1 Der Vorhang fällt
630
21.2 A fool with a tool . . .
631
21.3 Alles umsonst?
632
21.4 Und fachlich?
633
21.5 Zu guter Letzt . . .
635
Anhang A: Der Weg zum gutenProgrammierer . . .
636
A.1 Die goldenen Regeln der Code-Formatierung
637
A.2 Die goldenen Regeln der Namensgebung
640
A.3 Zusammenfassung
642
Anhang B: Die Klasse IOTools – Tastatureingaben in Java
644
B.1 Kurzbeschreibung
644
B.2 Anwendung der IOTools-Methoden
645
Anhang C: Der Umgang mit der API-Spezifikation
648
C.1 Der Aufbau der API-Spezifikation
648
C.2 Der praktische Einsatz der API-Spezifikation
649
Anhang D: Glossar
654
Literaturverzeichnis
668
Stichwortverzeichnis
672
Alle Preise verstehen sich inklusive der gesetzlichen MwSt.; Ersparnis im Vergleich zur Printversion



















