Table Of ContentJava als erste Programmiersprache
Joachim Goll (cid:129) Cornelia Heinisch
Java als erste
Programmiersprache
Ein professioneller Einstieg
in die Objektorientierung mit Java
7. Aufl age
Prof. Dr. Joachim Goll
Cornelia Heinisch
Esslingen, Deutschland
ISBN 978-3-8348-1857-7 ISBN 978-3-8348-2270-3 (eBook)
DOI 10.1007/978-3-8348-2270-3
Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografi e;
detaillierte bibliografi sche Daten sind im Internet über http://dnb.d-nb.de abrufb ar.
Springer Vieweg
© Springer Fachmedien Wiesbaden 2000, 2001, 2002, 2005, 2007, 2011, 2014
Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Jede Verwertung, die nicht aus-
drücklich vom Urheberrechtsgesetz zugelassen ist, bedarf der vorherigen Zustimmung des Verlags. Das
gilt insbesondere für Vervielfältigungen, Bearbeitungen, Übersetzungen, Mikroverfi lmungen und die Ein-
speicherung und Verarbeitung in elektronischen Systemen.
Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Werk
berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der
Warenzeichen- und Markenschutz-Gesetzgebung als frei zu betrachten wären und daher von jedermann
benutzt werden dürft en.
Gedruckt auf säurefreiem und chlorfrei gebleichtem Papier
Springer Vieweg ist eine Marke von Springer DE.
Springer DE ist Teil der Fachverlagsgruppe Springer Science+Business Media.
www.springer-vieweg.de
Vorwort
Die Sprache Java ist durch ihre Betriebssystemunabhängigkeit ideal für die Reali-
sierung verteilter Systeme, die aus verschiedenartigsten Rechnern vom Handy bis
zum Großrechner aufgebaut sein können. Java wird heute bereits im Informatik-
Unterricht an den Gymnasien unterrichtet und ist fester Bestandteil des Studiums von
Ingenieuren und Betriebswirten geworden.
Java stellt im Grunde genommen eine einfache Sprache dar. Darüber hinaus werden
jedoch in umfangreichen Klassenbibliotheken wertvolle und weitreichende Hilfsmittel
zur Verfügung gestellt, die den Bau verteilter Systeme mit Parallelität, Oberflächen,
Kommunikationsprotokollen und Datenbanken in erheblichem Maße unterstützen.
Dieses Buch konzentriert sich auf die Sprache und nicht auf den Bau verteilter Sys-
teme. Es wendet sich an Studierende, Umsteiger und Schüler, welche das Interesse
haben, die Grundlagen von Java fundiert zu erfahren. Es erlaubt, Java ohne Vor-
kenntnisse anderer Programmiersprachen zu erlernen. Daher lautet der Titel "Java
als erste Programmiersprache". Wer das Buch nur lesen möchte, sollte aber bereits
über die Kenntnisse einer anderen Programmiersprache verfügen. Ein Neuling sollte
unbedingt die Übungsaufgaben am Ende eines Kapitels bearbeiten.
Dieses Buch hat das ehrgeizige Ziel, dem Neuling die Sprachkonzepte von Java, die
Grundkonzepte der objektorientierten Programmierung und die für die Sprache Java
wichtigen Teile der Klassenbibliothek so präzise wie möglich und dennoch in leicht
verständlicher Weise vorzustellen. Dabei werden Fortgeschrittenen-Themen als
solche explizit ausgewiesen, damit ein Anfänger sich zunächst auf die Grundlagen
von Java konzentrieren kann. Ausgehend von dieser Basis können darauf aufbauend
die fortgeschrittenen Themen erschlossen werden.
Alle Kapitel enthalten Übungsaufgaben, die zum selbstständigen Programmieren he-
rausfordern. Selbstständig Modellieren und Programmieren ist das Ziel des Flugha-
fen-Projekts, welches begleitend zu den Kapiteln 10 bis einschließlich 22 durchge-
führt werden kann und zu einem System führt, das die Fluglotsen bei Start und Lan-
dung von Flugzeugen unterstützt.
Das Buch enthält die wesentlichen Neuerungen zu Java 7, u. a. das automatische
Ressourcen-Management, das Ressourcen wie z. B. Streams oder Datenbankver-
bindungen nach Gebrauch automatisch von der Java-Virtuellen Maschine schließen
lässt. Ferner werden die in Java 7 hinzugekommenen Erweiterungen beim Exception
Handling behandelt, wie z. B. das Fangen mehrerer Exceptions in einem einzigen
-Block (Multi-catch Exceptions), das verbesserte Weiterwerfen von Exceptions
catch
oder unterdrückte Exceptions. Auch kleinere Änderungen in Java 7, wie binäre
Literale oder der Diamant-Operator, sind im Buch enthalten. Einen Überblick über die
in diesem Buch integrierten Java 7-Neuerungen erhalten Sie am besten durch
Nachschlagen des Eintrages "Java 7" im Index.
Auf viele Details von Java kann wegen des Umfangs des Buchs leider nicht einge-
gangen werden. Die zentralen Themen der Sprache sind jedoch im Buch erfasst. Auf
die Java Language Specification unter der Internet-Adresse
http://docs.oracle.com/javase/specs/
wird verwiesen.
Es soll hier nicht unerwähnt bleiben, dass die Java-Klassenbibliothek ca. 4000 Klas-
sen umfasst. Hierzu treten noch zahlreiche kommerzielle bzw. offene Bibliotheken
beispielsweise für einen komfortablen Zugriff auf Datenbanken oder das Einlesen
und Erzeugen von -Dateien.
xml
Unser besonderer Dank bei dieser Auflage gilt Herrn Martin Hiller, Herrn Ansgar
Hoffmann, Herrn Paul Krohmer und Herrn Markus Schuler, die jeweils an der
Überarbeitung mehrerer Kapitel wesentlich mitgewirkt haben. Herrn Markus Bach,
Herrn Dimitri Benin, Herrn Matthias Nemeth, Herrn Dr. Andreas Rau, Herrn Joachim
Spieth und Frau Karin Weiß danken wir für die Durchsicht einzelner Kapitel sowie
Herrn Erath für strategische Diskussionen. Herr Steffen Wahl und Frau Jennifer
Rauscher haben das Konfigurationsmanagement in professioneller Weise durch-
geführt.
Esslingen, im September 2013 J. Goll / C. Heinisch
Wegweiser durch das Buch
Das Buch umfasst 2 Teile:
Teil I: Objektorientierung und Grundkurs Java
Teil II: Grundlegende Java-Bibliotheken
"Lernkästchen", auf die grafisch durch eine kleine Glühlampe aufmerk-
sam gemacht wird, weisen auf für das Verständnis wichtige Aspekte
eines Kapitels hin. Die Zusammenfassung eines jeden Kapitels erlaubt
eine rasche Wiederholung des Stoffes.
"Warnkästchen" hingegen weisen den Leser zum einen auf gerne
begangene Fehler hin, zum anderen warnen sie den Leser vor einer Vorsicht!
Fehlinterpretation des Textes an "gefährlichen" Stellen des Buchs.
Gerade ein Anfänger in einer Programmiersprache macht gerne den Fehler, sich
beim Lesen an nicht ganz so wesentlichen Einzelheiten festzubeißen. Damit ein
Leser des Buchs leichter erkennen kann, welche Information grundlegend für das
weitere Vorankommen ist und welche Information nur ein Detailwissen darstellt – und
deshalb auch noch zu einem späteren Zeitpunkt vertieft werden kann – gibt dieses
Buch eine einfache Hilfestellung. Es weist Kapitel oder Kapitelteile, die beim ersten
Lesen des Buchs übersprungen werden können, mit dem "Überspringe und komm
zurück"-Symbol aus.
Generell ist es empfehlenswert, ein oder mehrere Kapitel zu überfliegen, um sich
einen Überblick zu verschaffen, und dann erst mit der Feinarbeit zu beginnen und
gründlicher zu lesen. Dennoch gilt: Eine Vorgehensweise, die sich für den einen
Leser als optimal erweist, muss noch lange nicht für alle Leser das Allheilmittel
darstellen. Wenn Sie zu den Lesern gehören, die es gewohnt sind, von Anfang an
möglichst gründlich zu lesen, um möglichst viel sofort zu verstehen, so sollten Sie
zumindest darauf achten, dass Sie in den Kapiteln mit dem "Überspringe und komm
zurück"-Symbol beim ersten Durchgang nicht allzu lange verweilen.
Bei all den guten Ratschlägen gilt: Programmieren hat man zu allen Zeiten durch
Programmierversuche erlernt. "Do it yourself" heißt der Schlüssel zum Erfolg. So wie
ein Kleinkind beim Erlernen der Muttersprache einfach zu sprechen versucht, so
sollten auch Sie möglichst früh versuchen, in der Programmiersprache zu sprechen –
das heißt, eigene Programme zu schreiben. Gestalten Sie den Lernvorgang ab-
wechslungsreich – lesen Sie einen Teil und versuchen Sie, das Erlernte beim Pro-
grammieren gleich umzusetzen. Die Beispielprogramme des Buches können zum
Ausprobieren auf der Internetseite des Verlags unter www.springer-vieweg.de bezo-
gen werden. Die Internetseite enthält auch die Bilder der einzelnen Kapitel, die
Übungsaufgaben und Lösungen sowie das Flughafenprojekt. Aber bitte versuchen
Sie zuerst selbst, die Aufgaben alleine zu lösen.
Die nachfolgende Tabelle soll es dem Leser erleichtern, einzuordnen, welche Kapitel
zu den Grundlagen (Symbol ) zählen und auf jeden Fall verstanden werden sollten,
welche Kapitel zuerst übersprungen werden können und dann bei Bedarf (Symbol )
gelesen werden sollten, sowie welche Kapitel rein fortgeschrittene Themen (Symbol
) behandeln, die unabhängig voneinander gelesen werden können. Hier die
erwähnte Tabelle:
Teil I: Objektorientierung und Grundkurs Java
1 Grundlagen der Programmierung
2 Objektorientierte Konzepte
3 Einführung in die Programmiersprache Java
4 Einfache Beispielprogramme
5 Lexikalische Konventionen
6 Datentypen und Variablen
7 Ausdrücke und Operatoren
8 Kontrollstrukturen
9 Blöcke und Methoden
10 Klassen und Objekte
11 Vererbung und Polymorphie
12 Pakete
13 Ausnahmebehandlung
14 Schnittstellen
15 Threads
16 Generizität
17 Geschachtelte Klassen
Teil II: Grundlegende Java-Bibliotheken
18 Collections
19 Ein-/Ausgabe und Streams
20 Applets
21 Sicherheit in Java
22 Oberflächenprogrammierung mit Swing
Anhang
A Der ASCII-Zeichensatz
B Gültigkeitsbereiche von Namen
C Die Klasse
System
D Die Java Reflection-API
E Annotationen
F -Dateien
jar
G Starke und schwache Referenzen
Die folgende Tabelle zeigt die online verfügbaren Kapitel:
23 Java Native Interface
24 Beans
25 Java-Tools
Schreibweise
In diesem Buch sind der Quellcode und die Ein-/Ausgabe von ganzen Beispiel-
programmen sowie einzelne Anweisungen und Ein-/Ausgaben in der Schriftart
geschrieben. Dasselbe gilt für Programmteile wie Variablennamen,
Courier New
Methodennamen etc., die im normalen Text erwähnt werden. Ziffern werden in Ein-
zelfällen ebenfalls in der Schriftart geschrieben, um sie vom Text
Courier New
deutlich abzugrenzen. Wichtige Begriffe im normalen Text sind fett gedruckt, um sie
hervorzuheben.
Ihre Verbesserungsvorschläge und kritischen Hinweise, die wir gerne annehmen,
erreichen uns via E-Mail:
[email protected]
Inhaltsverzeichnis
TEIL I: OBJEKTORIENTIERUNG UND GRUNDKURS JAVA .............. 1
1 GRUNDLAGEN DER PROGRAMMIERUNG ...................................... 4
1.1 Das erste Java-Programm ....................................................................... 4
1.2 Programme und ihre Abläufe ................................................................... 6
1.3 Entwurf mit Nassi-Shneiderman-Diagrammen ...................................... 13
1.4 Zeichen .................................................................................................. 19
1.5 Variablen ................................................................................................ 21
1.6 Datentypen ............................................................................................. 23
1.7 Zusammenfassung ................................................................................ 29
1.8 Übungen ................................................................................................ 31
2 OBJEKTORIENTIERTE KONZEPTE................................................ 34
2.1 Modellierung mit Klassen und Objekten ................................................ 34
2.2 Kapselung, Abstraktion und Information Hiding..................................... 44
2.3 Individuelle und geteilte Daten von Objekten in Java ............................ 46
2.4 Abstraktion und Brechung der Komplexität ........................................... 47
2.5 Erstes Programmbeispiel mit Objekten ................................................. 51
2.6 Flughafen-Projekt................................................................................... 54
2.7 Zusammenfassung ................................................................................ 66
2.8 Übungen ................................................................................................ 67
3 EINFÜHRUNG IN DIE PROGRAMMIERSPRACHE JAVA ............... 70
3.1 Sprachkonzepte von Java ..................................................................... 70
3.2 Eigenschaften von Java ......................................................................... 72
3.3 Die Java-Plattform ................................................................................. 73
3.4 Programmerzeugung und -ausführung .................................................. 77
3.5 Das Java Development Kit .................................................................... 82
3.6 Begriffe im Java-Umfeld ........................................................................ 86
3.7 Zusammenfassung ................................................................................ 87
3.8 Übungen ................................................................................................ 88
4 EINFACHE BEISPIELPROGRAMME ............................................... 92
4.1 Lokale Variablen, Ausdrücke und Schleifen .......................................... 92
4.2 Erzeugen von Objekten ......................................................................... 97
4.3 Initialisierung von Objekten mit Konstruktoren ...................................... 98
4.4 Schreiben von Instanzmethoden ......................................................... 102