© APSIS GmbH extern.gif (1249 Byte), Polling, 2000


Schreibfehler

in der ersten Auflage des Lehrbuchs Programmieren mit Java

Stand: 19. Oktober 1999


Seite 14, Kapitel 1.5.1.

In der vierten Zeile (in den Klammern) soll es richtig heißen

im Literaturverzeichnis auf Seite 306

und nicht wie im Buch

im Literaturverzeichnis auf Seite 269


Seite 27, Kapitel 2.2.8.

Im Satz vor dem Programm (2.10) heißt es anstelle von Oberklasse richtig Unterklasse:

Eine Unterklasse dieser Klasse hat aber die Möglichkeit, neueMethode (in die wir auch einen interessanteren, neuartigen Altorithmus hätten programmieren können) aufzurufen:

und nicht wie im Buch

Eine Oberklasse dieser Klasse hat aber die Möglichkeit, neueMethode (in die wir auch einen interessanteren, neuartigen Altorithmus hätten programmieren können) aufzurufen:


Seite 50, Kapitel 3.1

Letzter Satz des zweiten Absatzes:

In Java verstehen wir darunter nicht-öffentliche void-Methoden, die vorwiegend in der eigenen Klasse (evtl. in einer Unterklasse) aufgerufen werden.

und nicht wie im Buch

In Java verstehen wir darunter nicht-öffentliche void-Methoden, die vorwiegend für in der eigenen Klasse (evtl. in einer Unterklasse) aufgerufen werden.

Seite 50, Kapitel 3.1.1

Erster Satz des Kapitels:

Es ist ein häufiges Phänomen, dass eine bestimmte Folge von Anweisungen in einem Programm öfter ausgeführt werden muss.

und nicht wie im Buch

Es ist ein häufiges Phänomen, dass eine bestimmte Folge von Anweisungen in einem Programm öfter vorkommt.


Seite 55, Kapitel 3.1.4

In der zweiten Zeile unter der Abbildung. 3.1

Das kursiv gesetzte Wort Eingabeparemter soll richtig Eingabeparameter heißen


Seite 66, Kapitel 3.3.2

Das letzte Wort im ersten Satz nach dem Programm (3.12) ist kann, nicht können:

Die Methode prozedur würden wir normalerweise static vereinbaren, damit sie ohne ein Objekt ihrer Klasse aufgerufen werden kann.

und nicht wie im Buch

Die Methode prozedur würden wir normalerweise static vereinbaren, damit sie ohne ein Objekt ihrer Klasse aufgerufen werden können.


Seite 68, Kapitel 3.3.5

Im letzten Satz des vorletzten Absatzes auf der Seite fehlt das Wort zwischen:

Im Kapitel 3.3.1. auf Seite 63 haben wir schon den Unterschied zwischen Lebensdauer und Sichtbarkeit untersucht.

und nicht wie im Buch

Im Kapitel 3.3.1. auf Seite 63 haben wir schon den Unterschied Lebensdauer und Sichtbarkeit untersucht.


Seite 71, Kapitel 3.3.8

Zweiter Satz im Kapitel:

Wird in einer aufgerufenen Methode (oder in einem aktivierten Block) eine Ausnahme ...

und nicht wie im Buch

Wird in einer aufgerufenen Methode (oder aktiviertem Block) eine Ausnahme ...


Seite 72, Kapitel 3.4

Erster Satz im Kapitel:

Jetzt haben wir fast alle Sprachelemente kennen gelernt, die nötig sind, um ohne das Paket lehrbuch eigene Java-Programme zu schreiben.

und nicht wie im Buch

Jetzt haben wir fast alle Sprachelemente kennen gelernt, die nötig sind, ohne das Paket lehrbuch Java-Programme zu schreiben.

Erster Satz im Punkt 2:

Die Anweisungen der Methode start werden jedes Mal ausgeführt, wenn die Internet-Seite mit der Applet-Klausel besucht wird.

und nicht wie im Buch

Die Anweisungen der Methode start werden jedes Mal ausgeführt, wenn die Internet-Seite mit dem Applet-Klausel besucht wird.


Seite 77, Kapitel 4

Zweiter Absatz:

Im Kapitel 3.2.1. auf Seite 59 haben wir die Spezifikation von Klassen kennen gelernt. Hieraus gewinnt der Benutzer alle Information, um die Klasse in seinem Programm benutzen (z.B. Operationen aufrufen) zu können. Sie enthält die Profile aller exportierten Methoden. Die Klassenimplementierung selbst enthält auch die Rümpfe dieser Methoden. Sie enthält am Anfang das Profil, genau wie in der Spezifikation aufgeführt; anschließend folgt ein Block, der Methodenrumpf. Hierin können Objekte und andere Namen vereinbart werden; außerdem enthält er die Anweisungen, die beim Aufruf der Operation ausgeführt werden sollen.

und nicht wie im Buch

Im Kapitel 3.2.1. auf Seite 59 haben wir die Spezifikation von Klassen kennen gelernt. Hieraus gewinnt der Benutzer alle Information, um die Klasse in sein Programm benutzen (z.B. Operationen aufrufen) zu können. Sie enthält die Profile aller exportierten Methoden. Die Klassenimplementierung selbst enthält auch die Rümpfe dieser Methoden. Sie enthält zu Anfang das Profil, genau wie in der Spezifikation aufgeführt; anschließend folgt ein Block, der Methodenrumpf. Hierin können Objekte und andere Namen vereinbart werden; außerdem enthält er die Anweisungen, die den Algorithmus beschreiben, der beim Aufruf der Operation ausgeführt werden soll.


Seite 84, Kapitel 4.4.1

Zweiter und dritter Satz:

Wir nennen diese neuen Mutatoren garantiertFuellen und garantiertEntleeren. Die neue Klasse, die durch das Kopieren von Eimer entstanden ist, nennen wir GarantierterEimerKop.

und nicht wie im Buch

Wir nennen diese neue Mutatoren garantiertFuellen und garantiertEntleeren. Die neue Klasse nennen wir GarantierterEimerKop.


Seite 90, Kapitel 4.6.1

Erster Satz des letzten Absatzes vor dem Programm (4.16):

Somit ist es möglich, eine Methode mit einem Eimer-Parameter für ein Objekt der Klasse GarantierterEimerErb aufzurufen.

und nicht wie im Buch

Somit ist es möglich, eine Methode mit einem Eimer-Parameter für ein Objekt der Klasse GarantierterEimerErb aufrufen.


Seite 91, Kapitel 4.6.2

Erster Satz nach dem Programm (4.17):

Die Sachlage ist folgendes:

und nicht wie im Buch

Die Sachlage ist verständlich:

Seite 92, Kapitel 4.6.2

Erster Satz nach dem Programm (4.18):

Einer Unterklassenreferenz kann eine Oberklassenreferenz nur durch Typkonvertierung zugewiesen (oder als Parameter übergeben) werden, damit der Compiler die Zuweisung zulässt.

und nicht wie im Buch

Einer Oberklassenreferenz kann eine Unterklassenreferenz nur durch Typkonvertierung zugewiesen (oder als Parameter übergeben) werden, damit der Compiler die Zuweisung zulässt.


Seite 95, Kapitel 4.6.4

Zweiter Absatz auf der Seite:

Im Benutzerprogramm wird nun eine Referenz vom Schnittstellentyp PolymorpherEimer vereinbart, und hierdurch – wegen der Aufwärtskompatibilität – zwei Objekte verschiedener Klassen referiert: das eine der Klasse WasserEimer, das andere der Klasse WeinEimer.

und nicht wie im Buch

Im Benutzerprogramm wird nun eine Referenz vom Schnittstellentyp PolymorpherEimer vereinbart, und hierdurch – wegen der Aufwärtskompatibilität – zwei Objekte verschiedener Klassen zu referieren: das eine der Klasse WasserEimer, das andere der Klasse WeinEimer.


Seite 97, Kapitel 5

Erster Satz des zweiten Absatzes:

Viele Klassen, die Datenbehälter implementieren, exportieren eine besondere Sorte von Operationen: Funktionen, die in die Behälter passenden Werte darstellen; wir nennen diese Wertefunktionen.

und nicht wie im Buch

Viele Klassen, die Datenbehälter implementieren, exportieren eine besondere Sorte von Operationen: Funktionen, die in die Behälter passende Werte darstellen; wir nennen diese Wertefunktionen.


Seite 101, Kapitel 5.2.3

Dritter und vierter Satz im Kapitel:

Danach muss ein Wert vom Ergebnistyp stehen. Dieser kann von einer Wertefunktion, einem anderen Informator oder von einer beliebigen anderen Funktion geliefert werden:

und nicht wie im Buch

Danach muss ein Wert vom dem Ergebnistyp stehen. Dieser kann von einem Wertefunktion, einem anderen Informator oder von einer beliebigen anderen Funktion geliefert werden:


Seite 106, Kapitel 5.3.3

Punkt 3 nach der Methode clone:

3. Das Überschreiben von clone setzt den Ergebnistyp Object voraus.

und nicht wie im Buch

3. Das Überschreiben von clone setzt das Ergebnistyp Object voraus.


Seite 115, Kapitel 5.5.6

Zwei Absätze nach der Abb. 5.6:

Die Klasse exportiert das, was in ihrer Spezifikation steht. Im Kapitel 2.3.2. auf Seite 34 haben wir kennen gelernt, wie dies einem Benutzer angeboten wird. Eine Unterklasse, die diese Klasse erweitert, kann einiges aus ihrer geschützten Schnittstelle importieren (d.h. benutzen): exportierte Operationen, Wertefunktionen, innere Klassen, usw.

Bei den Standardinformatoren wurde deutlich, dass oftmals gleichzeitig Klassen aus verschiedenen Paketen benutzt werden. Dabei ist es meistens sehr nützlich, manchmal aber etwas lästig, den Namen des importierten Pakets jedes Mal schreiben zu müssen, sobald wir einen von ihm exportierten Namen benutzen. Es trägt aber zur Lesbarkeit des Programms – trotz Schreibarbeit – bei, wenn mehrere Pakete eingebunden werden. Dann weiß der Leser immer genau, woher die einzelnen Namen kommen. Wird aber – wie in unseren bisherigen Beispielen – nur ein Paket benutzt, ist es sinnvoll, die von Java gebotene Möglichkeit zu nutzen, das Programm mit dem reservierten Wort import etwas abzukürzen. Dies gilt auch für die Wertefunktionen:

und nicht wie im Buch

Die Klasse exportiert das, was in seiner Spezifikation steht. Im Kapitel 2.3.2. auf Seite 34 haben wir kennen gelernt, wie dies einem Benutzer angeboten wird. Eine Unterklasse, die diese Klasse erweitert, kann einiges aus seiner geschützten Schnittstelle importieren (d.h. benutzen): exportierte Operationen, Wertefunktionen, innere Klassen, usw.

Bei den Standardinformatoren wurde deutlich, dass oftmals gleichzeitig Klassen aus verschiedenen Paketen benutzt werden. Dabei ist es meistens sehr nützlich, manchmal aber etwas lästig, den Namen des importierten Pakets jedes Mal schreiben zu müssen, sobald wir einen von ihm exportierten Namen benutzen. Insbesondere trägt es dann zur Lesbarkeit des Programms – trotz Schreibarbeit – bei, wenn mehrere Pakete eingebunden werden. Dann weiß der Leser immer genau, woher die einzelnen Namen kommen. Wird aber – wie in unseren bisherigen Beispielen – nur ein Paket benutzt, ist es sinnvoll, die von Java gebotene Möglichkeit zu nutzen, das Programm mit dem reservierten Wort import etwas abzukürzen. Dies gilt auch für die Wertefunktionen:


Seite 126, Kapitel 6.2.7

Erster Satz des Kapitels:

Die an die Menüpunkte angehängten Prozeduren in den obigen Beispielen können mit einer Rückrufprozedur überschrieben werden, müssen aber nicht.

und nicht wie im Buch

Die an die Menüpunkten angehängten Prozeduren in den obigen Beispielen können mit einer Rückrufprozedur überschrieben werden, müssen aber nicht.


Seite 159, Kapitel 7.4.3

In der letzten Zeile des zweiten Absatzes des Kapitels (in der 8. Zeile von unten an der Seite) soll der kursiv gesetzte Wort unärere richtig unäre heißen:

Operatoren mit zwei Operanden heißen diadische, manchmal auch binäre Operatoren, Operatoren mit einem Operanden heißen monadische (manchmal unäre) Operatoren.

und nicht wie im Buch

Operatoren mit zwei Operanden heißen diadische, manchmal auch binäre Operatoren, Operatoren mit einem Operanden heißen monadische (manchmal unärere) Operatoren.


Seite 163, Kapitel 7.5.1

In der letzten Zeile des ersten Programmstücks steht im Kommentar kein + sondern -:

a --; // Abkürzung für a = a - 1;

und nicht wie im Buch

a --; // Abkürzung für a = a + 1;

Seite 166, Kapitel 7.5.3

Im Abschnitt nach dem obersten Programm auf der Seite ist der Name der Standard-Hüllenklasse nicht java.lang.Int, sondern java.lang.Integer:

Die Standard-Hüllenklasse java.lang.Integer kann zu diesem Zweck nicht benutzt werden, weil sie als final – d.h. nicht erweiterbar – vereinbart worden ist.

und nicht wie im Buch:

Die Standard-Hüllenklasse java.lang.Int kann zu diesem Zweck nicht benutzt werden, weil sie als final – d.h. nicht erweiterbar – vereinbart worden ist.


Seite 188, Kapitel 8.3.8

Am Ende der ersten Zeile des Kapitels soll das kursiv gesetzte Wort sequenzielle kleinschreiben werden und nicht groß wie im Buch.


Seite 229, Kapitel 10.2.5

Der letzte Satz auf der Seite soll richtig heißen

Sie werden oft verwendet, um zweidimensionale Reihungen abzuarbeiten.

und nicht wie im Buch:

Sie werden oft verwendet zweidimensionalen Reihungen abzuarbeiten.


Seite 245, Kapitel 11.2.2, Übung 11.5

Im Übungstext soll heißen:

Erstellen Sie eine Klasse ...

und nicht wie im Buch

Erstellen Sie ein Klasse ...


Seite 260, Kapitel 11.4.2, Programm 11.21

In der 6. Zeile der Seite von unten (in der 11. Zeile des Programms) soll der Kommentar richtig heißen

// gefundenen Knoten vernichten

und nicht wie im Buch

// gefunden Knoten vernichten


Seite 296, Kapitel 13.4.2

Am Anfang der 8. Zeile der Seite in den Klammern soll applet tag klein geschrieben werden und nicht groß wie im Buch


Seite 307, Literaturverzeichnis

Der auf der Seite 262 erwähnte Literaturverweis fehlt im Literaturverzeichnis:

[AVL] Adelson-Velskii, Landis: Ein Algorithmus zur Informationsorganisation (auf Russisch; Doklady Akademii Nauk SSSR 146 - 1962, Seiten 263-266)


Seite 315, Glossar

Das Gegenteil des Begriffs geprüfte Ausnahmen ist nicht geprüfte Ausnahmen, sondern ungeprüfte Ausnahmen.

Im Eintrag geschützte Schnittstelle soll der Ausdruck geschützte Komponenten nicht kursiv gesetzt werden.

Seite 318, Glossar

Der Eintrag logische Operation sollte vor den Eintrag logischer Datentyp umgestellt werden, um die alphabetische Ordnung zu wahren.

Seite 322, Glossar

Die Einträge Schreibparameter und Schnittstellentyp sollen vertauscht werden, um die alphabetische Ordnung zu wahren.

Seite 324, Glossar

Der Eintrag Steuerstuktur heißt richtig Steuerstruktur.

Seite 325, Glossar

Im Eintrag Überdecken soll der Ausdruck geschachtelten Block nicht kursiv gesetzt werden.


© APSIS GmbH extern.gif (1249 Byte), Polling, 2000