Table Of ContentZur zweiten Auflage:
"Eine leicht verständliche Einführung in die Grundlagen der objek
torientierten Programmierung. Der Autor konzentriert sich auf die
wesentlichen Prinzipien von Java und verzichtet auf eine erschöp
fende Darstellung der Programmiersprache, was dem Lernenden ein
schnelles Vorwärtskommen erlaubt"
BIT - Redaktion 5/01
- -
OhMCINC++ VI_I .-.. ftlrt8chnlllChe
YOI'I Ptter P. Bothner und Michael Kählef
von Jürg.e.n Radel
o.u~"'JAVA
von Oietmar Abts Theorfe und PftId.~ ....
"-.-"
VI~"'~.I.
von Reolt Steiner
von Ekkehard Kaiser
DelphI~l.
PrvcnmmlervllJ: In JAVA
von Ekkehafd Kaiser
von Otto Rauh
Onindku. .. WlrtKhMbInfonndfk
von Oietmar Abts und Wilhelm Mülder ar.ktiv Prvcnmm~ In
CIlndC++
Aufbauku ... WlrtKta.fblnfonnatIk von Oietmar Herrmann
von Oietmar Abts und Wilhelm Mülder 0rK"
SOL mit
IComptlktku ... Mlu-,bo. ..... YOIl Wolf·Michael Kähler
von Silvia Umbach
MockI", KI • ..,.. Yertrip
Von PaIICIII zu AMembier YOIl Kar!heinz Hug
von Peter Kammerer
ONndku,. Betrhbnl'lrtKMftslehN
0 •• PC Wl_ fGr 1T...a.n.h: von Notger Gar!, Rudolf Fiedler, William J6rasz
HardWlre, Betriebssysteme, Netzwtlrktechnik und Manfred Kiesel
von Rainer Egewardt
RelaUontol .. und objektreIntoM. .. SOL
Onenbank-&clneertn, von Wolf-Michael Kähler
von Alfre<! Moos und Gerhafd Oaues
Lern und ArMttstouch IAP R/S-
&c.I fGr Betrhb..trle von Andr~ Maassen und Maltus Schoenen
von Robert Horvat und Kambiz Koochaki
KostH8tellenNChnu"l' mit IAP R/3-
exc.JfGrTlIChnlu.-und Inpn. ...... von Franz Klenger und Ellen Falk Kalms
von Hans Jürgen Holland und Uwe 8emhardt
M.npment _ Gnchlftaprouuen
PnoktlllChe Systempro".,mm1eru"l' von Andreas GOttIatsch
von Helmut Weber
ONndku,. AJaorfthmen und
ControIllnc mit SAP R/3- O.ten8tnllrtuNn In JAVA
von Gunther Friedei, Christian Hitz von Andreas Solymosi und Ulrich Grude
und Bur1r.hard Pedell
Objetttorfentiertto
O_ nIl-.".'.b.lw lc hln,fGr Studenten und WI ... Prvcnmmleruna'nJAYA
von Otto Rauh
von Michael 8eiBwenger
www.vieweg-it.de
atto Rauh
Objektorientierte
Programmierung in JAVA
Die leicht verständliche Einführung für
das aktive Lernen
3. Auflage
aI
vleweg
Die Deutsche Bibliothek - CIP-Einheitsaufnahme
Ein Titeldatensatz für diese Publikation ist bei
Der Deutschen Bibliothek erhältlich.
3. Auflage August 2002
Alle Rechte vorbehalten
© Springer Fachmedien Wiesbaden 2002
Ursprünglich erschienen bei Friedr. Vieweg & Sohn Verlagsgesellschaft mbH, BraunschweiglWiesbaden
2002.
www.vieweg.de
Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Jede
Verwertung außerhalb der engen Grenzen des Urheberrechtsgesetzes ist ohne
Zustimmung des Verlages unzulässig und strafbar. Das gilt insbesondere für
Vervielfältigungen, Übersetzungen, Mikroverfilmungen und die Einspeicherung
und Verarbeitung in elektronischen Systemen.
Umschlaggestaltung: Ulrike Weigel, www.CorporateDesignGroup.de
Gedruckt auf säurefreiem und chlorfrei gebleichtem Papier.
ISBN 978-3-528-25721-7 ISBN 978-3-663-12264-7 (eBook)
DOI 10.1007/978-3-663-12264-7
Vorwort zur dritten Auflage
Wie bei den ersten beiden Auflagen auch war mein wichtigstes Ziel, eine leicht verständ
liche Einfllhrung in das nicht ganz einfache Gebiet der objektorientierten Programmierung
(OOP) zu geben, ohne auf die Präzision des Ausdrucks zu verzichten.
Bei der Arbeit mit meinen Studenten habe ich selbst in den beiden Jahren seit dem Er
scheinen der ersten Auflage viel über die speziellen Probleme beim Erlernen der OOP hin
zugelernt. Aus diesen Erfahrungen heraus habe ich den größten Teil des Buchs stark über
arbeitet. Neben dem Hauptziel der guten Verständlichkeit ging es mir dabei vor allem um
drei Dinge:
1. modeme aktive Lemformen, einschließlich des Selbstunterrichts, genauso zu unter
stützen wie wie die klassische Kombination aus Vorlesung und Übung,
2. Leser mit unterschiedlichen Ansprüchen hinsichtlich der Breite und der Tiefe der
Stoffvermittlung anzusprechen,
3. ein Buch anzubieten, das ohne zusätzliche Lektüre und Nachschlagewerke einen
ganzen Einfllhrungskurs über benutzt werden kann.
Bei meinem Bestreben, dies alles möglich zu machen, ist die Seitenzahl etwas angewachsen.
Zusätzliche Themen, Beispiele und Analogien wurden aufgenommen, einige optionale Ein
heiten ergänzen nun die Basiseinheiten, und der Referenzteil ist auf das Sechsfache ange
wachsen.
Das erste Kapitel enthält eine ausfilhrliche Gebrauchsanweisung ftlr das Buch. Deshalb will
ich hier keine langen didaktischen Erläuterungen bringen. Nur soviel vorweg: der Lernpro
zess wird von den sorgfältig ausgewählten Beispielen und Aufgaben getragen. Man lernt
OOP nämlich nicht, indem man sich in kürzester Zeit alle Fachbegriffe "hineinzieht", son
dern nur durch das Studium geeigneter Exempel und eigenes Tun.
Klaus-Georg Deck und Ursula Raub haben vorab das Manuskript gelesen und mich vor
vielen kleinen und einigen schlimmen Fehlern bewahrt. Auch viele Leser der ersten beiden
Auflagen haben durch ihre Hinweise zur Verbesserung beigetragen. Daftlr möchte ich ihnen
herzlich danken. Wenn Sie, lieber Leser, Anregungen, Hinweise oder Kritik zu diesem
Buch haben sollen, nehmen Sie bitte Kontakt mit mir auf (Email: [email protected]).
Und nun viel Spaß beim Programmieren!
Heilbronn, im Juli 2002 Otto Raub
Inhalt
Vorwort
I Einführung in die objektorientierte Programmierung mit Java
I Vorbereitungen I
1.1 Weshalb objektorientiert?
1.2 Weshalb Java? 1
1.3 Wie lernt man Programmieren? 2
1.4 Zum Gebrauch des Buchs 3
1.5 Was man zum Programmieren mit Java alles braucht 5
1.6 Die ersten Schritte 9
2 Was ist Programmierung? 15
2.1 Programmieren heißt, Algorithmen zu entwerfen 15
2.2 Programmieren heißt, Systeme zu bauen 23
2.3 Von Systemen im Allgemeinen zu objektorientierten Softwaresystemen 26
3 Die ersten Programme 33
3.1 Objekte werden aus Klassen gemacht 33
3.2 Die Klasse IntIO ist vielfach verwendbar 42
3.3 Methoden benutzen, die Werte zurückliefern 45
3.4 Hilfskiassen programmieren 49
4 Steueranweisungen benutzen 59
4.1 Verzweigungen 59
4.2 Schleifen 68
4.3 Eine Simulationsanwendung 72
4.4 Fallstudie: Simulation eines Geldautomaten 85
5 Variablen und was damit zusammenhängt 89
5.1 Wir machen uns ein Bild von einer Variablen 89
5.2 Was Zuweisungen bewirken 90
5.3 Sichtbarkeit und Zugriff 95
5.4 Variablen innerhalb von Methoden: lokale Variablen 95
VIII Inhalt
5.5 Variablen außerhalb von Methoden 99
5.6 Initialisierung von Variablen 102
5.7 Wenn Variablen sich verbergen ~ 103
6 Steueranweisungen: Vertiefung 105
6.1 Verzweigungen, ineinander geschachtelt 105
6.2 Mehrfachauswahl 112
6.3 Weitere Schleifentypen 114
6.4 Endlosschleifen und die Anweisung break 117
6.5 Geschachtelte Schleifen 118
6.6 Wie löst man ein Programmierproblem? 121
7 Rekursion ~ 125
7.1 Rekursive Definitionen 125
7.2 Rekursive Methoden 126
7.3 Missbrauch der Rekursion: die Methode fi bonacci 129
7.4 Rekursion oder Iteration? 130
8 Klassenmethoden und Klassenvariablen 133
8.1 Wofilr braucht man Klassenvariablen? 133
8.2 Wofilr braucht man Klassenmethoden? 135
8.3 Eine ausfilhrbare Klasse, die zugleich Bibliotheksklasse ist 140
9 Datenbehälter 145
9.1 Arrays 145
9.2 Weitere Datenbeh1ilter 155
9.3 Die Bibliotheksklasse Stack 157
9.4 Ein selbst gestrickter Datenbehälter: Konfliktgraph ~ 159
10 Vererbung 171
10.1 Wofilr braucht man Vererbung? Praxisbeispiele 171
10.2 Ein einfaches Beispiel 174
10.3 Polymorphie 178
10.4 Ein Beispiel mit Datenbehälter 180
10.5 Typumwandlungen 182
10.6 Die Klasse Object: Wurzel der Java-Klassenhierarchie 185
10.7 Klassen, die sich nicht beerben lassen 186
Inhalt IX
11 Graphische BenutzeroberflAchen und Ereignisverarbeitung 189
11.1 Die Klassenbibliotheken AW T und Swing 189
11.2 Verwendung eines Anwendungsfensters (Frame) 190
11.3 Layoutgestaltung: Layout-Manager 192
11.4 Prinzipien der Ereignisverarbeitung 200
11.5 Hörerklassen als innere Klassen schreiben 202
11.6 Elemente neu ordnen: das Programm Wechsel 206
11.7 Variante: ausfiihrbare Klasse beerbt Frame 209
12 Fallstudien 213
12.1 Verschiebespiel 213
12.2 Postfix-Rechner 226
13 Ausnahmebehandlung - ein Mittel zur Verbesserung der Robustheit 239
13.1 Das Problem: Fehler fuhren zu Abstürzen 239
13.2 Ausnahmebehandlung - die Anweisung try 240
13.3 Abfangen oder weitergeben - das ist hier die Frage 243
14 Persistenz -Daten dauerhaft speichern 247
14.1 Persistenz in Java 247
14.2 Die Schnittstelle Seri al i zab 1e 248
14.3 Ein Roboter mit speicherbarem Zustand 249
14.4 Wenn diese Art von Speicherung nicht ausreicht 255
II Referenz
15 Sprachreferenz 257
Metasprachliche Symbole 257
Schlüsselwörter (reservierte Wörter) 257
Kommentare 258
Datentypen 258
Primitive Datentypen 259
Operatorrangfolge und Assoziativität 261
Arrays 262
Klassen 263
Konstruktoren 264
x Inhalt
Methoden 265
Datenfelder 266
Anweisungen und Ausdrücke 268
Blöcke (Anweisungsverbünde, Verbundanweisungen) 268
Zuweisungen 269
Inkrementierungs-und Dekrementierungsoperatoren 270
Die return-Anweisung 271
Verzweigungen (iflelse-Anweisung) 272
Schleifen 273
Mehrfachauswahl (switch-Anweisung) 276
Ausnahmen und die Möglichkeiten ihrer Behandlung 277
Ausnahmebehandlung durch Abfangen: die try-Anweisung 278
Ausnahmebehandlung durch Weitergeben: die throws-Klausel 280
Typumwandlungen (Casting) 280
Konventionen 281
Unicode und Escape-Sequenzen 282
16 Bibliotheksklassen benutzen und anlegen 285
Bibliotheksklassen benutzen 285
Selbst Klassenbibliotheken anlegen 289
17 Ausgewählte Bibliotheksklassen 293
Klassejava.1ang.String 293
Klasse java.1 ang. Math 294
Klasse java.1 ang. Integer 294
Klasse java. 1a ng. Doub 1e 295
Klasse IntIO 295
Klassen fUr graphische Benutzeroberflächen - Überblick 297
18 Wichtige Werkzeuge des JDKlSDK 299
Voraussetzungen fUr den Gebrauch der Werkzeuge 299
Übersetzen mit dem Compiler javac 299
Ein Programm ausfUhren mit dem Interpreter java 301
Dateien komprimieren mit jar 301
Dokumentieren mit javadoc 302