Wolf-Gert Matthius Java fiir IT-Berufe
Wolf-Gert Matthius
Java fiir IT-Berufe
Aus dem Bereich IT erfolgreich lernen
Orundkura Alcorfthm.n und Dn.natrukturen In JAVA von Andreas Solymosi und Ulrich Grude Orundl.,.nd. Alcorfthm.n von Volker Heun Orundkura Pro,...mml.ren mit Delphi von Wolf-Gert Matthiius Orundkura VI.ual B .. le von Sabine Kamper VI.ual Ba.le fOr technl.eh. Anw.ndun,.n von JOrgen Radel Orundkura SmallblkObJ.ktorl.ntI.run, von Antan,an von Johannes Brauer Orundkura Softwar.Entwleklun, mit C++ von Dietrich May Orundkura JAVA von Dietmar Abts Aufb.ukura JAVA von Dietmar Abts Orundkura java-TechnoloJl.n von Erwin Merker ObJ.ktorl.ntl.rte Pro,...mml.run,ln JAVA von Otto Rauh Rechnerarchltektur von Paul Herrmann Orundkura Rel.tlon.l. Datenb.nken von Rene Steiner Orundkura D.tenb.nkentwurf von Helmut Jarosch Datenb.nk-EnJln .. r1n, von Alfred Moos Orundl.,en der Rechnerkommunlkatlon von Bernd SchOrmann Netze - Protokoll. - Spulflkatlonen von Alfred Olbrich Orundkura V.rtellt. Syatem. von Gunther Bengel Orundkura Mobile Kommunlkatlon .. yat.m. von Martin Sauter D .. Unux-Tutorl.I - lhr W., zum LPI-Zertlflkat von Helmut Pils Orundkura Wlrtachaftalnformatlk von Dietmar Abts und Wilhelm MOlder Orundkura Theoretlach. Informatlk von Gottfried Vossen und Kurt-Ulrich Witt
www.vieweg-it.de
An_ndunporl.ntlerte Wlrtaeh.ftalnformatlk von Paul Alpar, Heinz Lothar Grob, Peter Weimann und Robert Winter Bu.lne .. Intelllpnee - Orundl.,.n und praktlache Anw.ndun,en von Hans-Georg Kemper, Walid Mehanna und Garsten Unger Orundkura O •• chlftaproz .... M.n.pm.nt von Andreas Gadatsch Proze .. mod.lllerun, mit ARIS· von Heinrich Seidl meier ITIL kompakt und veratindlleh von Alfred Olbrich Orundk.ura Betrlebawlrtaehaftal.hre von Notger Carl, Rudolf Fiedler, William J6rasz und Manfred Kiesel MaaterkuralT-Controllln, von Andreas Gadatsch und Elmar Mayer Maaterkura Computercraflk und Bllclverarbeltun, von Alfred Nischwitz und Peter Haberacker Orundkura Medlenpataltun, von David Starmann Orundkura W.~,...mmlerun, von GOnter Pomaska W.~,...mml.run, von Oral Avcl, Ralph Trittmann und Werner Mellis Orundkura MySQL und PHP von Martin Pollakowski Orundkura SAP R/3· von Andre Maassen und Markus Schoenen PrOfunpvorbereltun, fOr IT-B.rut. von Manfred WOnsche j.v. lat .In. Spraeh. von Ulrich Grude SAp·-ceatOtzt •• Rechnuncaw· .. n von Andreas Gadatsch und Detlev Frick Mlddl.wareln jave von Steffen Heinzl und Markus Mathes Orundkura IT-Berut. von Andreas M. Bohm und Bettina Jungkunz Koat.ntrlprrechnun, mit SAP R/3· von Franz Klenger und Ellen Falk-Kalms M.aterkura Koat.nat.lI.nrechnun, mltSApe von Franz Klenger und Ellen Falk-Kalms Controllln, mit SAp· von Gunther Friedl, Christian Hilz und Burkhard Pedell JaY. fOr IT-Berute von Wolf-Gert Matthaus
Wolf-Gert Matthaus
Java fur IT-Berufe
Das Lehr- und Begleitbuch fur den Unterricht
~ vleweg
Bibliografische Information Der Deutschen Bibliothek Die Deutsche Bibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet Uber <http://dnb.ddb.de> abrufbar.
Das in diesem Werk enthaltene Programm-Material ist mit keiner Verpflichtung oder Garantie irgendeiner Art verbunden. Der Autor Ubernimmt infolgedessen keine Verantwortung und wird keine daraus folgende oder sonstige Haftung Ubernehmen, die auf irgendeine Art aus der Benutzung dieses ProgrammMaterials oder Teilen davon entsteht.
Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Werk berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne von Warenzeichen- und Markenschutz-Gesetzgebung als frei zu betrachten waren und daher von jedermann benutzt werden dUrfen.
Hochste inhaltliche und technische Qualitat unserer Produkte ist unser Ziel. Bei der Produktion und Auslieferung unserer BUcher wollen wir die Umwelt schonen: Dieses Buch ist auf saurefreiem und chlorfrei gebleichtem Papier gedruckt. Die EinschweiBfolie besteht aus Polyathylen und damit aus organischen Grundstoffen, die weder bei der Herstellung noch bei der Verbrennung Schadstoffe freisetzen.
1. Auflage November 2005
Aile Rechte vorbehalten © Friedr. Vieweg & Sohn Verlag/GWV Fachverlage GmbH, Wiesbaden 2005
Lektorat: Dr. Riccardo Mosena / Andrea BroBler
Der Vieweg-Verlag ist ein Unternehmen von Springer Science+Business Media. www.vieweg-it.de
Das Werk einschlieBlich aller seiner Teile ist urheberrechtlich geschUtzt. Jede Verwertung auBerhalb der engen Grenzen des Urheberrechtsgesetzes ist ohne Zustimmung des Verlags unzulassig und strafbar. Das gilt insbesondere fUr Vervielfaltigungen, Obersetzungen, Mikroverfilmungen und die Einspeicherung und Verarbeitung in elektronischen Systemen.
Konzeption und Layout des Umschlags: Ulrike Weigel, www.CorporateDesignGroup.de Umschlagbild: Nina Faber de.sign, Wiesbaden
ISBN -13:978-3-8348-0009-1 e-ISBN-13:978-3-322-82034-1 001: 10.1007/978-3-322-82034-1
Vorwort
Dieses Java-Einsteiger-Buch wurde fur die Auszubildenden in den neuen IT-Berufen geschrieben. SchUler und Studenten, fur die die Informatik kein Hauptfach darstellt, sind angesprochen. Es fuhrt schrittweise, konsequent und verstandlich in Java ein.
Da das Buch sich an Lemende ohne jegliche Vorkenntnisse wendet, beginnt es deshalb einfuhrend mit einer Klarung der Begriffe Programm und Programmiersprache, logischer und syntaktischer Fehler. Ein erstes, kleines Java-Programm wird geschrieben und zum Anlass genommen, die elementare Zweischritt-Technologie kennen zu lemen, mit der iiberall und kostenlos Java-Programmentwicklung vorgenommen werden kann.
Es folgen Hinweise auf hilfreiche Entwicklungswerkzeuge und ihre Bezugsmoglichkeiten, bevor dann in den Kapiteln 6 bis 11 erst einrnal grundlegend auf die klassische strukturierte Programmierung mit Java eingegangen wird. Alles dient dabei dem Ziel, das Basiswissen fur die spateren Kapitel aufzubauen. Dafur gibt es auch die in den Text eingestreuten Obungsaufgaben, deren Losungen sowohl am Ende des Buches angegeben als auch irn online-Service verfugbar sind.
Mit dem Kapitel 12 beginnt die intensive Beschaftigung mit dem Objektbegriff, denn bereits fur Zeichenfolgen besitzt Java keine einfachen Speicherplatze mehr.
Klasse und Konstruktor, Objekt und Datenkem, statische und nicht-statische Methoden und viele weitere Begriffe werden danach ausfuhrlich erklart und genutzt. Die Java-Dokumentation, ebenfalls kostenlos irn Internet verfiigbar, erweist sich dabei als reiche Quelle.
SchlieBlich ist irn Kapitel 20 die Zeit gekommen, die visuellen Klassen von Java zur Programmierung von Benutzeroberflachen nutzen zu konnen. Reaktionen fur Nutzereinwirkungen auf einfache Bedienelemente werden vorbereitet - und irnmer wieder werden dabei die Grundlagen wiederholt und gefestigt.
Mit der Einfuhrung in die Applet-Programmierung wird der unmittelbare Bezug zwischen Java- und der Intemet-Programmierung hergestellt.
Das Buch entstand aus den vielfaltigen Erfahrungen, die ich in meiner Lehrtatigkeit und in der Gestaltung von Praktika an verschiedensten Bildungseinrichtungen sammeln konnte. Den Teilnehmem meiner Lehrveranstaltungen mochte ich hiermit Dank sagen.
v
VI
Vorwort
Fur Ruckmeldungen und kritische Hinweise ware ich sehr dankbar. Besuchen Sie rnich doch gelegentlich im Internet unter http://www.w-g-m.de und schreiben Sie mir Ihre Meinung.
AbschlieBend mochte ich alien, die rnich wahrend der Zeit der Manuskripterarbeitung untersttitzten und mir viel Versilindnis entgegenbrachten, ganz herzlich danken.
Uenglingen, im Oktober 2005 Wolf-Gert Matthaus
Inhaltsverzeich nis
1 1.1
1.1.1
1.1.2
1.1.3
1.2
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.2.7
1.2.8
1.2.9
2 2.1
2.1.1
2.1.2
2.2
Grundbegriffe: Programme und Programmiersprachen ............. 1
Programme ... ...... ....... .. .......... ... ..... ...... .. .... ...... ...... ... .. .. ...... .... ......... ..... ... . 1
Gedankenexperiment .. ... ..... ..... .. ..... .. ....... ..... .. ... ... ..... .. ...... ...... .. .. ...... .. 1
Das erste Programm .. ................... ... .... .................. .. ....................... ... ... 5
Logische Fehler .. ....... ... .. ......... ...... ... ................ .. .. .. .......... ..... ...... .......... 6
Programmiersprachen ... .......... ....... .... ... ..... .. .. ... .... .... ...... .. ...... ..... ... ... .. .... 6
Symbolbefehle ........... ......... ............... .................. ...... ..................... ...... 6
Syntaktische Fehler ................... ......... .... ................ ... ..... ...................... . 9
Programmiersprachen ..... ..... .... .. ..... ... ...... .. .. ......... .................. .. .... ... .. ... 9
Programmieren in Java ............ .... ....................... .................. ... ... ...... .. 10
Erste Vorschriften der Java-Syntax .... ... ........ ..... ...... ... ............ .. .... .. ... . 10
Deklaration von SpeicherpHitzen .. ... ... .... ... .... ... ..... ....... ..... .. .. ...... ...... 11
Ausfuhrungsteil .. ... ...................... .... .... ......... ..... ...... ....... ...... ....... .. ...... 11
Allgemeines und Besonderes ...... .... ......... ......... .... .. ....... ............ ... .... . 12
Kommentare ... .. ... ........ .. ... ..... .......... ... ...... ............. ...... ........... ...... ... ... . 12
Das Java-Prinzip ............................................................................. 13
Die beiden klassischen Verarbeitungsprinzipien ...... ......... .. ... .... ....... .. 13
Das Compilerprinzip ... .. ................ ....... ............ ..... ... ... ..................... .. . 13
Das Interpreterprinzip ... ... ... ....... ..................... .. ...... .... .. .. ... .... ... .... ..... 15
Internet und Globalisierung ...... .. ........... ....... ... ........ ... ...... ..... ........... ... . 17
VII
Inhaltsverzeichnis
VIII
2.3
2.4
3 3.1
3.1.1
3.1.2
3.1.3
3.2
3.2.1
3.2.2
3.2.3
3.2.4
3.3
3.3.1
3.3.2
3.3.3
3.3.4
3.4
4 4.1
4.1.1
4.1.2
4.1.3
Die Zweischritt-Verarbeitung von Java-Programmen .......................... . 18
Ausblick .... ... ....... ....... ..... ... ...................... .. .... .... .. ...... ... .... ..... .. .... .... .... .. . 20
Einfache Verarbeitung von Java-Programmen ............................ 21
Editieren des Java-Quelltextes ............................................................... 21
Vorbereitung .. .... ... ....... .. ..... ... ..... .. ............. .. ..... .... .... .. ........................ 21
Start des Editors ... .. .... ..... ... ..... .. ... .. ..... ... ...... .. ............... .... ........... .... ... 22
Der Programmrahmen fur Anfanger-Programme .............................. 22
Java-Compiler und Java-Interpreter beschaffen .................................... 26
Herunterladen aus dem Internet .................. .. ........ ...... .. .. ....... ....... .. .. 26
Speichern des Installationsprogramms .. .............. .. ...... ................ .. .... 28
Kaffee fur die Wartezeit ...................................................................... 28
Installation des JD K .... ...... .. .......... .......... .. ..... ........... .................. ........ 28
Arbeit mit Compiler und Interpreter ..................................................... 30
Syntaxkontrolle und Bytecode-Erzeugung ............ .......................... .. 30
Interpretation des Bytecode .. ..... ....... ......... ....... .. ..... ..... .... .... .... ... ...... 32
Syntaxfehlermeldung ................................... ..... ..... ..... .... ........ ............ 33
Logische Fehler ................................................................................... 34
Zusammenfassung .......................................................... .. ...... .. ........ .. .... 35
Einige Java-Entwicklungssysteme ................................................. 37
Fantastic-Bits JOE von Timo Haberkern ...... .... .... ............ .. ................... 37
Beschreibung ...................... ... ...... ..... .... ... .. ... .. ............... ... .... .... ..... ..... 37
JOE aus dem Internet herunterladen ................................................. 38
JOE installieren .... ............ ... ........ ................. .. ..................................... 38
4.1.4
4.1.5
4.1.6
4.2
4.2.1
4.2.2
4.2.3
4.2.4
4.2.5
4.2.6
4.3
4.3.1
4.3.2
4.3.3
4.4
4.4.1
4.4.2
5 5.1
5.1.1
5.1.2
5.1.3
5.1.4
5.1.5
5.2
Inhaltsverzeichnis
JOE einrichten .......................... ........................................................... 39
Programmentwieklung mit JOE ......................... .. ...................... .. ....... 41
Arbeit mit mehreren Java-Quelltextdateien ....................................... 43
Eclipse ..................................................................................................... 43
Allgemeines ......................................................................................... 43
Eclipse aus dem Internet laden .......................................................... 43
Eclipse entpaeken und vorbereiten ................................................... 44
Eclipse erstmalig starten und einrichten ............................................ 45
Projekte und Dateien ..... ............ ......... .................................... .. .......... 47
Syntaxpriifung, Byteeode-Erzeugung und Ausfuhrung .................... 48
NetBeans IDE ........................................... ....................... ........... .. .......... 50
Allgemeines ................................................................................. .. ...... 50
Starten und Einriehten von NetBeans ................................................ 51
Projekte und Dateien .......................... ............ .................................... 51
Weitere Java-Entwicklungsumgebungen ............. ...................... ........... 53
JPadPro ............................... .............................................. ................... 53
JBuilder und Visual J++ ...................................................................... 54
Online-Unterstiitzung .................................................................... 55
Herunterladen der Dateien eines bestimmten Kapitels ........... .. ... ....... 55
Ausgangspunkt .. .................................... .... ......... .. ... .......... ... ....... ....... . 55
Konkrete Angabe des Zielordners ..................... ..................... ........... 56
Speichern auf Desktop .............................. ........................................ . 58
Entpaeken mit reehter Maustaste .............................. ......................... 58
Entpaeken mit einem Entpaekprogramm .......................................... 59
Arbeit mit den heruntergeladenen Dateien .................... .. .... ................ 60
IX
Inhaltsverzeichnis
x
5.2.1
5.2.2
5.2.3
5.3
5.3.1
5.3.2
6 6.1
6.2
6.3
6.3.1
6.3.2
6.4
6.4.1
6.4.2
6.5
6.5.1
6.5.2
6.5 .3
6.6
6.6.1
6.6.2
6.7
6.8
Java elementar ...... ........... ..... .... ....... .......... .... .... .... ... ... ...... ......... ..... .... 60
Arbeit mit JOE ...... .... .. ... ....... ........ ......... ...... .... ........ ..... .... ..... ... .. ..... ..... 61
Arbeit mit ec 1 ipse ............................................................................... 62
Erste Dbungen ........................................................................................ 63
Grundsatzliches .......... ..... ......... ...... .. ... .. ..... ... ..... .. ........ ......... ... ........... 63
Dbungen zu den Kapiteln 1 bis 5 ...................................................... 64
Speicherpliitze fUr ganze Zahlen .................................................. 67
Bit und Byte ........................................................................................... 67
Java-Datentypen fur ganze Zahlen .. ...... .. .... ............. .... ............... .. ... ... .. 69
Belegung ganzzahliger Speicherplatze ......... .. .................... .. ..... .. ......... 70
Belegung durch Nutzereingabe ... .............. .............. ... .. ... .. ...... .. .. ...... 70
Belegung durch feste Werte ............................................................... 71
Zuweisungen verschiedener Typen .... ... .... ............ .... .... ........ ... ............ 71
Zum grbBeren Zahlenbereich ... .... ............................................. .... .... 71
Zum kleineren Zahlenbereich ...... ..... ... .... .... ........ ... ... ...... ........... .. ..... 72
Fehler ...................................................................................................... 73
Rezept zur Fehlervermeidung .. ... ........... .. ........... ............... ... ......... .. .. 73
Dberlauf. .. .. ...... .... .... .... ..... ............ ....... ... .... ... ...... .... .. ........ .. ....... ... ..... . 74
Konvertierungsfehler ... ..... ... ... ..... ...... .... ............................. ........... .... . 75
Rechnen mit ganzzahligen Speicherplatzen ......................................... 78
Addition bis Multiplikation ........ ...... .......... .. ........ ... .............. .............. 78
Division ganzer Zahlen .... .. ....................... ..... ... .... .... ..... ... .. ...... ... .... .. . 80
Divisionsrest und Teilbarkeit ................ .................. .......... ..... ........... .... . 81
Namensgebung fur ganzzahlige Speicherplatze ................................... 82
7 7.1
7.1.1
7.1.2
7.1.3
7.1.4
7.2
7.3
7.4
8 8.1
8.1.1
8.1.2
8.2
8.2 .1
8.2.2
8.2.3
8.2.4
8.2.5
8.2.6
Inbaltsverzeicbnis
Speicherpliitze fUr Dezimalbriiche ............................................... 83
Interne Darstellung von Dezimalbriichen .. ........ ....... .... .... ... ............ ... .. 83
float und double .... .... ...... ......... ..... ... .... ............. ..... .. ......... ....... .... ...... 83
Komrna oder Punkt ....... ............. ... ....... ..... ....... ... ... .. .... ......... .. .... ...... . 86
Belegung durch Nutzereingabe ....... ............ ... ... ... ......... .... ... ........ .... . 87
Goldene Regel: SpeicherpHitze fUr Dezimalbriiche .. ....... ..... ...... .... .. 87
Beispiel: Division ..... .... ....... .. .... ... ... .......... ...... ........ ... ...... ........ ... .... ...... . 87
Versuch der Rundung ................. .. .. .. .... ........... .. ..... ... ..... .. ......... ..... ..... .. 88
Beispiel: Mehrwertsteuer ..... .... ...... ....... ..................... .... .... ..... ... ...... ...... 91
Strukturiertes Programmieren ...................................................... 93
Strukturierter Entwurf .. ... ... ... ... .. ... ... ... .... .. ... .... ..... ... ....... .... ....... ....... ... .. 93
Bedeutung .. .. ...... ..... .. ........ .. .. .... .......... ..... ... .. ... ... ....... .... ..... .. ......... ..... 93
Strukturierter Entwurf .. .. ...... .... ........ .... ................... ... ..... ................. .. . 93
Strukturelemente .... ....... .. ...... .... ........... .. .... .......... .. ... ....... ....... ...... .... .... . 94
Folge ... .......... ................. ... ...... .. ......... ...... ..... ....... .. ... ....... ..... ...... ..... ... . 94
Abweisende Schleife (kopfgesteuerte Schleife) ... ...... .. .... .... .. ....... .. .. 97
Bedingungen ... ...... .. ...... ........ .... .. ..... .... ..... ... .... ......... .. ... ... ... .. ... .. .... ... 1 00
Nichtabweisende Schleife (fulSgesteuerte Schleife) ...... ..... ........ ..... . 101
Einfacher Test (unvollstandige Alternative) .. ..... .... ...... ... ... ..... ..... ..... 102
Vollstandiger Test (Alternative) ...... ....... ........... ..... ...... ... ... ... ............. 105
XI
Inhaltsverzeichnis
XII
E 1 Einschub: Verkiirzte Schreibweisen in Java .............................. 109
ELl
El.Ll
El.l.2
El.l.3
El.2
El.3
El.4
9 9.1
9.2
9.2.1
9.2.2
9.2.3
9.2.4
9.2.5
9.2.6
9.3
9.3.1
9.3.2
9.3.3
9.3.4
Inkrementieren und Dekrementieren ................................ .. .... .. .. .. ...... 109
Postfix-Notation ............................................................... ... ......... ... .. . 109
Prafix-Notation ................................................................................... 110
Wirkungen und Unterschiede ................ .... .................................... .. . 110
Kurzschreibweise einfacher Alternativen ................................ .......... ... 111
Kombinierte Zuweisungsoperatoren ............................................ ........ 113
Die Vielfalt von Java ............................................................................. 114
Felder ..•...................................................................................•...... 119
Begriff und Vereinbarung .. .. ..... ... ........ ... ... ....... ... .................... ............. 119
Grundaufgaben mit Feldern ................................................................. 120
Summieren tiber Feldern .. ................................................................. 120
Zahlschleife .... ...... .... ................. .......... ....................... .......... .......... .. .. 121
Abzahlen in Feldern ......... .... ........... ....... ........ ................ ................... 125
Finden in Feldern ...................... .. ....... .... ... ........ ........... ..................... 126
Extremwertsuche in Zahlen-Feldern .... ....... ... .. ... ............. .. ...... ......... 127
Extremwertsuche mit Positionsangabe .. ... .. ... .. .... ............................. 129
Belegung von Feldern ........ .. ........ ............ ........ ...... ...... .. ....... ... ............ 131
Differenzierte Zuweisung oder Nutzereingabe ................................ 131
Li.ickenlose Belegung mit bekannter Anzahl.. .................................. 132
Initialisierung von Feldern .... .................... .. ...................................... 133
Li.ickenlose Belegung bei unbekannter Anzahl.. .............................. 134
Inhaltsverzeichnis
1 0 Logische SpeicherpIatze (boo 1 ean) ............................................. 135
10.1
10.2
10.3
10.4
10.5
10.5.1
10.5.2
11 11.1
11.1.1
11.1.2
11.2
11.2.1
11.2.2
11.2.3
Vereinbarung ......................................................................................... 13 5
Belegung ........................... ... ....... .... .......... ............ .. ....... ... ........ ... .......... 135
Ausgabe .................... : ............................................................................ 136
Vergleiche und Rechnungen ................................................................ 137
Anwendungen, Methode der Unschuldsvermutung ..... ..... .................. 138
Felder vergleichen ............................................................................. 138
Such en in Feldern ............................................ .. ................................ 140
SpeicherpIatze fUr einzelne Zeichen (char) .............................. 141
Vereinbarung und Belegung ......... .. ..................................................... 141
SpeicherpHitze fur einzelne Zeichen ................................................. 141
char-Felder ............................................. ............................................ 141
char und int .. ... ........................................................ .......... ................... 143
Zusarnmenhange .......... ...................................................................... 143
Anwendungen .................................................................................... 146
Rechnen mit char-Speicherplatzen .............................................. ...... 147
1 2 Zeichenketten in Java .................................................................. 149
12.1 Das Ende der klassischen Prograrnmierung ...... .. ................................ 149
12.2 Stri ng -Objekte ................................ ... ..... ..... ..... .. ............ .......... ...... ...... 150
XIII
Inbaltsverzeicbnis
XIV
12.2.1
12.2.2
12.2.3
12.3
12.4
12.5
12.5.1
12.5.2
12.5.3
13 13.1
13.1.1
13.1.2
13.1.3
13.2
Erzeugung von Stri ng-Objekten .... ... .... ............ ... ... ..... .. .... ........ ....... 150
Belegung der Datenkeme .... ........ .... ........... ....... ... .. ... ... ..... .... .... .. ... .. 151
Information tiber Datenkem-Inhalte ............ ...... .... .. ... ... .......... .. .. ... .. 152
Methoden .... ... ........................... ...... ....... .. .... .... .. ....... ... ..... ...... .. ... ...... ... . 153
Java-Dokumentation herunterladen ..... ... ..... .......... ......... ... .. .. ... .. ... ...... 154
Die ersten String-Methoden .... ......... .. .. ...... .. ..... .. ... .. .... ...... ... ... ...... .... .. 157
Vier Arten von Methoden .. .... .... .... ..... .. ..... ...... ... ..... .. .... ..... ... ... ... ... ... 157
String-Methoden, die Hefem, aber nichts ben6tigen .... ..... ......... ..... 157
Stri ng-Methoden, die Hefem und damr etwas ben6tigen ........ .. .. .. . 163
Die erste eigene Klasse ................................................................ 171
Die Klasse Auto .... ... ........... ....... ... .. ....... .... .......... ...... ... .. .... .. ... .. .... .. ... .... 172
Datenkem festlegen ...... .. ... .. ..... ..... ....... ... ... ... ... .... ......... ... ... ...... ... ... .. 172
Methode ho 1 eHers tell er .... .... .... .. .. .... ... ... ..... .... ......... ..... ...... ....... .. .... 174
Methode setzeHers tell er .. .... .... .... .... .... .. .... .. ..... ... ... ...... ............. ...... 176
Konstruktor ... .... ........... .......... ... ..... .... ... .... ... ... ... ... ........ .. .... ........ ... ... ..... 178
1 4 Statische Methoden ...................................................................... 181
14.1
14.1.1
14.1.2
14.1.3
14.1.4
14.2
14.3
Klassen als Methodensammlungen .... ..... .. .... ... ...... .... .. .... ..... ....... .... .. .. 181
Zwei Fragen ...... ... .. .. .. .... .. .. ... .. ... ...... ..... .... .. .... ... ... .. ....... .... .. ... .... ....... 181
Beispiel: Klasse mit Quadratmethoden .... ...... ......... ..... ....... .... ... ... ... . 182
Nutzung statischer Methoden ...... ... ... ................ ... ...... ................ .. .... . 183
Statische Methoden in beHebigen Klassen ........ .. ... ..... ..... .. .... ....... ... 186
Klassen und Pakete ..... ........... ..... ... ... ... ....... ... ....... ....... ....... ..... ....... ..... . 188
Der Programm-Rahmen ...... ...... ....... ..... ......... ... ...... ... ..................... ... .. . 189
Inhaltsverzeichnis
15 Uberladen ..................................................................................... 191
15.1 Dberladen von Methoden ........... .......................................................... 191
15.1.1 Beispiel .. ........................................................................ ..................... 191
15.1.2 Dberladene Methoden der Klasse String ......................................... 193
15.2 Dberladen von Konstruktoren .......... ........... ......................................... 198
15.2.1 Beispiel ............................................................. .................................. 198
15.2.2 Dberladene Konstruktoren der Klasse Stri ng ........... ....................... 200
16 Noch einma1: Methoden ............................................................. 203
16.1
16.2
16.2.1
16.2.2
16.2.3
16.2.4
16.2.5
16.2.6
16.3
16.3.1
16.3.2
16.3.3
16.3.4
16.4
16.4.1
Methodensarnmlungen in Java ........................... ...... ............................ 203
Die Klasse Math des Paketes j av a . 1 ang ................................................ 204
Die Gruppe der abs-Methoden ......................................................... 204
Die Gruppe der max- und mi n-Methoden .......................................... 205
Methoden fur die mathematischen Funktionen ............................... 209
Die Gruppe der round-Methoden und die Rundung ........................ 209
Die Methode pow ................................................................... ............. 211
Die Methode random ................................................................. .......... 213
Die Klasse Character des Paketes java . lang ........................................ 216
Allgemeines ............................................................ ............................ 216
Diagnosemethoden fur Zeichen ........................................................ 219
Ziffernzeichen und Zahlen ................................................................ 221
Nicht -Dezimalzahlen ..... .......... ........................................................... 222
Die Klasse Integer des Paketes java. lang ........................................... 224
Konstruktoren .................................................................................... 224
xv
Inbaltsverzeicbnis
XVI
16.4.2
16.4.3
16.5
16.6
16.7
16.7.1
16.7.2
16.7.3
16.7.4
16.7.5
17 17.1
17.2
17.2.1
17.2.2
17.2.3
17.2.4
17.2.5
17.3
17.3.1
17.3.2
17.3.3
17.3.4
Vom Dezimalsystem in andere Zahlensysteme ..... ..... ... .. .. .... .. .... ... .. 225
Von anderen Zahlensystemen zum Dezimalsystem .... ................ .... . 227
Die Klasse Long des Paketes java . l ang .... ....... ........ ...... ... .. ............. .... . 228
Die Klassen Float und Double des Paketes java . lang .. ...... .... ... ..... .. ... 229
Die Klasse Arrays des Paketes java.util ... ..... ... ..... ............................. 231
Felder fuBen .... .. ..... .. .... .. ....... ..... .. ..... ....... .............. ........ ...... .. ...... ...... 232
Felder ansehen .. .... ..... .. .. ....... ... .... ... .. ..... .. ...... ...... ........ .. ... .. .. .. ...... ..... 233
Felder vergleichen .... ....... ... ........ ....... ..... ..... ........ ... ..... .. .................... 234
Felder sortieren ...... ............... .. ............ ... ..... .. ................ .................... . 236
Finden in sortierten Feldern .... ......... ............ .. .. ... .. .. .... ...... ... ..... .. ...... 237
Vererbung ..................................................................................... 239
Vorwort .............. ........... .. ... ..... .... .... ... ... .. ... ... .... ..... .... ...... .. ..... ........... .... 239
Klassen ableiten .................................................................................... 239
Erblasser- und Erbnehmer-Klasse ..... ............. .. .. .. .......... .... .... ........ ... 239
Beispiel fur eine Erblasser-Klasse ........ ............................................. 240
Ableitung von Klassen ....................................................................... 242
Konstruktoren fur die abgeleiteten Klassen ...... .. ............ ... .............. 244
Erweiterung des Datenkerns, verbesserte und neue Methoden ..... . 246
Noch einmal: Statische Methoden ........... ................. ... ..................... .... 248
Die equa 1 s-Methode der Klasse Stri ng .... ..... .. ...... ....... .. .... ... ..... ....... 248
Statische Methoden der Klasse Arrays fur String-Objekte ..... .. .. ...... 251
Stri ng-Felder ... ....... .... ..... .. ... ... ... .... ...... .......... .... .... ............ ...... .......... 252
Beispiel ........ .. ... .. ..... ....... ...... ..... ... .. ... .... ... ....... ..... .. .... .... .... ...... ... ....... 253
Inbaltsverzeicbnis
18 Abstrakte Klassen und Interfaces ............................................... 255
18.1
18.1.1
18.1.2
18.1.3
18.1.4
18.1.5
18.2
18.2.1
18.2.2
18.2.3
Abstrakte Klassen .. ......... ........................................................ ... ...... .. .... 255
Der reiche Erblasser .... .... ....................... .... ....... .. .... .. ..... .. ..... .. ... ....... . 255
Abstrakte Klassen .............. ... .................................. ... .. .... ... .. ...... ... ..... 255
Abstrakte Klassen mit abstrakten Methoden, Prototypen ..... ....... .. .. 256
Abstrakte Klassen mit konkreten Methoden ..................... ... ... ..... .... 260
Abstrakte Klassen ohne Datenkem ................................................... 263
Interfaces .................................... .............. .............................. ..... .. ...... .. 265
BegriffserkHirung, Zusammenhange ..... ........ .. .................................. 265
Interfaces, abstrakte und konkrete Klassen ..... .. ............................... 266
Schnittstelle ...... ..... .. .... ... ...... .. ............ ... ........ ..... ...... ... ........ .... .. ......... 268
1 9 Polymorphie ................................................................................. 269
19.1
19.2
19.2.1
19.2.2
19.2.3
19.3
Begriffserklarung, erster Versuch ......................................................... 269
Polymorphie in Objekthierarchien ........ .. ..... ........ ..... ............ .. ......... .... 269
Oberste Klasse der Hierarchie programmieren ........ ... .. ... ......... ... .... 270
Untergeordnete Klassen ableiten ............................................ .......... 271
Objektfelder und Klassen-Hierarchien ........................................ .... 273
Begriffserklarung, zweiter Versuch ......... ........ .. ..... .. ...... ...... ................ 276
XVII
Inbaltsverzeicbnis
XVIII
2 0 Benutzeroberflachen ................................................................... 277
20.1
20.1.1
20.1.2
20.2
20.2.1
20.2.2
20.2.3
20.2.4
20.2.5
20.2.6
20.2.7
20.3
20.3.1
20.3.2
20.3.3
20.3.4
20.3.5
20.3.6
Konsolenanwendung und heutige Programmierung ... ................ ... .... 277
Klassische Programrnierung: Konsolenanwendung .... .. ............. ... ... 277
Heutige Programrnierung: BenutzeroberfHichen ............ .. ................ 278
Das Forrnular ......................................................................................... 279
Wiederholung: Klassen, abstrakte Klassen, Interfaces ..... ...... ..... ... .. 279
Visuelle Klassen .................................... ...... .. ..................................... 280
Vorbereitung des Forrnulars .............................................................. 280
Forrnular sichtbar machen .. ....... ... ... ......... .... ..................................... 282
GroBe und Titel setzen ...................................................................... 284
Nutzung des Konstruktors ... .. ... .... ..... .. .. .. ... ....... ................................ 285
Hintergrundfarbe einstellen ............................................................... 287
Ereignisbehandlung ................ ............................. ........... ... ...... ....... ...... 290
Nutzereinwirkung und Ereignis ........................................................ 290
Reaktionen auf Ereignisse ...................... ......... ..... .......... ................ ... 291
Ereignis-Lauscher ankoppeln ............................................................ 292
Interface implementieren .................................................................. 293
Ereignis-Methoden programmieren .. ......... .............. .. ............ ..... .. .... 295
Verwendung von Adapter-Klassen ......... ...... .... ... ................... ..... ..... 296
E 2 Einschub: Weitere verkiirzende Schreibweisen ........................ 299
E2.1 Objektvereinbarung und -erzeugung zusammenfassen ................ ... .. . 299
E2.2 Namenlose Objekte verwenden ............. .. ... ...... .... ................ ... ............ 299
21 21.1
21.2
21.2.1
21.2.2
21.2.3
21.3
21.3.1
21.3.2
21.4
21.5
21.6
Inhaltsverzeichnis
Einfache Bedienelemente ............................................................ 301
Layout festlegen ........... ... .... ......... ... .. ........ ..... ....... .. ... .. ... ................. ..... 301
Button und Labels fUr die Arbeitsflache .. .. .... .... .... .... ...... ....... .... ..... .... 304
Vereinbarung, Erzeugung und Einbettung in die Arbeitsflache ...... 304
Reaktion bei Mausklick auf den Button vorbereiten ............ ... .. ...... 307
Reaktion prograrnrnieren ... .. .... .... .. .... ... ........ .. ... .... .... ... .... ....... ..... .. ... 309
Ein kleiner Taschenrechner fUr ganze Zahlen ............ ............ ......... .... 311
Herstellung cler Benutzeroberflache ............... ... .. ............................. 311
Inhalt der Methode act; onPerformed fUr den Plus-Button .. ...... ..... .. 313
Checkboxen ..... ... ...... ........ .......... .... ... .. .... ........ ... .. .... ................... .... .. ... 314
Zwei horizon tale Scrollbars (Schieberegler) ...... ... ... .................. ....... ... 319
Textfenster und Label ... ...... ........ ... ...... .............. ... ..... ...... ...... ..... ..... ..... 322
2 2 Gruppierte Radiobuttons und Listen .......................................... 325
22 .1
22.1.1
22.1.2
22.1.3
22.2
22.2.1
22.2.2
22.2.3
22.2.4
22.2.5
Gruppierte Radiobuttons ......... ............ ......... ...... ..... ..... ... ......... .... ........ 325
Erzeugung und Platzierung auf der Arbeitsflache .. ......................... . 325
Reaktionen auf Nutzerklick .. .... ... ..... ... ............ ... .. ... ................. ....... .. 327
Eine kleine Anwendungsaufgabe ..... .. .... .. ..... ....... .. ...... ... ... .... ... .. ..... 328
Listen ..... ........................ .. .. .......................................... .. ......................... 330
Herstellung von Listen .................... .. ......................................... .. ... .. . 330
Reaktionen auf Nutzerauswahl in einer Liste ........ ... ........... ... .... ...... 332
Beispiele fUr Arbeit mit Listen: Sortierung ....... ... ..... ............ .. ....... ... . 334
Summen tiber Zahlenlisten ............ .......................... ... ............ .. .. ... .... 335
Wichtige L; st-Methoden .... ... ........... .......... ... ... .. ... .... .... ............. ..... ... 337
XIX
Inhaltsverzeichnis
xx
2 3 Sichere Programme ...................................................................... 339
23.1 Bedienelemente aktivieren und deaktivieren .. .......... ... .. ........ ...... .... ... 339
23.2 Falsche Tasten wegfangen .... ... ......... ... .. .... .. ..... ..... .... ................. ... ... .... 342
23.2.1 Nur Zifferntasten zulassen .... ......... ... ............ ...... ...... ....... ..... ....... ..... . 342
23.2.2 Komma zu Punkt wandeln .. .... ....... .. .. ..... ...... .. ..... ... ........... ..... ....... . -.. 347
2 4 Timer ............................................................................................. 349
24.1 Grundsatzliches .... ...... ...... ..... ... ......... .. ........ .... .... .... ..... .. .. .... .. ..... .. .... .... 349
24.2 Ohne Nutzer passiert nichts ..... ... ..... ... .... .... .... .... .... ..... .... ... ... ...... ........ 350
24.3 Arbeit mit Timern .... .. .... .... .... ........ .... ....... .. .......... .. ...... ... .. ... .. ............ ... 351
24.3.1 Einen einzelnen Timer einrichten ..... .. .. .... ...... ... .... ..... .... ..... ....... ... ... 351
24.3.2 Blinkende Schrift. ....... .... .. ....... .. ... ... ...... ........ .... ... .... ......... ... ......... ... .. 354
24.3.3 Laufschrift ...... ....................... .. ........... .. ............... .. ..... .... ....... ... ..... ..... . 355
24.3.4 Start und Stop eines Timers ...... ... ... .... ... ... ... ....... .. ... ....... .... .... ... .... ... 355
24.4 Mehrere Timer .... ... ............ .... ..... .... .... ..... ... ... ...... .... .... .. .. ............ .......... 358
2 5 Applet ............................................................................................ 361
25 .1
25.2
25.2.1
25.2.2
25.3
25.3.1
25.3.2
Das Geheimnis des Erfolges von Java ... .. .. .... .............. ... .... .... .... ....... .. 361
Weltweite Kommunikation ..... ... ..... ... ..... ........ ........ .. ... ....... ... .. ....... ..... . 362
Browser und HTML .... ............. .. ...... ..... ..... ... ......... ..... .... .... ... ......... .. . 362
HTML-Ausgabefenster fur ein Java-Programm ...... .... .. ....... .. .. ...... .... 363
Beispiel: Benutzeroberflache fur HTML-Dokument.. ....... .... ...... ...... .. . 364
HTML-Dokument ... ... ... ....... .. .. .. ... ... ..... ... ........ ... .... .. ...... .. .......... ... ... .. 364
Applet fur eine Benutzeroberflache .... .... ........ ...... .. ........ .... ..... .. .... ... 365
Anhang L: LOsungen ............................................................................... 367
Sachwortverzeichnis ............................................................................... 383