Louis / Müller | Java | E-Book | sack.de
E-Book

E-Book, Deutsch, 389 Seiten

Louis / Müller Java

Eine Einführung in die Programmierung

E-Book, Deutsch, 389 Seiten

ISBN: 978-3-446-45362-3
Verlag: Carl Hanser
Format: PDF
Kopierschutz: Wasserzeichen (»Systemvoraussetzungen)



Der Java-Klassiker im neuen Gewand!


Steigen Sie ein in die faszinierende Welt der Java-Programmierung und lernen Sie, wie Sie Ihre Ideen Schritt für Schritt umsetzen.


Hier lernen Sie, wie Sie mit Java programmieren und
- wie Sie Ihre Entwicklungsumgebung richtig einrichten,
- wie Sie Ihren Programmquelltext sinnvoll organisieren,
- wie Sie objektorientiert programmieren,
- wie Sie Java-Programme mit grafischen Benutzeroberflächen aus Fenstern, Dialogen, Steuerelementen und Menüs schreiben,
- wie Sie einen eigenen Texteditor, ein Malprogramm, einen Bildbetrachter oder andere typische Programme schreiben können,
- wie Sie von Java-Programmen aus auf die Daten in einer Datenbank zugreifen.


Mit vielen Beispielen und Übungen und behandelt auch Grafik, Datenbanken und Threads


Die Mischung macht´s! Lernen Sie mit einfachen didaktischen, nützlichen und unterhaltsamen Programmen. Erzeugen Sie individuelle, interaktive Oberflächen. Lassen Sie sich zu eigenen Ideen anregen!
Louis / Müller Java jetzt bestellen!

Autoren/Hrsg.


Weitere Infos & Material


1;Inhalt;7
2;Vorwort;13
3;1 Bevor es losgeht;15
3.1;1.1 Was ist Java? –Teil I;15
3.2;1.2 Was ist ein Programm?;17
3.3;1.3 Wie werden Programme erstellt?;19
3.4;1.4 Von Compilern und Interpretern;19
3.5;1.5 Was ist Java? – Teil II;20
3.6;1.6 Vorbereitung zum Programmieren;23
4;2 Der erste Kontakt;29
4.1;2.1 Die erste Java-Anwendung;29
4.2;2.2 Zusammenfassung;36
4.3;2.3 Fragen und Antworten;36
4.4;2.4 Übungen;36
5;3 Von Daten, Operatoren und Objekten;37
5.1;3.1 Variablen und Anweisungen;37
5.2;3.2 Operatoren;45
5.3;3.3 Typumwandlung;48
5.4;3.4 Objekte und Klassen;51
5.5;3.5 Arrays;62
5.6;3.6 Vordefinierte Klassen und Pakete;64
5.7;3.7 Zusammenfassung;65
5.8;3.8 Fragen und Antworten;66
5.9;3.9 Übungen;67
6;4 Programmfluss und Fehlererkennung mit Exceptions;69
6.1;4.1 Die Axiomatik des Programmablaufs;69
6.2;4.2 Modularisierung durch Klassen und Methoden;70
6.3;4.3 Kontrollstrukturen;80
6.4;4.4 Fehlerbehandlung durch Exceptions;91
6.5;4.5 Zusammenfassung;95
6.6;4.6 Fragen und Antworten;96
6.7;4.7 Übungen;97
7;5 Objektorientierte Programmierung mit Java;99
7.1;5.1 Vererbung;99
7.2;5.2 Methoden (Klassenfunktionen);107
7.3;5.3 Variablen- und Methodensichtbarkeit;112
7.4;5.4 Innere Klassen;120
7.5;5.5 Mehrfachvererbung und Schnittstellen;121
7.6;5.6 Zusammenfassung;125
7.7;5.7 Fragen und Antworten;125
7.8;5.8 Übungen;127
8;6 Ein- und Ausgabe;129
8.1;6.1 Streams;129
8.2;6.2 Ausgaben auf den Bildschirm;130
8.3;6.3 Ausgabe in Dateien;135
8.4;6.4 Eingaben von Tastatur;138
8.5;6.5 Aus Dateien lesen;141
8.6;6.6 Ein wichtiger Punkt: korrekte Exception-Behandlung;143
8.7;6.7 Rund um Strings;145
8.8;6.8 Zusammenfassung;152
8.9;6.9 Fragen und Antworten;152
8.10;6.10 Übungen;153
9;7 Collections und weitere nützliche Klassen;155
9.1;7.1 Zufallszahlen erzeugen;155
9.2;7.2 Zeit- und Datumsangaben;157
9.3;7.3 Zeichenfolgen zerlegen;160
9.4;7.4 Komplexe Datenstrukturen (Collections);161
9.5;7.5 Algorithmen;171
9.6;7.6 Zusammenfassung;173
9.7;7.7 Fragen und Antworten;173
9.8;7.8 Übungen;174
10;8 Grundlagen der GUI-Programmierung;175
10.1;8.1 Der GUI-Reiseführer;176
10.2;8.2 Aufbau einer GUI-Anwendung;177
10.3;8.3 Das Ereignis-Modell des AWT;182
10.3.1;8.3.1 java.awt.event importieren;185
10.3.2;8.3.2 Ereignislauscher definieren;185
10.3.3;8.3.3 Lauscher für Quelle registrieren;186
10.3.4;8.3.4 Adapter;187
10.3.5;8.3.5 Einige abschließende Anmerkungen;189
10.4;8.4 Chamäleon sein mit UIManager und Look&Feel;191
10.5;8.5 Ein umfangreicheres Beispiel;192
10.6;8.6 Zusammenfassung;193
10.7;8.7 Fragen und Antworten;194
10.8;8.8 Übungen;195
11;9 Grafik, Grafik, Grafik;197
11.1;9.1 Das Arbeitsmaterial des Künstlers;197
11.2;9.2 Erweitertes Layout mit Panel-Containern;206
11.3;9.3 Kreise, Rechtecke und Scheiben;208
11.4;9.4 Freihandlinien;212
11.5;9.5 Noch mehr Grafik mit Java2D;215
11.6;9.6 Zusammenfassung;219
11.7;9.7 Fragen und Antworten;220
11.8;9.8 Übungen;221
12;10 Bilder, Bilder, Bilder;223
12.1;10.1 Der Bildbetrachter;223
12.2;10.2 Dateien öffnen und speichern: die Klasse JFileChooser;228
12.3;10.3 Laden und Anzeigen von Bildern;230
12.4;10.4 Zusammenfassung;233
12.5;10.5 Fragen und Antworten;234
12.6;10.6 Übungen;234
13;11 Text, Text, Text;235
13.1;11.1 Ein Texteditor;235
13.2;11.2 Umgang mit Text: JTextField, JTextArea und JTextPane;236
13.3;11.3 Kombinationsfelder;242
13.4;11.4 Eigene Dialoge;245
13.5;11.5 Nach Textstellen suchen;249
13.6;11.6 Unterstützung der Zwischenablage;251
13.7;11.7 Drucken;253
13.8;11.8 Zusammenfassung;255
13.9;11.9 Fragen und Antworten;255
13.10;11.10 Übungen;256
14;12 Menüs und andere Oberflächenelemente;257
14.1;12.1 Die Komponentenhierarchie;257
14.2;12.2 Die Basisklasse Component;258
14.3;12.3 Statische Textfelder (JLabel);260
14.4;12.4 Schaltflächen (JButton);262
14.5;12.5 Eingabefelder (JTextField und JTextArea);263
14.6;12.6 Optionen (JCheckBox, JRadioButton);266
14.7;12.7 Listen- und Kombinationsfelder (JList und JComboBox);268
14.8;12.8 Bildlaufleisten (JScrollBar);270
14.9;12.9 Menüleisten (JMenubar);272
14.10;12.10 Zusammenfassung;274
14.11;12.11 Fragen und Antworten;275
14.12;12.12 Übungen;275
15;13 Threads und Animation;279
15.1;13.1 Multithreading mit Java;279
15.2;13.2 Eigene Threads erzeugen: die Klasse Thread;282
15.3;13.3 Eigene Threads erzeugen: die Runnable-Schnittstelle;285
15.4;13.4 Wissenswertes rund um Threads;287
15.5;13.5 Threads und Animation I;289
15.6;13.6 Threads und Animation II;293
15.6.1;13.6.1 SwingWorker;294
15.7;13.7 Zusammenfassung;298
15.8;13.8 Fragen und Antworten;299
15.9;13.9 Übungen;299
16;14 Sound;301
16.1;14.1 Was ist eine URL?;301
16.2;14.2 Sounddateien abspielen;302
16.3;14.3 Wiedergabe von MP3;303
16.4;14.4 Tonerzeugung mit MIDI;304
16.4.1;14.4.1 Abspielen einer MIDI-Datei;304
16.4.2;14.4.2 Selber Musik machen;305
16.5;14.5 Zusammenfassung;306
16.6;14.6 Fragen und Antworten;307
16.7;14.7 Übungen;307
17;15 Die Datenbankschnittstelle JDBC;309
17.1;15.1 Datenbanken-ABC;309
17.2;15.2 Die JDBC-Schnittstelle;311
17.3;15.3 Vorbereitung für JavaDB;312
17.4;15.4 Zugriff auf eine Datenbank;312
17.4.1;15.4.1 Verbindungsaufbau;313
17.4.2;15.4.2 Lese- und Schreiboperationen durchführen;313
17.4.3;15.4.3 Verbindung schließen;315
17.5;15.5 Zusammenfassung;318
17.6;15.6 Fragen und Antworten;319
17.7;15.7 Übungen;319
18;16 Was wir noch erwähnen wollten;321
18.1;16.1 Aufzählungen (enum);321
18.1.1;16.1.1 Definition;322
18.1.2;16.1.2 Variablen definieren;322
18.1.3;16.1.3 Aufzählungskonstanten vergleichen;322
18.1.4;16.1.4 Aufzählungen und switch;323
18.1.5;16.1.5 Aufzählungen und for;323
18.2;16.2 Lambda-Ausdrücke;324
18.3;16.3 Java Generics;325
18.3.1;16.3.1 Einleitung;325
18.3.2;16.3.2 Syntax;326
18.3.3;16.3.3 Eingeschränkte Platzhalter;328
18.3.4;16.3.4 Parameter und Variablen von generischen Typen;328
18.4;16.4 Jar-Archive;329
18.5;16.5 Module;330
18.6;16.6 Die Zukunft wird zeigen, wie sich die Java-Modularisierung weiterentwickeln wird. Bleiben Sie gespannt! Debuggen;332
18.6.1;16.6.1 Grundsätzliches Vorgehen;333
18.7;16.7 Anwendungen weitergeben;334
18.7.1;16.7.1 Ohne JRE geht es nicht;334
18.7.2;16.7.2 Java-Anwendungen ausführen: von .class bis .exe;336
19;Anhang A: Lösungen;339
20;Anhang B: Installation des JDK;355
20.1;B.1 Installation;356
20.2;B.2 Anpassen des Systems;358
20.2.1;B.2.1 Erweiterung des Systempfads;358
20.2.2;B.2.2 Installation testen;360
20.2.3;B.2.3 Setzen des Klassenpfads;361
20.3;B.3 Die Java-Dokumentation;362
20.4;B.4 Wo Sie weitere Hilfe finden;363
21;Anhang C: Schlüsselwörter;365
22;Anhang D: Java-Klassenübersicht;367
22.1;D.1 java.io;367
22.2;D.2 java.lang;368
22.3;D.3 java.applet;368
22.4;D.4 java.awt;369
22.5;D.5 java.awt.event;370
22.6;D.6 java.awt.geom;371
22.7;D.7 java.net;371
22.8;D.8 java.sql;372
22.9;D.9 javax.sound.midi;372
22.10;D.10 javax.swing;373
22.11;D.11 java.util;374
23;Anhang E: Literatur und Adressen;375
23.1;E.1 Bücher;375
23.2;E.2 Zeitschriften;376
23.3;E.3 Ressourcen im Internet;377
24;Anhang F: Das Material zum Buch;379
25;Index;381
26;Leere Seite;2


1 Bevor es losgeht Ich weiß, ich weiß – Sie sitzen vor Ihrem Bildschirm, haben bereits Ihre Java-Entwicklungsumgebung installiert, brennen darauf, Ihr erstes Java-Programm zu schreiben, und sind einigermaßen ungehalten, sich erst noch durch etliche Seiten theoretischer Ausführungen quälen zu müssen. Müssen Sie nicht! Wenn Sie Ihre Entwicklungsumgebung schon eingerichtet haben und mit der Programmerstellung prinzipiell vertraut sind, überspringen Sie dieses Kapitel einfach. Nur wenn Sie ein absoluter Neuling in der Programmierung sind oder von Java nicht viel mehr wissen, als dass es eine Programmiersprache ist, sollten Sie dieses Kapitel unbedingt vorab durchlesen. Alle anderen können nach Bedarf auch noch später hierher zurückkehren. 1.1 Was ist Java? – I. Teil Java ist heute eine der führenden Programmiersprachen, vielleicht die wichtigste Programmiersprache überhaupt. Programmierer weltweit schätzen Java für seine Robustheit, seine Vielseitigkeit, die problemlose Portierbarkeit seiner Anwendungen und, und, und. Portierung bedeutet, dass ein Programm von einem Rechner auf einen anderen Rechner verschoben und ausgeführt wird. Entstanden ist Java 1993 als Forschungsprojekt der Firma Sun, wobei schon auf diverse Vorarbeiten zurückgegriffen werden konnte. Der konkrete Anlass war der einsetzende Boom des World Wide Web, das nach einer geeigneten Programmiersprache verlangte. Java ist vor diesem Hintergrund zu betrachten und quasi ideal für den Einsatz im Internet – sei es, dass man seine Programme über das Internet vertreiben möchte, sei es, dass man Programme für Webseiten schreiben möchte, oder sei es, dass man über das Internet verteilte Anwendungen implementieren möchte. Wie steht es in diesem Zusammenhang mit der Verwandtschaft von Java zu den anderen Programmiersprachen? Man entwickelt schließlich keine neue Programmiersprache, ohne die eigenen Erfahrungen mit den etablierten Programmiersprachen einfließen zu lassen. Nun, C++-Programmierer wird es freuen zu hören, dass Java stark an C++ angelehnt ist. Die Gründe hierfür sind zweifellos in der Objektorientierheit, der Schnelligkeit und der Leistungsfähigkeit von C++ zu suchen, aber natürlich auch in der traditionellen Bedeutung dieser Sprache. Allerdings hat Java viel unnötigen Ballast, den C++ mit sich schleppt, abgeworfen und ist dadurch wesentlich einfacher zu erlernen und zu programmieren. Diese Entschlackung dient nicht nur der Entlastung des Programmierers, sondern soll vor allem auch die Entwicklung »sicherer« Programme gewährleisten. Natürlich liegt die Verantwortung für die Sicherheit der Anwendungen deswegen letztendlich immer noch beim Programmierer. Je komplizierter und undurchsichtiger die Konzepte einer Sprache aber sind, umso wahrscheinlicher ist es, dass der Programmierer unbeabsichtigt Fehler einbaut. In Java hat man dies erkannt und beispielsweise die gesamte Zeigerprogrammierung und die dynamische Speicherverwaltung aus den Händen des Programmierers genommen und Compiler und Interpreter übertragen. Und wie steht es mit C#? Die Sprache C# ist im Grunde nichts anderes als eine Trotzreaktion auf Java. Microsoft wollte nämlich ursprünglich eine eigene Java-Variante etablieren, was dem Konzern aber gerichtlich verboten wurde. Danach konzipierte man eine ganze neue Sprache, eben C#, die aber eine verblüffende Ähnlichkeit mit Java aufweist. Umsteigern von C# wird also vieles bekannt vorkommen. Falls Sie schon C++ beherrschen – die folgenden Konzepte gibt es in Java nicht: Zeiger (die dynamische Speicherverwaltung wird intern vorgenommen) Funktionen (statt alleinstehender Funktionen gibt es nur noch Methoden (Elementfunktionen) von Klassen) Strukturen und Unions Arrays und Zeichenfolgen gibt es nur als Objekte Typendefinition (typedef) Mehrfachvererbung (nur in gemäßigter Form) Überladung von Operatoren Java deshalb als Schmalspur-C++ zu bezeichnen, wäre aber völlig falsch. Von der Leistungsfähigkeit her steht Java C++ kaum in etwas nach. Betrachtet man obige Liste etwas genauer, lässt sich feststellen, dass viele Konzepte, die C++ von C übernommen hat, zugunsten einer konsequenteren objektorientierten Programmierung aufgegeben wurden (dies betrifft die Sprachelemente 2 bis 5, die alle im Klassenkonzept aufgegangen sind). Java ist daher mittlerweile die Standardprogrammiersprache an allen US-amerikanischen Universitäten und auch an deutschen Universitäten allgegenwärtig. Andererseits wurde auf bestimmte objektorientierte Konzepte (Punkte 6 und 7), die im Wesentlichen der Wiederverwertung objektorientierten Quellcodes dienen, aber für Einsteiger (und auch oft noch für Fortgeschrittene) manchmal schwierig zu handhaben sind, verzichtet. Was geblieben ist, ist eine relativ leicht zu erlernende, konsequent objektorientierte Sprache, die Ihnen einiges zu bieten hat: Objektorientiertheit, statische Typbindung, aber späte Methodenbindung, dynamische Speicherverwaltung und Garbage Collection, Multithreading, Exception-Behandlung. Achtung! Verwechseln Sie Java nicht mit JavaScript. JavaScript wurde von Netscape entwickelt und als Erweiterung des HTML-Standards implementiert. Die JavaScript-Syntax ist an Java angelehnt, doch damit hört die Verwandtschaft zu Java auch schon auf. Mit Java können Sie echte eigenständige Programme schreiben (das Thema dieses Buchs), Sie können Java-Servlets schreiben, die dynamische Webseiten erzeugen, und Sie können spezielle Java-Module erzeugen, sogenannte Applets, die in Webseiten eingebettet und von Browsern mit installiertem Java-Plug-in ausgeführt werden können (früher eine Sensation, heute kaum noch von Bedeutung). Dagegen dient JavaScript-Code allein der Dynamisierung von Webseiten, weswegen der Code auch direkt in den HTML-Code eingefügt und vom Browser interpretiert wird (sofern die JavaScript-Unterstützung nicht ausgeschaltet wurde). 1.2 Was ist ein Programm? Prinzipiell sind Programme nichts anderes als eine Folge von Befehlen, die an einen Computer gerichtet sind und von diesem befolgt werden. Im Grunde genommen funktionieren Programme also genauso wie Kochrezepte: Sie als Programmierer sind der Koch, der das Buch schreibt. Jedes Kochrezept entspricht einem Programm und der Computer, der Ihre Programme ausführt, ist der Leser. Bild 1.1 Analogie zwischen Programmen und Kochrezepten Leider ist die Realität wie üblich etwas komplizierter als das Modell. Im Falle des Kochrezepts können wir einfach davon ausgehen, dass Schreiber und Leser die gleiche Sprache sprechen. Im Falle des Programmierers und des Computers ist dies natürlich nicht der Fall, denn Sie als Programmierer sprechen an sich Deutsch und der Computer spricht … ja, welche Sprache versteht eigentlich ein Computer? Ich wünschte, Sie hätten diese Frage nicht gestellt, denn die Antwort ist äußerst unerfreulich. Der Computer, in diesem Fall sollte man genauer von dem Prozessor des Computers sprechen, versteht nur einen ganz begrenzten Satz elementarer Befehle – den sogenannten Maschinencode, der zu allem Unglück noch binär codiert ist und daher als eine Folge von Nullen und Einsen vorliegt. Können Sie sich vorstellen, Ihre Programme als Folge von Nullen und Einsen zu schreiben? Wahrscheinlich genauso wenig, wie Ihr Computer in der Lage ist, Deutsch zu lernen. Wir haben also ein echtes Verständigungsproblem. Um dieses zu lösen, müssen Sie – als der Intelligentere – dem Computer schon etwas entgegenkommen. Kehren wir noch einmal zu unserem Kochbuch zurück und stellen Sie sich vor, ein Chinese würde ein Kochbuch schreiben, das auf dem deutschen Buchmarkt erscheinen soll. Zwar findet der Chinese keinen geeigneten Übersetzer, der das Buch ordentlich vom Chinesischen ins Deutsche übersetzen könnte, aber er erinnert sich seiner Englischkenntnisse, die für ein Kochbuch absolut ausreichend sein sollten. Er schreibt also sein Buch in Englisch und lässt es dann von einem Übersetzer ins Deutsche übertragen. Gleiches geschieht...


Ihre Fragen, Wünsche oder Anmerkungen
Vorname*
Nachname*
Ihre E-Mail-Adresse*
Kundennr.
Ihre Nachricht*
Lediglich mit * gekennzeichnete Felder sind Pflichtfelder.
Wenn Sie die im Kontaktformular eingegebenen Daten durch Klick auf den nachfolgenden Button übersenden, erklären Sie sich damit einverstanden, dass wir Ihr Angaben für die Beantwortung Ihrer Anfrage verwenden. Selbstverständlich werden Ihre Daten vertraulich behandelt und nicht an Dritte weitergegeben. Sie können der Verwendung Ihrer Daten jederzeit widersprechen. Das Datenhandling bei Sack Fachmedien erklären wir Ihnen in unserer Datenschutzerklärung.