Next:
1. Einleitung
Up:
No Title
Previous:
Vorwort
Inhalt
Inhalt
1. Einleitung
1.1 Programmierung
1.2 Objektorientierte Programmierung
1.3 Voraussetzungen und Ziele dieses Buches
1.4 Aufbau dieses Buches
2. Das imperative Hamster-Modell
2.1 Komponenten des Hamster-Modells
2.1.1 Landschaft
2.1.2 Hamster
2.1.3 Grundlagen der Programmiersprache Java
2.2 Anweisungen und Programme
2.2.1 Hamster-Befehle
2.2.2 Anweisungen
2.2.3 Programme
2.2.4 Kommentare
2.2.5 Beispielprogramm
2.3 Prozeduren
2.3.1 Prozedurdefinition
2.3.2 Prozeduraufruf
2.3.3 Beispielprogramm
2.4 Auswahlanweisungen
2.4.1 Testbefehle
2.4.2 Boolesche Operatoren und Ausdrücke
2.4.3 Blockanweisung
2.4.4 Bedingte Anweisung
2.4.5 Alternativanweisung
2.4.6 Beispielprogramm
2.5 Wiederholungsanweisungen
2.5.1
while
-Anweisung
2.5.2
do
-Anweisung
2.5.3 Beispielprogramm
2.6 Boolesche Funktionen
2.6.1 Boolesche
return
-Anweisung
2.6.2 Definition boolescher Funktionen
2.6.3 Aufruf boolescher Funktionen
2.6.4 Beispielprogramm
2.7 Variablen und Ausdrücke
2.7.1 Datentypen
2.7.2 Variablen
2.7.3 Ausdrücke
2.7.4 Zuweisung
2.7.5 Vergleichsausdrücke
2.7.6 Gültigkeitsbereiche von Variablen
2.7.7 Lebensdauer von Variablen
2.7.8 Beispielprogramm
2.8
int
-Funktionen
2.8.1 Funktionsdefinition
2.8.2 Funktionsaufruf
2.8.3 Verallgemeinerung des Funktionskonzeptes
2.8.4 Beispielprogramm
2.9 Funktionsparameter
2.9.1 Formale Parameter
2.9.2 Aktuelle Parameter
2.9.3 Parameterübergabe
2.9.4 Überladen von Funktionen
2.9.5 Beispielprogramm
2.10 Rekursion
3. Hamster-Objekte
3.1 Das objektorientierte Hamster-Modell
3.2 Hamster-Namen
3.3 Der Standard-Hamster
3.4 Aufruf von Hamster-Befehlen
3.5 Koordinatensystem
3.6 Erzeugung neuer Hamster
3.7 Initialisierung erzeugter Hamster
3.8 Hamster-Befehle
3.9 Neue Hamster-Befehle
3.10 Der Datentyp
Hamster
3.10.1 Hamster und Hamster-Namen
3.10.2 Zuweisung
3.10.3 Das Literal
null
3.10.4 Vergleichsoperatoren
3.10.5 Parameter vom Datentyp
Hamster
3.10.6 Hamster-liefernde Funktionen
3.11 Beispielprogramme
3.11.1 Beispielprogramm 1
3.11.2 Beispielprogramm 2
3.11.3 Beispielprogramm 3
3.12 Aufgaben
3.12.1 Aufgabe 1
3.12.2 Aufgabe 2
3.12.3 Aufgabe 3
3.12.4 Aufgabe 4
3.12.5 Aufgabe 5
3.12.6 Aufgabe 6
3.12.7 Aufgabe 7
4. Die Klasse
Hamster
4.1 Motivation
4.2 Attribute
4.3 Methoden
4.4 Implementierung von Methoden
4.5
this
4.6 Implementierung der Hamster-Methode
maulLeer
4.7 Erzeugung von Hamster-Objekten
4.8 Initialisierung von Hamster-Objekten
4.9 Aufgaben
4.9.1 Aufgabe 1
4.9.2 Aufgabe 2
4.9.3 Aufgabe 3
4.9.4 Aufgabe 4
4.9.5 Aufgabe 5
5. Erweiterte Hamster-Klassen (Grundlagen)
5.1 Definition erweiterter Hamster-Klassen
5.2 Definition von Attributen
5.3 Definition von Methoden
5.4 Zugriff auf Attribute
5.4.1 Zugriff innerhalb der Klassendefinition
5.4.2 Zugriff außerhalb der Klassendefinition
5.5 Attribute versus methodenlokale Variablen
5.6 Erzeugung erweiterter Hamster-Objekte
5.7 Aufruf von Methoden
5.8 Komplette Programme mit erweiterten Hamster-Klassen
5.9 Separate Klassen
5.10 Beispielprogramme
5.10.1 Beispielprogramm 1
5.10.2 Beispielprogramm 2
5.10.3 Beispielprogramm 3
5.11 Aufgaben
5.11.1 Aufgabe 1
5.11.2 Aufgabe 2
5.11.3 Aufgabe 3
5.11.4 Aufgabe 4
5.11.5 Aufgabe 5
5.11.6 Aufgabe 6
5.11.7 Aufgabe 7
5.11.8 Aufgabe 8
5.11.9 Aufgabe 9
5.11.10 Aufgabe 10
5.11.11 Aufgabe 11
5.11.12 Aufgabe 12
5.11.13 Aufgabe 13
5.11.14 Aufgabe 14
6. Erweiterte Hamster-Klassen (Fortsetzung)
6.1 Überladen von Methoden
6.2 Rekursive Methoden
6.3 Konstruktoren
6.3.1 Motivation
6.3.2 Definition von Konstruktoren
6.3.3 Aufruf von Konstruktoren
6.3.4 Konstruktoren der Klasse
Hamster
6.4 Klassenattribute
6.4.1 Definition von und Zugriff auf Klassenattribute
6.4.2 Klassenattribute der Klasse
Hamster
6.5 Klassenmethoden
6.5.1 Definition und Aufruf von Klassenmethoden
6.5.2 Klassenmethoden der Klasse
Hamster
6.6 Die Klasse
Territorium
6.7 Subobjekte
6.8 Konstanten
6.8.1 Definition von und Zugriff auf Konstante
6.8.2 Konstanten der Klasse
Hamster
6.8.3 Vorteile von Konstanten
6.9 Beispielprogramme
6.9.1 Beispielprogramm 1
6.9.2 Beispielprogramm 2
6.9.3 Beispielprogramm 3
6.10 Aufgaben
6.10.1 Aufgabe 1
6.10.2 Aufgabe 2
6.10.3 Aufgabe 3
6.10.4 Aufgabe 4
6.10.5 Aufgabe 5
6.10.6 Aufgabe 6
6.10.7 Aufgabe 7
6.10.8 Aufgabe 8
6.10.9 Aufgabe 9
6.10.10 Aufgabe 10
6.10.11 Aufgabe 11
6.10.12 Aufgabe 12
6.10.13 Aufgabe 13
6.10.14 Aufgabe 14
6.10.15 Aufgabe 15
6.10.16 Aufgabe 16
7. Vererbung
7.1 Erben der Klasse
Hamster
7.2 Ableiten von erweiterten Hamster-Klassen
7.3
super
7.4 Überschreiben von Methoden
7.4.1 Reimplementierung geerbter Methoden
7.4.2 Zugriff auf geerbte überschriebene Methoden
7.4.3 Überschreiben von
Hamster
-Methoden
7.4.4 Überschreiben versus Überladen von Methoden
7.5 Gleichnamige Attribute
7.6 Konstruktoren
7.6.1 Regeln bei der Definition von Konstruktoren
7.6.2 Das
super
-Konstrukt
7.6.3 Beispiele für die Definition von Konstruktoren
7.6.4 Konstruktoren der Klasse
Hamster
7.7 Klassenattribute
7.8
final
7.9 Vorteile der Vererbung
7.10 Allround-Hamster
7.11 Beispielprogramme
7.11.1 Beispielprogramm 1
7.11.2 Beispielprogramm 2
7.11.3 Beispielprogramm 3
7.12 Aufgaben
7.12.1 Aufgabe 1
7.12.2 Aufgabe 2
7.12.3 Aufgabe 3
7.12.4 Aufgabe 4
7.12.5 Aufgabe 5
7.12.6 Aufgabe 6
7.12.7 Aufgabe 7
7.12.8 Aufgabe 8
8. Arrays
8.1 Motivation
8.2 Definition und Erzeugung von Arrays
8.3 Zuweisung
8.4 Zugriff auf Arrays
8.5 Laufzeitfehler beim Zugriff auf Arrays
8.6 Initialisierung von Arrays
8.7
for
-Schleife
8.7.1 Syntax und Semantik
8.7.2 Äquivalenz zur
while
-Schleife
8.8 Referenzdatentypen
8.9 Ermittlung der Größe eines Arrays
8.10 Arrays als Parameter von Funktionen und Methoden
8.11 Arrays als Funktions- bzw. Methodenwerte
8.12 Arrays als Attribute
8.13 Hamster-Arrays
8.14 Mehrdimensionale Arrays
8.14.1 Definition und Erzeugung
8.14.2 Zugriff
8.15 Beispielprogramme
8.15.1 Beispielprogramm 1
8.15.2 Beispielprogramm 2
8.15.3 Beispielprogramm 3
8.16 Aufgaben
8.16.1 Aufgabe 1
8.16.2 Aufgabe 2
8.16.3 Aufgabe 3
8.16.4 Aufgabe 4
8.16.5 Aufgabe 5
8.16.6 Aufgabe 6
8.16.7 Aufgabe 7
8.16.8 Aufgabe 8
8.16.9 Aufgabe 9
8.16.10 Aufgabe 10
8.16.11 Aufgabe 11
8.16.12 Aufgabe 12
9. Verallgemeinerung des Klassen/Objekte-Konzeptes
9.1 Klassen und Objekte
9.1.1 Klassen
9.1.2 Objekte und Objektvariablen
9.1.3 Konvention
9.2 Vererbung
9.3 Beispielprogramme
9.3.1 Beispielprogramm 1
9.3.2 Beispielprogramm 2
9.3.3 Beispielprogramm 3
9.4 Aufgaben
9.4.1 Aufgabe 1
9.4.2 Aufgabe 2
9.4.3 Aufgabe 3
9.4.4 Aufgabe 4
9.4.5 Aufgabe 5
9.4.6 Aufgabe 6
10. Ein- und Ausgabe
10.1 Zeichenketten
10.1.1 Stringliterale
10.1.2 Stringobjekte
10.1.3 Stringobjektvariablen
10.1.4 Klasse
String
10.1.5 Operatoren für Objektvariablen vom Typ
String
10.2 Ausgabe
10.3 Eingabe
10.4 Beispielprogramme
10.4.1 Beispielprogramm 1
10.4.2 Beispielprogramm 2
10.4.3 Beispielprogramm 3
10.5 Aufgaben
10.5.1 Aufgabe 1
10.5.2 Aufgabe 2
10.5.3 Aufgabe 3
10.5.4 Aufgabe 4
10.5.5 Aufgabe 5
10.5.6 Aufgabe 6
10.5.7 Aufgabe 7
10.5.8 Aufgabe 8
10.5.9 Aufgabe 9
10.5.10 Aufgabe 10
10.5.11 Aufgabe 11
10.5.12 Aufgabe 12
10.5.13 Aufgabe 13
11. Polymorphie und dynamisches Binden
11.1 Polymorphie
11.2 Einschränkung des Protokolls
11.3 Polymorphie und Parameter
11.4 Explizite Typumwandlung
11.5 Dynamisches Binden von Methoden
11.5.1 Instanzmethoden
11.5.2 Aufruf von Instanzmethoden
11.6 Erweiterbarkeit
11.7 Die Klasse
Object
11.8 Wiederverwendbarkeit
11.9 Weitere Methoden der Klasse
Territorium
11.10 Beispielprogramme
11.10.1 Beispielprogramm 1
11.10.2 Beispielprogramm 2
11.10.3 Beispielprogramm 3
11.11 Aufgaben
11.11.1 Aufgabe 1
11.11.2 Aufgabe 2
11.11.3 Aufgabe 3
11.11.4 Aufgabe 4
11.11.5 Aufgabe 5
11.11.6 Aufgabe 6
11.11.7 Aufgabe 7
11.11.8 Aufgabe 8
11.11.9 Aufgabe 9
11.11.10 Aufgabe 10
12. Abstrakte Klassen und Interfaces
12.1 Abstrakte Klassen
12.1.1 Definition abstrakter Klassen
12.1.2 Objektvariablen und Objekte
12.1.3 Ableiten von abstrakten Klassen
12.1.4 Nutzen von abstrakten Klassen
12.2 Interfaces
12.2.1 Definition von Interfaces
12.2.2 Objektvariablen und Objekte
12.2.3 Implementierung von Interfaces
12.2.4 Polymorphie und Interfaces
12.2.5 Implementierung mehrerer Interfaces
12.2.6 Nutzen von Interfaces
12.3 Vergleich von abstrakten Klassen und Interfaces
12.4 Beispielprogramme
12.4.1 Beispielprogramm 1
12.4.2 Beispielprogramm 2
12.4.3 Beispielprogramm 3
12.5 Aufgaben
12.5.1 Aufgabe 1
12.5.2 Aufgabe 2
12.5.3 Aufgabe 3
12.5.4 Aufgabe 4
12.5.5 Aufgabe 5
12.5.6 Aufgabe 6
12.5.7 Aufgabe 7
12.5.8 Aufgabe 8
12.5.9 Aufgabe 9
12.5.10 Aufgabe 10
12.5.11 Aufgabe 11
13. Fehlerbehandlung mit Exceptions
13.1 Überblick
13.2 Fehlerklassen
13.3 Erzeugen und Werfen von Fehlerobjekten
13.4 Fehlertypdeklaration
13.5 Abfangen von Fehlerobjekten
13.5.1 Fehlerbehandlung
13.5.2 Mehrere
catch
-Handler
13.5.3 Polymorphie
13.5.4 Der
finally
-Block
13.6 Unchecked-Exceptions
13.7 Beispielprogramme
13.7.1 Beispielprogramm 1
13.7.2 Beispielprogramm 2
13.7.3 Beispielprogramm 3
13.8 Aufgaben
13.8.1 Aufgabe 1
13.8.2 Aufgabe 2
13.8.3 Aufgabe 3
13.8.4 Aufgabe 4
13.8.5 Aufgabe 5
13.8.6 Aufgabe 6
13.8.7 Aufgabe 7
13.8.8 Aufgabe 8
13.8.9 Aufgabe 9
13.8.10 Aufgabe 10
13.8.11 Aufgabe 11
14. Zugriffsrechte und Pakete
14.1 Zugriffsrechte
14.1.1 Zugriffsrechte auf Klassen und Interfaces
14.1.2 Zugriffsrechte auf Attribute, Methoden und Konstanten
14.1.3 Überschreiben von Methoden
14.1.4 Zugriffsrechte von Methoden von Interfaces
14.2 Pakete
14.2.1 Definition von Paketen
14.2.2 Nutzung von Paketen
14.2.3 Strukturierte Pakete
14.2.4 Anonyme Pakete
14.2.5 Vordefinierte Klassen
14.2.6 Die Umgebungsvariable
CLASSPATH
14.2.7 Vorteile von Paketen
14.3 Zusammenspiel von Zugriffsrechten und Paketen
14.3.1 Prinzip der minimalen Schnittstellen
14.3.2 Prinzip der Datenkapselung
14.4 Beispielprogramme
14.4.1 Beispielprogramm 1
14.4.2 Beispielprogramm 2
14.4.3 Beispielprogramm 3
14.5 Aufgaben
14.5.1 Aufgabe 1
14.5.2 Aufgabe 2
14.5.3 Aufgabe 3
14.5.4 Aufgabe 4
15. Spielende Hamster
15.1 Das Spiel Kalah
15.2 Menschen-Kalah
15.3 Programmierung von Spielstrategien
15.3.1 Programmierung von Spielstrategien
15.3.2 Bewertung von Spielzuständen
15.3.3 Der Minimax-Algorithmus
15.4 Hamster-Kalah
15.5 Aufgaben
15.5.1 Aufgabe 1
15.5.2 Aufgabe 2
15.5.3 Aufgabe 3
15.5.4 Aufgabe 4
16. Ausblick
16.1 Hamster-Programme versus Java-Programme
16.2 Java-Klassenbibliothek
16.3 Objektorientierte Softwareentwicklung
17. Klassen des Java-Hamster-Modells
17.1
Exception
-Klassen
17.2 Die Klasse
Hamster
17.3 Die Klasse
Territorium
Literatur
Index
Dietrich Boles
2004-10-05