Veränderungen

in der 3. Auflage gegenüber der 2. Auflage

Farbkodierung:

Kapitelnr
3. Auflage

Kapitelnr
2. Auflage

Titel
2. Auflage 3. Auflage

Seite
3. Auflage

 

 

Inhaltsverzeichnis

V

 

 

Vorwort

XIII

 

 

Danksagungen

XIV

 

 

Die Lehrbuchbibliothek

XIV

1.

1.

Informelle Einführung

1

1.1.

1.1.

Die Dualität des Programmierens

1

1.1.1.

1.1.1.

Geschwindigkeit

1

1.1.2.

1.1.2.

Datenmenge

2

1.1.3.

1.1.3.

Die Komplexität

2

1.1.4.

1.1.4.

Kapselung

3

1.1.5.

 

Programmierparadigma

4

1.1.6.

 

Programmiersprache

6

1.2.

1.2.

Das Schichtenmodell

7

1.3.

1.3.

Werkzeuge des Programmierens

9

1.3.1.

1.3.1.

Der Editor

11

1.3.2.

1.3.2.

Der Übersetzer

11

1.3.3.

1.3.3.

Der (statische) Binder

12

1.3.4.

 

Dynamisches Binden

12

1.3.5.

1.3.4.

Der Ausführer

13

1.3.6.

1.3.5.

Das Laufzeitsystem

13

1.3.7.

1.3.6.

Der Bibliothekar

14

1.3.8.

 

Dokumentationswerkzeuge

14

1.3.9.

1.3.7.

Testwerkzeuge

15

1.3.10.

1.3.8.

Generatoren

15

1.3.11.

1.3.9.

Die Entwicklungsumgebung

16

1.4.

 

Java-Werkzeuge

16

1.5.

1.4.

Fehlerarten

17

1.6.

1.5.

Struktur einer Programmiersprache

17

1.6.1.

1.5.1.

Sprachdefinition

18

1.6.2.

1.5.2.

Zeichensatz

18

1.6.3.

1.5.3.

Syntax

18

1.6.4.

1.5.4.

Semantik

20

2.

2.

Klassen und Objekte

21

2.1.

2.1.

Die leere Klasse

21

2.2.

2.2.

Erweiterung von Klassen

23

2.2.1.

2.2.1.

Erweiterung eigener Klassen

23

2.2.2.

2.2.2.

Klassen in Paketen

24

2.2.3.

2.2.3.

Erben von Methoden

25

2.2.4.

2.2.4.

Das Hallo-Programm

25

2.2.5.

2.2.5.

Mehrfache Erweiterung

26

2.2.6.

2.2.6.

Überschreiben von Methoden

26

2.2.7.

2.2.7.

Aufruf von geerbten Methoden

28

2.2.8.

2.2.8.

Hinzufügen von Methoden

29

2.2.9.

2.2.9.

Interne private Methoden

30

2.2.10.

2.2.10.

Parameter

31

2.2.11.

2.2.11.

Mehrere Parameter

32

2.2.12.

2.2.12.

Methodenaufrufe aus Klassen

33

2.2.13.

2.2.13.

Import

33

2.2.14.

2.2.14.

Klassenspezifikationen

34

2.2.15.

 

Lesbarkeit von Programmen

36

2.3.

2.3.

Datenbehälter

37

2.3.1.

2.3.1.

Statische Datenbehälter

37

2.3.2.

2.3.2.

Operationen

38

2.4.

2.4.

Algorithmen

39

2.4.1.

2.4.1.

Elementare Algorithmen

39

2.4.2.

2.4.2.

Programm- und Datenbehälterklassen

40

2.4.3.

2.4.3.

Sequenzen

41

2.4.4.

2.4.4.

Statisches und dynamisches Ende

41

2.5.

2.5.

Ausnahmen

42

2.5.1.

2.5.1.

Ausnahmebehandlung

42

2.5.2.

2.5.2.

Reihenfolgebedingungen

43

2.5.3.

2.5.3.

Ausnahmeverteiler

44

2.5.4.

2.5.4.

Ausnahmespezifikation

44

2.5.5.

2.5.5.

Geprüfte und ungeprüfte Ausnahmen

44

2.5.6.

2.5.6.

Weiterreichen von Ausnahmen

46

2.6.

2.6.

Dynamische Objekte

48

2.6.1.

2.6.1.

Ausprägung einer Klasse

48

2.6.2.

2.6.2.

Referenzen und Objekte

48

2.6.3.

2.6.3.

Erzeugung von Objekten

49

2.6.4.

2.6.4.

Zuweisung

51

2.6.5.

2.6.5.

Typprüfung

52

2.6.6.

2.6.6.

Lokale und globale Referenzen

52

3.

3.

Strukturierung von Klassen

55

3.1.

3.1.

Prozeduren

55

3.1.1.

3.1.1.

Aufruf von Prozeduren

55

3.1.2.

3.1.2.

Schachtelung von Algorithmen

56

3.1.3.

3.1.3.

Steuerfluss

57

3.1.4.

3.1.4.

Parametrisierte Prozeduren

59

3.1.5.

3.1.5.

Globale Referenz oder Parameter

61

3.1.6.

3.1.6.

Wert- und Referenzübergabe

62

3.1.7.

3.1.7.

Parametrisierte Methoden Operationen

63

3.2.

3.2.

Pakete

64

3.2.1.

3.2.1.

Spezifikation eines Pakets

64

3.2.2.

3.2.2.

Implementierung eines Pakets

66

3.3.

3.3.

Schachtelungen

67

3.3.1.

3.3.1.

Sichtbarkeit und Lebensdauer

67

3.3.2.

3.3.2.

Statische Schachtelung von Klassen

70

3.3.3.

3.3.3.

Blöcke

71

3.3.4.

3.3.4.

Geschützte Blöcke

72

3.3.5

 

Benutzung von Blöcken

73

3.3.6.

3.3.5.

Der Stapel

74

3.3.7.

3.3.6.

Rekursive Aufrufe

75

3.3.8.

3.3.7.

Abbruch einer Rekursion

75

3.3.9.

3.3.8.

Wirkungsmechanismus der Ausnahmen

77

3.4.

3.4.

Verwendung von Standardpaketen

77

3.4.1.

3.4.1.

Geschachtelte Pakete

77

3.4.2.

3.4.2.

Verwendung von Standardpaketen

78

3.4.3.

3.4.3.

Das Standard-Hallo-Applets

78

3.4.4.

3.4.4.

Hauptprogramme Die Standard-Hallo-Anwendung

80

3.4.5.

3.4.5.

Implizite Erweiterung

81

3.4.6.

3.4.6.

Impliziter Import

81

4.

4.

Implementierung von Datenbehältern

83

4.1.

4.1.

Klassenkomponenten

83

4.2.

4.2.

Implementierung von Ausnahmen

85

4.2.1.

4.2.1.

Verbreitung von Ausnahmen

85

4.2.2.

4.2.2.

Auslösen von Ausnahmen

85

4.2.3.

4.2.3.

Klasseninitialisator

86

4.3.

4.3.

Objektkomponenten

86

4.3.1.

4.3.1.

Implementierung von dynamischen Datenbehältern

87

4.3.2.

4.3.2.

Klassen- und Objektkomponenten

88

 

4.3.3.

Ledige Objekte

 

4.4.

4.4.

Schnittstellen

89

4.4.1.

4.4.1.

Kopieren

90

4.4.2.

4.4.2.

Erwerben Einkaufen

91

4.4.3.

4.4.3.

Erben

91

4.4.4.

4.4.4.

Implementierung von Schnittstellen

92

4.4.5.

 

Erweiterung von Schnittstellen

93

4.5.

4.5.

Konstruktoren und Destruktoren

94

4.5.1.

4.5.1.

Konstruktoren

94

4.5.2.

4.5.2.

Destruktoren

96

4.6.

4.6.

Typkompatibilität

96

4.6.1.

4.6.1.

Aufwärtskompatibilität

96

4.6.2.

 

Unspezifische Ausnahmebehandlung

98

4.6.3.

4.6.2.

Erzwungene Abwärtskompatibilität

99

4.6.4.

4.6.3.

Typschwäche

101

4.6.5.

4.6.4.

Polymorphie

102

4.7.

 

Standardklassen als Datenbehälter

104

4.7.1.

 

Knöpfe

104

4.7.2.

 

Zeichenketten

105

5.

5.

Werte und Funktionen

107

5.1.

5.1.

Wertefunktionen

108

5.2.

5.2.

Funktionen

108

5.2.1.

5.2.1.

5.2.2.

Informatoren für Datenbehälter

statische/ dynamische Objekte

109

5.2.2.

 

Konstante und endgültige Methoden

110

5.2.3.

5.2.3.

Implementierung von Funktionen Informatoren

111

5.2.4.

5.2.4.

Interne private Funktionen

112

5.2.5.

5.2.5.

Konstante Parameter

112

5.3.

5.3.

Duplizieren von Inhalten

112

5.3.1.

5.3.1.

Kopie

113

5.3.2.

5.3.2.

Zuweisung

113

5.3.3.

5.3.3.

Klonen

114

5.4.

5.4.

Profilkompatibilität

116

5.4.1.

5.4.1.

Profilkompatibilität beim Aufruf

116

5.4.2.

5.4.2.

Signaturidentität

117

5.5.

5.5.

Verwendung von Funktionen Informatoren

118

5.5.1.

5.5.1.

Standardfunktionen Standardinformatoren

118

5.5.2.

5.5.2.

Geschachtelte Funktionsaufrufe

119

5.5.3.

5.5.3.

Funktionen Informatoren als Objektlieferanten

121

5.5.4.

5.5.4.

Spezifikation von Funktionen Informatoren

122

5.5.5.

5.5.5.

Werte als Referenzen

123

5.5.6.

5.5.6.

Export und Import

124

5.6.

 

Standard-Datenbehälter

125

5.6.1

 

Informatoren für Standard-Datenbehälter

125

5.6.2.

 

Funktionen für Applets

127

5.6.3.

 

Beans

127

5.7.

13.1.1.

Programmierung grafischer Oberflächen

129

5.8.

13.1.2.

Anordnung der Fensterkomponenten

133

5.8.1.

 

Fließende Anordnung

133

5.8.2.

 

Rundum-Anordnung

134

5.8.3.

 

Gitteranordnung

135

5.8.4.

 

Kombination von Anordnungen

136

6.

6.

Ereignissteuerung

137

6.1.

6.1.

Menüs zur Programmsteuerung

137

6.1.1.

6.1.1.

Das leere Menü

138

6.1.2.

6.1.2.

Anonyme Objekte

139

6.1.3.

6.1.3.

Menügesteuerte Programme

139

6.2.

6.2.

Rückruf

140

6.2.1.

6.2.1.

Prozedurparameter

140

6.2.2.

6.2.2.

Überschreiben leerer Methoden

142

6.2.3.

6.2.3.

Mehrere Menüversionen

143

6.2.4.

6.2.4.

Geschachtelte Klassen

144

6.2.5.

6.2.5.

Anonyme Klassen

145

6.2.6.

6.2.6.

Mehrere Menüpunkte

145

6.2.7.

6.2.7.

Aufgeschobene Methoden

146

6.2.8.

6.2.8.

Mehrere aufgeschobene Methoden

147

6.3.

6.3.

Werkzeuge für Anwenderkommunikation

148

6.3.1.

6.3.1.

Menügeneratoren

148

6.3.2.

6.3.2.

Direktmenüs

149

6.3.3.

6.3.3.

Auswahllisten

150

6.3.4.

6.3.4.

Eingabemasken

151

6.4.

6.4.

Objektwahl

152

6.4.1.

6.4.1.

Aktion nach Vorwahl

152

6.4.2.

6.4.2.

Referenzen als Gedächtnis

153

6.4.3.

6.4.3.

Polymorphe Objektwahl

153

6.5.

6.5.

Ereignissteuerung durch Standardklassen

157

6.5.1.

6.5.1.

Ereignisbehandlung durch Lauscher

157

6.5.2.

 

Fensterlauscher

158

6.5.3.

 

Komponentenlauscher

159

6.5.4.

6.5.3.

Verteilung der Ereignisse

161

6.5.5.

6.5.4.

Standardmenüs

163

6.5.6.

6.5.5.

6.5.6.

Menüsteuerung

Verteilung der Menüereignisse

164

6.5.7.

 

Ereignisse aus unterschiedlichen Quellen

165

7.

7.

Einfache Klassen und Basistypen

168

7.1.

7.1.

Aufzählungsklassen

168

7.1.1.

7.1.1.

Aufzählungsmethoden

169

7.1.2.

7.1.2.

Importierte Aufzählungsklassen

170

7.1.3.

7.1.3.

Definition von Aufzählungsklassen

171

7.1.4.

7.1.4.

Implementierungslogik

173

7.2.

7.2.

Logische Objekte

175

7.2.1.

7.2.1.

Logische Klassen

175

7.2.2.

7.2.2.

Logische Literale

176

7.2.3.

7.2.3.

Der Basistyp boolean

176

7.3.

 

Basistypen

177

7.3.1.

7.3.2.

Der Basistyp char

178

7.3.2.

7.5

Ganzzahltypen

179

7.3.3.

7.5.4.

Bruchtypen

180

7.3.4.

 

Typbindung von Variablen

181

7.3.5.

 

Konvertierung

181

7.3.6.

 

Basistypen und Klassen

182

7.4.

7.4.

Operatoren

183

7.4.1.

7.4.3.

Gleichheitsoperatoren

184

7.4.2.

7.4.4.

Ordnungsoperatoren

184

7.4.3.

7.4.5.

Logische Operatoren

185

7.4.4.

7.5.

Arithmetische Operatoren

186

7.5.

 

Verwendung von Basistypen in Klassen

187

7.5.1.

 

Informatoren mit Basistyp-Ergebnis

187

7.5.2.

7.4.3

Gleichheitsoperationen

188

7.5.3.

7.4.4.

Ordnungsoperationen

188

7.5.4.

7.5.2.

Variablen als Datenkomponenten

189

7.5.5.

 

Ganzzahlkomponenten

190

7.6.

 

Hüllenklassen

191

7.6.1.

 

Standard-Hüllenklassen

192

7.6.2.

 

Hüllenklassen im Lehrbuch-Paket

192

7.6.3.

 

Typsicherheit durch Hüllenklassen

194

7.6.4.

 

Sicheres Rechnen mit Hüllenklassen

195

7.7.

9.2.3.

Zeichenkettenklassen

196

7.8.

7.6.

Ausdrücke

197

7.8.1.

7.6.1.

Geschachtelte Aufrufe

198

7.8.2.

7.6.1.

Bindungsstärke

198

7.8.3.

7.8.3.

Kombination von Operatoren

199

7.9.

7.6.2

Parameterübergabemechanismen

200

7.10.

7.7.

Zusicherungen

201

8.

10.

Steuerstrukturen

204

8.1.

10.1.

Alternativen

204

8.1.1.

101.1.

Verzweigungen

204

8.1.2.

10.1.2.

Fallunterscheidungen

206

8.1.3.

10.1.3.

Schachtelung von Alternativen

206

8.1.4.

10.1.4.

Kombination von Bedingungen

206

8.1.5.

10.1.5.

Erkennen einer Ausnahmesituation

207

8.1.6.

10.1.6.

Vorbeugende Ausnahmebehandlung

208

8.2.

10.2.

Zählergesteuerte Wiederholungen

209

8.2.1.

10.2.1.

Zählschleifen

209

8.2.2.

 

Abarbeitung von Zeichenketten

211

8.2.3.

 

Geschachtelte Schleifen

212

8.3.

10.3.

Bedingungsgesteuerte Wiederholungen

212

8.3.1.

10.3.1.

Endlosschleifen

212

8.3.2.

10.3.2.

Rumpfgesteuerte Schleifen

213

8.3.3.

10.3.3.

Kopf- und fußgesteuerte Schleifen

215

8.3.4.

10.3.8.

Verwendung der Schleifenarten

216

8.3.5.

10.3.9.

Gleichwertigkeit von Wiederholungen

217

8.4.

11.2

Rekursion

218

8.4.1.

11.2.1.

Fakultät

218

8.4.2.

11.2.2.

Die Fibonacci-Zahlen

219

8.4.3.

11.2.3.

Die Türme von Hanoi

220

9.

8.

Multibehälter

222

9.1.

8.1.

Mengen

222

9.1.1.

8.1.1.

Farbmengen

223

9.1.2.

8.1.2.

Erweiterung von Multibehältern

224

9.1.3.

8.1.3.

Zeichenmengen

225

9.1.4.

8.1.4.

Persistenz

226

9.1.5.

8.1.5.

Generische Mengen

226

9.1.6.

8.1.6.

Polymorphe Mengen

228

9.1.7.

8.1.7.

Diskrete Mengen

229

9.1.8.

8.1.8.

Iteratoren

230

9.2.

8.2.

Säcke

231

9.3.

8.3.

Folgen

232

9.3.1.

8.3.1.

Zeichenfolgen

232

9.3.2.

8.3.2.

Listen

232

9.3.3.

8.3.3.

Warteschlangen

233

9.3.4.

8.3.4.

Verwendung von Multibehältern

234

9.3.5.

8.3.5.

Stapel

236

9.3.6.

8.3.6.

Positionierbare Listen

238

9.3.7.

8.3.7.

Implementierung mit positionierbaren Listen

238

9.3.8.

8.3.8.

Sequenzielle Dateien

239

9.3.9.

10.3.6

Dateiverarbeitung

240

9.3.10.

8.3.9.

Sortierkanäle

241

9.4.

8.4.

Assoziativspeicher

243

9.4.1.

8.4.1.

Allgemeine Assoziativspeicher

244

9.4.2.

8.4.2.

Direkte Dateien

245

9.5.

 

Standard-Multibehälter

246

9.5.1.

 

Vererbungshierarchie der Standard-Multibehälter

246

9.5.2.

 

Iteratorobjekte

248

9.5.3.

 

Weitere Arbeitshilfen

249

10.

9.

Implementierungstechniken für von Multibehältern

251

10.1.

9.1.

Verbunde

251

10.2.

9.2.

Reihungen

252

10.2.1.

9.2.1.

Reihungsobjekte

252

10.2.2.

9.2.2.

Reihungsklassen

254

10.2.3.

9.2.3.

Aufwärtskompatibilität bei Reihungen

254

10.2.4.

 

Reihungen als Datenkomponenten

255

10.2.5.

9.2.5.

Übersetzungstabellen

256

10.2.6.

9.2.4.

Kommandozeilenparameter

256

10.2.7.

9.2.6.

Mehrdimensionale Reihungen

257

10.2.8.

 

Dynamische Reihungen

258

10.3.

 

Verwendung von Reihungen

259

10.3.1.

9.2.7

Reihungsimplementierung von Multibehältern

259

10.3.2.

10.2.2.

Implementierung diskreter Multibehälter

262

10.3.3.

10.2.3

Relevante Gleichheit

263

10.3.4.

10.2.4

Vektoren

264

10.3.5.

10.2.5

Matrizen

267

10.3.6.

9.3.6.

Assoziativtabellen

268

10.4.

9.3.

Verkettete Listen

269

10.4.1.

9.3.1.

Rekursiv vereinbarte Klassen

270

10.4.2.

9.3.2.

Verkettung

270

10.4.3.

9.3.3.

Rückwärts verkettete Listen

271

10.4.4.

9.3.4.

Rekursive Abarbeitung einer Liste

272

10.4.5.

9.3.5.

Vorwärts verkettete Listen

275

10.4.6.

9.3.6.

Doppelt verkettete Listen

277

10.4.7.

10.3.5

Iterative Abarbeitung einer Liste

279

10.4.8.

9.3.7.

Binärbäume

280

10.4.9.

10.3.5

Abbruch der Rekursion

282

10.4.10.

9.3.8.

Mehrfach verkettete Listen

283

10.5.

13.2

Quelltextinformation zur Laufzeit

284

10.5.1.

13.2.1.

Methoden finden

285

10.5.2.

13.2.2.

Datenkomponenten finden

286

10.6.

 

Ströme

287

10.6.1.

 

Byteorientierte Ströme

288

10.6.2.

 

Zeichenorientierte Ströme

291

10.6.3.

 

Objekte in Strömen

293

10.6.4.

 

Standardein- und Ausgabe

296

10.6.5.

 

Implementierung der Persistenz

297

11.

12.

Nebenläufigkeit

299

11.1.

11.1.

Prozesse

299

11.1.1.

11.1.1.

Disjunkte und voneinander abhängige Prozesse

299

11.1.2.

11.1.2.

Kritische Abschnitte und gegenseitiger Ausschluss

300

11.1.3.

11.1.3.

Synchronisierung

301

11.1.4.

11.1.4.

Semaphore

301

11.1.5.

11.1.5.

Nachrichtenaustausch

303

11.1.6.

11.1.6.

Monitore

303

11.2.

11.2.

Nebenläufige Prozesse in Java

304

11.2.1.

11.2.1.

Prozesse und Monitore

304

11.2.2.

11.2.2.

Synchronisierung auf Grund von Zusatzbedingungen

306

11.2.3.

11.2.3.

Unterbrechungen

308

11.2.4.

11.2.4.

Weitere Synchronisierungsoperationen

308

11.3.

13.4.

Java im Internet

309

11.3.1.

13.4.1.

Sicherheitskonzepte

309

11.3.2.

13.4.2.

Applets

309

11.3.3.

13.4.3.

Einbinden entfernter Applets in Netzseiten

311

11.3.4.

13.4.4.

Adressieren entfernter Objekte

311

11.3.5.

13.4.5.

Laden entfernter Textobjekte

312

11.3.6.

13.4.6.

Laden entfernter Klassenobjekte

313

11.3.7.

13.4.7.

Fernaufruf von Methoden

315

12.

13.5

Ausblick

319

13.

 

Anhang

320

13.1.

 

Literatur

320

13.2.

10.3.10

Hierarchie der Algorithmen

322

13.3.

 

Die Struktur der Sprachelemente

322

13.4.

 

Programmverzeichnis

325

13.5

 

Standardklassen

328

 

 

Glossar

331

 

 

Sachwortverzeichnis

349

Namensänderungen

in der lehrbuch-Bibliothek

3. Auflage

2. Auflage

LeerAusnahme

LeerAusn

VollAusnahme

VollAusn

BereichAusnahme

BereichAusn

DateiAusnahme

DateiAusn

FuenfterEimerFehler

MehrAlsVierFehler

kommandozeilenparameter

args

istGleich

gleich

istUngleich

ungleich

istKleiner

kleiner

istGroesser

groesser

istNichtKleiner

nichtKleiner

istNichtGroesser

nichtGroesser

kapitel9

kapitel8

istLeer

leer

istVoll

voll

eintragen

fuellen

NichtGefundenAusnahme

NichtGefundenAusn