Ratz / Schulmeister-Zimolong / Seese | Grundkurs Programmieren in Java | E-Book | sack.de
E-Book

E-Book, Deutsch, 758 Seiten

Ratz / Schulmeister-Zimolong / Seese Grundkurs Programmieren in Java

E-Book, Deutsch, 758 Seiten

ISBN: 978-3-446-45384-5
Verlag: Carl Hanser
Format: PDF
Kopierschutz: Wasserzeichen (»Systemvoraussetzungen)



GRUNDKURS PROGRAMMIEREN IN JAVA //
- Setzt wirklich keine Programmierkenntnisse voraus
- Führt erfolgreich von den ersten Schritten bis hin zur Entwicklung von Anwendungen in Netzen
- Mit zahlreichen Übungsaufgaben und Beispielen
- Auf www.grundkurs-java.de Software und Tools, alle Beispielprogramme, Lösungen zu den Übungsaufgaben, zusätzliches Material und Übungen, Ergänzungen, Aktualisierungen und mehr


Mit diesem Lehrbuch können Sie sowohl Java als auch das Programmieren lernen. Es setzt keinerlei Vorkenntnisse aus den Bereichen Programmieren, Programmiersprachen und Informatik voraus. Alle Kapitel sind mit Übungsaufgaben ausgestattet, die Sie zum besseren Verständnis bearbeiten können.
Denn: Man lernt eine Sprache nur, wenn man sie auch spricht!


Auf rund 750 Seiten finden Sie hier eine umfassende und aktuelle Einführung. Von den Grundlagen der Programmierung und den elementaren Sprachelementen über die Objektorientierung bis hin zu Threads und Datenströmen und zur Entwicklung von Anwendungen in Netzen lernen Sie alles, was Sie für den erfolgreichen Einstieg in die Programmierung benötigen.


AUS DEM INHALT //
Einstieg in das Programmieren in Java/Objektorientiertes Programmieren in Java/Grafische Oberflächen
in Java/Threads, Datenströme und Netzwerkanwendungen/Abschluss, Ausblick und Anhang


EXTRA: E-Book inside. Systemvoraussetzungen für E-Book inside: Internet-Verbindung und Adobe-Reader oder Ebook-Reader bzw. Adobe Digital Editions.
Ratz / Schulmeister-Zimolong / Seese Grundkurs Programmieren in Java jetzt bestellen!

Weitere Infos & Material


1;Vorwort;18
2;Einleitung;20
2.1;Java – mehr als nur kalter Kaffee?;20
2.2;Java für Anfänger – das Konzept dieses Buches;21
2.3;Zusatzmaterial und Kontakt zu den Autoren;22
2.4;Verwendete Schreibweisen;23
3;I Einstieg in das Programmieren in Java;24
3.1;1 Einige Grundbegriffe aus der Welt des Programmierens;26
3.1.1;1.1 Computer, Software, Informatik und das Internet;26
3.1.2;1.2 Was heißt Programmieren?;28
3.1.3;1.3 Welche Werkzeuge brauchen wir?;31
3.2;2 Aller Anfang ist schwer;34
3.2.1;2.1 Mein erstes Programm;34
3.2.2;2.2 Formeln, Ausdrücke und Anweisungen;35
3.2.3;2.3 Zahlenbeispiele;36
3.2.4;2.4 Verwendung von Variablen;37
3.2.5;2.5 „Auf den Schirm!“;37
3.2.6;2.6 Das Programmgerüst;38
3.2.7;2.7 Eingeben, übersetzen und ausführen;40
3.2.8;2.8 Übungsaufgaben;41
3.3;3 Grundlagen der Programmierung in Java;42
3.3.1;3.1 Grundelemente eines Java-Programms;42
3.3.1.1;3.1.1 Kommentare;44
3.3.1.2;3.1.2 Bezeichner und Namen;46
3.3.1.3;3.1.3 Literale;47
3.3.1.4;3.1.4 Reservierte Wörter, Schlüsselwörter;48
3.3.1.5;3.1.5 Trennzeichen;48
3.3.1.6;3.1.6 Interpunktionszeichen;49
3.3.1.7;3.1.7 Operatorsymbole;50
3.3.1.8;3.1.8 import-Anweisungen;50
3.3.1.9;3.1.9 Zusammenfassung;51
3.3.1.10;3.1.10 Übungsaufgaben;52
3.3.2;3.2 Erste Schritte in Java;53
3.3.2.1;3.2.1 Grundstruktur eines Java-Programms;53
3.3.2.2;3.2.2 Ausgaben auf der Konsole;54
3.3.2.3;3.2.3 Eingaben von der Konsole;56
3.3.2.4;3.2.4 Schöner programmieren in Java;56
3.3.2.5;3.2.5 Zusammenfassung;57
3.3.2.6;3.2.6 Übungsaufgaben;58
3.3.3;3.3 Einfache Datentypen;58
3.3.3.1;3.3.1 Ganzzahlige Datentypen;58
3.3.3.1.1;3.3.1.1 Literalkonstanten in anderen Zahlensystemen;60
3.3.3.1.2;3.3.1.2 Unterstrich als Trennzeichen in Literalkonstanten;61
3.3.3.2;3.3.2 Gleitkommatypen;62
3.3.3.3;3.3.3 Der Datentyp char für Zeichen;64
3.3.3.4;3.3.4 Zeichenketten;64
3.3.3.5;3.3.5 Der Datentyp boolean für Wahrheitswerte;65
3.3.3.6;3.3.6 Implizite und explizite Typumwandlungen;65
3.3.3.7;3.3.7 Zusammenfassung;66
3.3.3.8;3.3.8 Übungsaufgaben;67
3.3.4;3.4 Der Umgang mit einfachen Datentypen;67
3.3.4.1;3.4.1 Variablen;68
3.3.4.2;3.4.2 Operatoren und Ausdrücke;71
3.3.4.2.1;3.4.2.1 Arithmetische Operatoren;73
3.3.4.2.2;3.4.2.2 Bitoperatoren;75
3.3.4.2.3;3.4.2.3 Zuweisungsoperator;77
3.3.4.2.4;3.4.2.4 Vergleichsoperatoren und logische Operatoren;77
3.3.4.2.5;3.4.2.5 Inkrement- und Dekrementoperatoren;80
3.3.4.2.6;3.4.2.6 Priorität und Auswertungsreihenfolge derOperatoren;80
3.3.4.3;3.4.3 Allgemeine Ausdrücke;82
3.3.4.4;3.4.4 Ein- und Ausgabe;82
3.3.4.4.1;3.4.4.1 Statischer Import der IOTools-Methoden;84
3.3.4.5;3.4.5 Zusammenfassung;85
3.3.4.6;3.4.6 Übungsaufgaben;85
3.3.5;3.5 Anweisungen und Ablaufsteuerung;89
3.3.5.1;3.5.1 Anweisungen;89
3.3.5.2;3.5.2 Blöcke und ihre Struktur;90
3.3.5.3;3.5.3 Entscheidungsanweisung;90
3.3.5.3.1;3.5.3.1 Die if-Anweisung;90
3.3.5.3.2;3.5.3.2 Die switch-Anweisung;92
3.3.5.4;3.5.4 Wiederholungsanweisungen, Schleifen;96
3.3.5.4.1;3.5.4.1 Die for-Anweisung;96
3.3.5.4.2;3.5.4.2 Vereinfachte for-Schleifen-Notation;97
3.3.5.4.3;3.5.4.3 Die while-Anweisung;98
3.3.5.4.4;3.5.4.4 Die do-Anweisung;98
3.3.5.4.5;3.5.4.5 Endlosschleifen;99
3.3.5.5;3.5.5 Sprungbefehle und markierte Anweisungen;100
3.3.5.6;3.5.6 Zusammenfassung;102
3.3.5.7;3.5.7 Übungsaufgaben;102
3.4;4 Referenzdatentypen;112
3.4.1;4.1 Felder;114
3.4.1.1;4.1.1 Was sind Felder?;116
3.4.1.2;4.1.2 Deklaration, Erzeugung und Initialisierung von Feldern;118
3.4.1.3;4.1.3 Felder unbekannter Länge;120
3.4.1.4;4.1.4 Referenzen;122
3.4.1.5;4.1.5 Ein besserer Terminkalender;127
3.4.1.6;4.1.6 Mehrdimensionale Felder;129
3.4.1.7;4.1.7 Mehrdimensionale Felder unterschiedlicher Länge;133
3.4.1.8;4.1.8 Vorsicht, Falle: Kopieren von mehrdimensionalen Feldern;135
3.4.1.9;4.1.9 Vereinfachte for-Schleifen-Notation;136
3.4.1.10;4.1.10 Zusammenfassung;137
3.4.1.11;4.1.11 Übungsaufgaben;138
3.4.2;4.2 Klassen;141
3.4.2.1;4.2.1 Willkommen in der ersten Klasse!;142
3.4.2.2;4.2.2 Komponentenzugriff bei Objekten;146
3.4.2.3;4.2.3 Ein erstes Adressbuch;146
3.4.2.4;4.2.4 Klassen als Referenzdatentyp;148
3.4.2.5;4.2.5 Felder von Klassen;151
3.4.2.6;4.2.6 Vorsicht, Falle: Kopieren von geschachtelten Referenzdatentypen;154
3.4.2.7;4.2.7 Zusammenfassung;155
3.4.2.8;4.2.8 Übungsaufgaben;155
3.5;5 Methoden, Unterprogramme;158
3.5.1;5.1 Methoden;159
3.5.1.1;5.1.1 Was sind Methoden?;159
3.5.1.2;5.1.2 Deklaration von Methoden;160
3.5.1.3;5.1.3 Parameterübergabe und Ergebnisrückgabe;161
3.5.1.4;5.1.4 Aufruf von Methoden;162
3.5.1.5;5.1.5 Überladen von Methoden;164
3.5.1.6;5.1.6 Variable Argumentanzahl bei Methoden;165
3.5.1.7;5.1.7 Vorsicht, Falle: Referenzen als Parameter;166
3.5.1.8;5.1.8 Sichtbarkeit und Verdecken von Variablen;169
3.5.1.9;5.1.9 Zusammenfassung;170
3.5.1.10;5.1.10 Übungsaufgaben;171
3.5.2;5.2 Rekursiv definierte Methoden;172
3.5.2.1;5.2.1 Motivation;172
3.5.2.2;5.2.2 Gute und schlechte Beispiele für rekursive Methoden;174
3.5.2.3;5.2.3 Zusammenfassung;177
3.5.3;5.3 Die Methode main;177
3.5.3.1;5.3.1 Kommandozeilenparameter;177
3.5.3.2;5.3.2 Anwendung der vereinfachten for-Schleifen-Notation;179
3.5.3.3;5.3.3 Zusammenfassung;179
3.5.3.4;5.3.4 Übungsaufgaben;180
3.5.4;5.4 Methoden aus anderen Klassen aufrufen;181
3.5.4.1;5.4.1 Klassenmethoden;182
3.5.4.2;5.4.2 Die Methoden der Klasse java.lang.Math;183
3.5.4.3;5.4.3 Statischer Import;184
3.5.5;5.5 Methoden von Objekten aufrufen;185
3.5.5.1;5.5.1 Instanzmethoden;185
3.5.5.2;5.5.2 Die Methoden der Klasse java.lang.String;186
3.5.6;5.6 Übungsaufgaben;188
4;II Objektorientiertes Programmieren in Java;194
4.1;6 Die objektorientierte Philosophie;196
4.1.1;6.1 Die Welt, in der wir leben;196
4.1.2;6.2 Programmierparadigmen – Objektorientierung im Vergleich;197
4.1.3;6.3 Die vier Grundpfeiler objektorientierter Programmierung;199
4.1.3.1;6.3.1 Generalisierung;199
4.1.3.2;6.3.2 Vererbung;201
4.1.3.3;6.3.3 Kapselung;204
4.1.3.4;6.3.4 Polymorphie;205
4.1.3.5;6.3.5 Weitere wichtige Grundbegriffe;206
4.1.4;6.4 Modellbildung – von der realen Welt in den Computer;207
4.1.4.1;6.4.1 Grafisches Modellieren mit UML;207
4.1.4.2;6.4.2 Entwurfsmuster;208
4.1.5;6.5 Zusammenfassung;209
4.1.6;6.6 Übungsaufgaben;210
4.2;7 Der grundlegende Umgang mit Klassen;212
4.2.1;7.1 Vom Referenzdatentyp zur Objektorientierung;212
4.2.2;7.2 Instanzmethoden;214
4.2.2.1;7.2.1 Zugriffsrechte;214
4.2.2.2;7.2.2 Was sind Instanzmethoden?;215
4.2.2.3;7.2.3 Instanzmethoden zur Validierung von Eingaben;218
4.2.2.4;7.2.4 Instanzmethoden als erweiterte Funktionalität;219
4.2.3;7.3 Statische Komponenten einer Klasse;220
4.2.3.1;7.3.1 Klassenvariablen und -methoden;221
4.2.3.2;7.3.2 Klassenkonstanten;223
4.2.4;7.4 Instanziierung und Initialisierung;226
4.2.4.1;7.4.1 Konstruktoren;226
4.2.4.2;7.4.2 Überladen von Konstruktoren;228
4.2.4.3;7.4.3 Der statische Initialisierer;230
4.2.4.4;7.4.4 Der Mechanismus der Objekterzeugung;232
4.2.5;7.5 Zusammenfassung;237
4.2.6;7.6 Übungsaufgaben;238
4.3;8 Vererbung und Polymorphie;258
4.3.1;8.1 Wozu braucht man Vererbung?;258
4.3.1.1;8.1.1 Aufgabenstellung;258
4.3.1.2;8.1.2 Analyse des Problems;259
4.3.1.3;8.1.3 Ein erster Ansatz;259
4.3.1.4;8.1.4 Eine Klasse für sich;260
4.3.1.5;8.1.5 Stärken der Vererbung;261
4.3.1.6;8.1.6 Vererbung verhindern durch final;264
4.3.1.7;8.1.7 Übungsaufgaben;265
4.3.2;8.2 Die super-Referenz;266
4.3.3;8.3 Überschreiben von Methoden und Variablen;268
4.3.3.1;8.3.1 Dynamisches Binden;268
4.3.3.2;8.3.2 Überschreiben von Methoden verhindern durch final;270
4.3.4;8.4 Die Klasse java.lang.Object;270
4.3.5;8.5 Übungsaufgaben;274
4.3.6;8.6 Abstrakte Klassen und Interfaces;274
4.3.6.1;8.6.1 Einsatzszenarien am Beispiel;274
4.3.6.2;8.6.2 Abstrakte Klassen im Detail;278
4.3.6.3;8.6.3 Interfaces im Detail;281
4.3.7;8.7 Interfaces mit Default-Methoden und statischen Methoden;284
4.3.7.1;8.7.1 Deklaration von Default-Methoden;284
4.3.7.2;8.7.2 Deklaration von statischen Methoden;285
4.3.7.3;8.7.3 Auflösung von Namensgleichheiten bei Default-Methoden;286
4.3.7.4;8.7.4 Interfaces und abstrakte Klassen im Vergleich;288
4.3.8;8.8 Weiteres zum Thema Objektorientierung;288
4.3.8.1;8.8.1 Erstellen von Paketen;288
4.3.8.2;8.8.2 Zugriffsrechte;290
4.3.8.3;8.8.3 Innere Klassen;291
4.3.8.4;8.8.4 Anonyme Klassen;297
4.3.9;8.9 Zusammenfassung;300
4.3.10;8.10 Übungsaufgaben;300
4.4;9 Exceptions und Errors;312
4.4.1;9.1 Eine Einführung in Exceptions;313
4.4.1.1;9.1.1 Was ist eine Exception?;313
4.4.1.2;9.1.2 Übungsaufgaben;315
4.4.1.3;9.1.3 Abfangen von Exceptions;315
4.4.1.4;9.1.4 Ein Anwendungsbeispiel;316
4.4.1.5;9.1.5 Die RuntimeException;319
4.4.1.6;9.1.6 Übungsaufgaben;320
4.4.2;9.2 Exceptions für Fortgeschrittene;322
4.4.2.1;9.2.1 Definieren eigener Exceptions;322
4.4.2.2;9.2.2 Übungsaufgaben;324
4.4.2.3;9.2.3 Vererbung und Exceptions;324
4.4.2.4;9.2.4 Vorsicht, Falle!;328
4.4.2.5;9.2.5 Der finally-Block;330
4.4.2.6;9.2.6 Die Klassen Throwable und Error;334
4.4.2.7;9.2.7 Zusammenfassung;336
4.4.2.8;9.2.8 Übungsaufgaben;336
4.4.3;9.3 Assertions;337
4.4.3.1;9.3.1 Zusicherungen im Programmcode;337
4.4.3.2;9.3.2 Ausführen des Programmcodes;338
4.4.3.3;9.3.3 Zusammenfassung;339
4.4.4;9.4 Mehrere Ausnahmetypen in einem catch-Block;339
4.4.5;9.5 Ausblick: try-Block mit Ressourcen;341
4.5;10 Fortgeschrittene objektorientierte Programmierung;342
4.5.1;10.1 Aufzählungstypen;342
4.5.1.1;10.1.1 Deklaration eines Aufzählungstyps;343
4.5.1.2;10.1.2 Instanzmethoden der enum-Objekte;343
4.5.1.3;10.1.3 Selbstdefinierte Instanzmethoden für enum-Objekte;344
4.5.1.4;10.1.4 Übungsaufgaben;345
4.5.2;10.2 Generische Datentypen;347
4.5.2.1;10.2.1 Herkömmliche Generizität;348
4.5.2.2;10.2.2 Generizität durch Typ-Parameter;350
4.5.2.3;10.2.3 Einschränkungen der Typ-Parameter;352
4.5.2.4;10.2.4 Wildcards;354
4.5.2.5;10.2.5 Bounded Wildcards;355
4.5.2.6;10.2.6 Generische Methoden;357
4.5.2.7;10.2.7 Verkürzte Notation bei generischen Datentypen;359
4.5.2.8;10.2.8 Ausblick;362
4.5.2.9;10.2.9 Übungsaufgaben;362
4.5.3;10.3 Sortieren von Feldern und das Interface Comparable;367
4.6;11 Einige wichtige Hilfsklassen;370
4.6.1;11.1 Die Klasse StringBuffer;370
4.6.1.1;11.1.1 Arbeiten mit String-Objekten;370
4.6.1.2;11.1.2 Arbeiten mit StringBuffer-Objekten;373
4.6.1.3;11.1.3 Übungsaufgaben;375
4.6.2;11.2 Die Wrapper-Klassen (Hüll-Klassen);376
4.6.2.1;11.2.1 Arbeiten mit „eingepackten“ Daten;376
4.6.2.2;11.2.2 Aufbau der Wrapper-Klassen;378
4.6.2.3;11.2.3 Ein Anwendungsbeispiel;380
4.6.2.4;11.2.4 Automatische Typwandlung für die Wrapper-Klassen;381
4.6.2.5;11.2.5 Übungsaufgaben;383
4.6.3;11.3 Die Klassen BigInteger und BigDecimal;383
4.6.3.1;11.3.1 Arbeiten mit langen Ganzzahlen;384
4.6.3.2;11.3.2 Aufbau der Klasse BigInteger;385
4.6.3.3;11.3.3 Übungsaufgaben;387
4.6.3.4;11.3.4 Arbeiten mit langen Gleitkommazahlen;388
4.6.3.5;11.3.5 Aufbau der Klasse BigDecimal;391
4.6.3.6;11.3.6 Viele Stellen von Nullstellen gefällig?;393
4.6.3.7;11.3.7 Übungsaufgaben;395
4.6.4;11.4 Die Klasse DecimalFormat;395
4.6.4.1;11.4.1 Standardausgaben in Java;395
4.6.4.2;11.4.2 Arbeiten mit Format-Objekten;396
4.6.4.3;11.4.3 Vereinfachte formatierte Ausgabe;399
4.6.4.4;11.4.4 Übungsaufgaben;399
4.6.5;11.5 Die Klassen Date und Calendar;400
4.6.5.1;11.5.1 Arbeiten mit „Zeitpunkten“;400
4.6.5.2;11.5.2 Auf die Plätze, fertig, los!;401
4.6.5.3;11.5.3 Spezielle Calendar-Klassen;402
4.6.5.4;11.5.4 Noch einmal: Zeitmessung;405
4.6.5.5;11.5.5 Übungsaufgaben;406
4.6.6;11.6 Die Klassen SimpleDateFormat und DateFormat;406
4.6.6.1;11.6.1 Arbeiten mit Format-Objekten für Datum/Zeit-Angaben;406
4.6.6.2;11.6.2 Übungsaufgaben;411
4.6.7;11.7 Die Collection-Klassen;411
4.6.7.1;11.7.1 „Sammlungen“ von Objekten – der Aufbau des Interface Collection;412
4.6.7.2;11.7.2 „Sammlungen“ durchgehen – der Aufbau des Interface Iterator;414
4.6.7.3;11.7.3 Mengen;415
4.6.7.3.1;11.7.3.1 Das Interface Set;415
4.6.7.3.2;11.7.3.2 Die Klasse HashSet;416
4.6.7.3.3;11.7.3.3 Das Interface SortedSet;417
4.6.7.3.4;11.7.3.4 Die Klasse TreeSet;418
4.6.7.4;11.7.4 Listen;420
4.6.7.4.1;11.7.4.1 Das Interface List;420
4.6.7.4.2;11.7.4.2 Die Klassen ArrayList und LinkedList;421
4.6.7.4.3;11.7.4.3 Suchen und Sortieren – die KlassenCollections und Arrays;423
4.6.7.5;11.7.5 Verkürzte Notation bei Collection-Datentypen;425
4.6.7.6;11.7.6 Übungsaufgaben;427
4.6.8;11.8 Die Klasse StringTokenizer;427
4.6.8.1;11.8.1 Übungsaufgaben;430
5;III Grafische Oberflächen in Java;432
5.1;12 Aufbau grafischer Oberflächen in Frames – von AWT nach Swing;434
5.1.1;12.1 Grundsätzliches zum Aufbau grafischer Oberflächen;434
5.1.2;12.2 Ein einfaches Beispiel mit dem AWT;435
5.1.3;12.3 Let's swing now!;438
5.1.4;12.4 Etwas „Fill-in“ gefällig?;440
5.1.5;12.5 Die AWT- und Swing-Klassenbibliothek im Überblick;442
5.1.6;12.6 Übungsaufgaben;444
5.2;13 Swing-Komponenten;446
5.2.1;13.1 Die abstrakte Klasse Component;446
5.2.2;13.2 Die Klasse Container;447
5.2.3;13.3 Die abstrakte Klasse JComponent;448
5.2.4;13.4 Layout-Manager, Farben und Schriften;449
5.2.4.1;13.4.1 Die Klasse Color;450
5.2.4.2;13.4.2 Die Klasse Font;452
5.2.4.3;13.4.3 Layout-Manager;453
5.2.4.3.1;13.4.3.1 Die Klasse FlowLayout;454
5.2.4.3.2;13.4.3.2 Die Klasse BorderLayout;456
5.2.4.3.3;13.4.3.3 Die Klasse GridLayout;457
5.2.5;13.5 Einige Grundkomponenten;459
5.2.5.1;13.5.1 Die Klasse JLabel;460
5.2.5.2;13.5.2 Die abstrakte Klasse AbstractButton;462
5.2.5.3;13.5.3 Die Klasse JButton;462
5.2.5.4;13.5.4 Die Klasse JToggleButton;464
5.2.5.5;13.5.5 Die Klasse JCheckBox;465
5.2.5.6;13.5.6 Die Klassen JRadioButton und ButtonGroup;466
5.2.5.7;13.5.7 Die Klasse JComboBox;468
5.2.5.8;13.5.8 Die Klasse JList;471
5.2.5.9;13.5.9 Die abstrakte Klasse JTextComponent;474
5.2.5.10;13.5.10 Die Klassen JTextField und JPasswordField;474
5.2.5.11;13.5.11 Die Klasse JTextArea;477
5.2.5.12;13.5.12 Die Klasse JScrollPane;479
5.2.5.13;13.5.13 Die Klasse JPanel;481
5.2.6;13.6 Spezielle Container, Menüs und Toolbars;482
5.2.6.1;13.6.1 Die Klasse JFrame;483
5.2.6.2;13.6.2 Die Klasse JWindow;484
5.2.6.3;13.6.3 Die Klasse JDialog;484
5.2.6.4;13.6.4 Die Klasse JMenuBar;487
5.2.6.5;13.6.5 Die Klasse JToolBar;490
5.2.7;13.7 Übungsaufgaben;493
5.3;14 Ereignisverarbeitung;496
5.3.1;14.1 Zwei einfache Beispiele;497
5.3.1.1;14.1.1 Zufällige Grautöne als Hintergrund;497
5.3.1.2;14.1.2 Ein interaktiver Bilderrahmen;500
5.3.2;14.2 Programmiervarianten für die Ereignisverarbeitung;504
5.3.2.1;14.2.1 Innere Klasse als Listener-Klasse;504
5.3.2.2;14.2.2 Anonyme Klasse als Listener-Klasse;504
5.3.2.3;14.2.3 Container-Klasse als Listener-Klasse;505
5.3.2.4;14.2.4 Separate Klasse als Listener-Klasse;506
5.3.3;14.3 Event-Klassen und -Quellen;508
5.3.4;14.4 Listener-Interfaces und Adapter-Klassen;511
5.3.5;14.5 Listener-Registrierung bei den Event-Quellen;517
5.3.6;14.6 Auf die Plätze, fertig, los!;520
5.3.7;14.7 Übungsaufgaben;525
5.4;15 Einige Ergänzungen zu Swing-Komponenten;530
5.4.1;15.1 Zeichnen in Swing-Komponenten;530
5.4.1.1;15.1.1 Grafische Darstellung von Komponenten;530
5.4.1.2;15.1.2 Das Grafikkoordinatensystem;531
5.4.1.3;15.1.3 Die abstrakte Klasse Graphics;532
5.4.1.4;15.1.4 Ein einfaches Zeichenprogramm;535
5.4.1.5;15.1.5 Layoutveränderungen und der Einsatz von revalidate;537
5.4.2;15.2 Noch mehr Swing gefällig?;539
5.4.3;15.3 Übungsaufgaben;541
6;IV Threads, Datenströme und Netzwerkanwendungen;544
6.1;16 Parallele Programmierung mit Threads;546
6.1.1;16.1 Ein einfaches Beispiel;546
6.1.2;16.2 Threads in Java;548
6.1.2.1;16.2.1 Die Klasse Thread;549
6.1.2.2;16.2.2 Das Interface Runnable;553
6.1.2.3;16.2.3 Threads vorzeitig beenden;555
6.1.3;16.3 Wissenswertes über Threads;557
6.1.3.1;16.3.1 Lebenszyklus eines Threads;557
6.1.3.2;16.3.2 Thread-Scheduling;559
6.1.3.3;16.3.3 Dämon-Threads und Thread-Gruppen;559
6.1.4;16.4 Thread-Synchronisation und -Kommunikation;560
6.1.4.1;16.4.1 Das Leser/Schreiber-Problem;561
6.1.4.2;16.4.2 Das Erzeuger/Verbraucher-Problem;564
6.1.5;16.5 Threads in Swing-Anwendungen;572
6.1.5.1;16.5.1 Auf die Plätze, fertig, los!;572
6.1.5.2;16.5.2 Spielereien;575
6.1.5.3;16.5.3 Swing-Komponenten sind nicht Thread-sicher;578
6.1.6;16.6 Übungsaufgaben;579
6.2;17 Ein- und Ausgabe über I/O-Streams;582
6.2.1;17.1 Grundsätzliches zu I/O-Streams in Java;583
6.2.2;17.2 Dateien und Verzeichnisse – die Klasse File;583
6.2.3;17.3 Ein- und Ausgabe über Character-Streams;586
6.2.3.1;17.3.1 Einfache Reader- und Writer-Klassen;587
6.2.3.2;17.3.2 Gepufferte Reader- und Writer-Klassen;590
6.2.3.3;17.3.3 Die Klasse StreamTokenizer;592
6.2.3.4;17.3.4 Die Klasse PrintWriter;593
6.2.3.5;17.3.5 Die Klassen IOTools und Scanner;595
6.2.3.5.1;17.3.5.1 Was machen eigentlich die IOTools?;595
6.2.3.5.2;17.3.5.2 Konsoleneingabe über ein Scanner-Objekt;596
6.2.4;17.4 Ein- und Ausgabe über Byte-Streams;597
6.2.4.1;17.4.1 Einige InputStream- und OutputStream-Klassen;598
6.2.4.2;17.4.2 Die Serialisierung und Deserialisierung von Objekten;600
6.2.4.3;17.4.3 Die Klasse PrintStream;602
6.2.5;17.5 Streams im try-Block mit Ressourcen;603
6.2.6;17.6 Einige abschließende Bemerkungen;605
6.2.6.1;17.6.1 Das Paket java.nio;606
6.2.6.2;17.6.2 Das Paket java.nio.file;607
6.2.6.2.1;17.6.2.1 Das Interface Path und die Klasse Paths;607
6.2.6.2.2;17.6.2.2 Die Klasse Files;608
6.2.7;17.7 Übungsaufgaben;611
6.3;18 Client/Server-Programmierung in Netzwerken;614
6.3.1;18.1 Wissenswertes über Netzwerkkommunikation;615
6.3.1.1;18.1.1 Protokolle;615
6.3.1.2;18.1.2 IP-Adressen;617
6.3.1.3;18.1.3 Ports und Sockets;618
6.3.2;18.2 Client/Server-Programmierung;619
6.3.2.1;18.2.1 Die Klassen ServerSocket und Socket;620
6.3.2.2;18.2.2 Ein einfacher Server;622
6.3.2.3;18.2.3 Ein einfacher Client;625
6.3.2.4;18.2.4 Ein Server für mehrere Clients;626
6.3.2.5;18.2.5 Ein Mehrzweck-Client;629
6.3.2.6;18.2.6 Client/Server-Kommunikation über URLs;632
6.3.3;18.3 Übungsaufgaben;633
6.4;19 Lambda-Ausdrücke, Streams und Pipeline-Operationen;638
6.4.1;19.1 Lambda-Ausdrücke;638
6.4.1.1;19.1.1 Lambda-Ausdrücke in Aktion – zwei Beispiele;639
6.4.1.2;19.1.2 Lambda-Ausdrücke im Detail;642
6.4.1.3;19.1.3 Lambda-Ausdrücke und funktionale Interfaces;644
6.4.1.4;19.1.4 Vordefinierte funktionale Interfaces und Anwendungen auf Datenstrukturen;646
6.4.1.5;19.1.5 Methodenreferenzen als Lambda-Ausdrücke;650
6.4.1.6;19.1.6 Zugriff auf Variablen aus der Umgebung innerhalb eines Lambda-Ausdrucks;653
6.4.1.7;19.1.7 Übungsaufgaben;654
6.4.2;19.2 Streams und Pipeline-Operationen;655
6.4.2.1;19.2.1 Streams in Aktion;656
6.4.2.2;19.2.2 Streams und Pipelines im Detail;658
6.4.2.3;19.2.3 Erzeugen von endlichen und unendlichen Streams;659
6.4.2.4;19.2.4 Die Stream-API;662
6.4.2.5;19.2.5 Übungsaufgaben;665
7;V Abschluss, Ausblick und Anhang;668
7.1;20 Blick über den Tellerrand;670
7.1.1;20.1 JShell für kleine Skripte;671
7.1.2;20.2 Das Java-Modulsystem;675
7.1.3;20.3 Bühne frei für JavaFX;682
7.1.4;20.4 Beginn einer neuen Zeitrechnung;691
7.1.5;20.5 Webprogrammierung und verteilte Systeme;693
7.1.6;20.6 Zu guter Letzt;696
7.2;A Der Weg zum guten Programmierer …;698
7.2.1;A.1 Die goldenen Regeln der Code-Formatierung;699
7.2.2;A.2 Die goldenen Regeln der Namensgebung;702
7.2.3;A.3 Zusammenfassung;704
7.3;B Ohne Werkzeug geht es nicht;706
7.3.1;B.1 Die API-Dokumentation zum Nachschlagen;707
7.3.2;B.2 Die IDE, dein Freund und Helfer;709
7.3.3;B.3 Alle Versionen stets im Griff;711
7.3.4;B.4 Testen bitte nicht vergessen;713
7.3.5;B.5 Der Automat kann es besser;715
7.4;C Die Klasse IOTools – Tastatureingaben in Java;718
7.4.1;C.1 Kurzbeschreibung;718
7.4.2;C.2 Anwendung der IOTools-Methoden;719
7.5;Glossar;722
7.6;Stichwortverzeichnis;742


Prof. Dr. Dietmar Ratz ist Studiengangsleiter Wirtschaftsinformatik an der
Dualen Hochschule Baden-Württemberg (DHBW) Karlsruhe und lehrt als apl.
Professor auch am Karlsruher Institut für Technologie (KIT).


Dipl.-Wirtsch.-Inf. (DH) Dennis Schulmeister-Zimolong arbeitet als Produktmanager
bei der cormeta ag in Ettlingen und lehrt als externer Dozent an der Dualen
Hochschule Baden-Württemberg (DHBW) Karlsruhe.


Prof. Dr. Detlef Seese ist ehemaliger Professor für Angewandte Informatik
am Institut für Angewandte Informatik und Formale Beschreibungsverfahren
(AIFB) des Karlsruher Instituts für Technologie (KIT).


Dipl.-Wi.-Ing. Jan Wiesenberger ist geschäftsführender Vorstand des FZI Forschungszentrum Informatik in Karlsruhe und Hauptgesellschafter des IT-Dienstleisters m+ps.


Ihre Fragen, Wünsche oder Anmerkungen
Vorname*
Nachname*
Ihre E-Mail-Adresse*
Kundennr.
Ihre Nachricht*
Lediglich mit * gekennzeichnete Felder sind Pflichtfelder.
Wenn Sie die im Kontaktformular eingegebenen Daten durch Klick auf den nachfolgenden Button übersenden, erklären Sie sich damit einverstanden, dass wir Ihr Angaben für die Beantwortung Ihrer Anfrage verwenden. Selbstverständlich werden Ihre Daten vertraulich behandelt und nicht an Dritte weitergegeben. Sie können der Verwendung Ihrer Daten jederzeit widersprechen. Das Datenhandling bei Sack Fachmedien erklären wir Ihnen in unserer Datenschutzerklärung.