|
Dietmar Ratz, Jens Scheffler, Detlef Seese, Jan Wiesenberger
Grundkurs Programmieren in Java
Band 1: Der Einstieg in Programmierung und Objektorientierung (4. Auflage, Carl Hanser Verlag, 2007)
Band 2: Einführung in die Programmierung kommerzieller Systeme (2. Auflage, Carl Hanser Verlag, 2006) |
|
Beispielprogramme aus Band 2
Hier finden Sie die Beispielprogramme aus dem Buch. Suchen Sie einfach anhand des Inhaltsverzeichnisses die Stelle, an der sich das Programm im Buch befindet, und navigieren Sie über den Link in den entsprechenden Teil des Dokuments.
Alle Beispiele zum Download (zip)
Inhaltsverzeichnis
1. Einleitung
1. Java - definitiv kein kalter Kaffee!
2. Java für Fortgeschrittene - unser Konzept
3. Was war ...
4. ... und was kommen wird
5. Weitere Infos und Kontakt zu den Autoren
6. Verwendete Schreibweisen
2. Entwurfsmuster
1. Was sind Entwurfsmuster?
2. Das Observer-Pattern
1. Zugrunde liegende Idee
2. Das Objektmodell
3. Beispiel-Realisierung
4. Variationen des Pattern
5. Zusammenfassung
6. Übungsaufgaben
3. Das Composite-Pattern
3. Einige wichtige Hilfsklassen
1. Die Klasse StringBuffer
2. Die Wrapper-Klassen (Hüll-Klassen)
3. Die Klassen BigInteger und BigDecimal
4. Die Klasse DecimalFormat
5. Die Klassen Date und Calendar
6. Die Klassen SimpleDateFormat und DateFormat
7. Die Collection-Klassen
1. "Sammlungen" von Objekten - Der Aufbau des Interface Collection
2. "Sammlungen" durchgehen - Der Aufbau des Interface Iterator
3. Mengen
4. Listen
5. Übungsaufgaben
8. Die Klasse StringTokenizer
4. Praxisbeispiele
1. Rechnen mit rationalen Werten
1. Variablen und Konstruktoren
2. toString, equals und hashCode
3. Die vier Grundrechenarten
2. Wem die Stunde schlägt
3. Die Türme von Hanoi
5. Aufbau grafischer Oberflächen in Frames - von AWT nach Swing
6. Swing-Komponenten
7. Ereignisverarbeitung
8. Praxisbeispiele
1. Wem die Stunde schlägt, Iteration 2
2. Body-Mass-Index
3. Wem die Stunde schlägt, Iteration 3
9. Einige Ergänzungen zu Swing-Komponenten
1. Zeichnen in Swing-Komponenten
2. Noch mehr Swing gefällig?
3. Übungsaufgaben
10. Applets
11. Praxisbeispiele
1. Wem die Stunde schlägt, Iteration 4
2. Wem die Stunde schlägt, Iteration 5
3. Wem die Stunde schlägt, Iteration 6
12. Parallele Programmierung mit Threads
13. Ein- und Ausgabe über Streams
14. Client/Server-Programmierung in Netzwerken
1. Wissenswerte über Netzwerk-Kommunikation
2. Client/Server-Programmierung
3. Wissenswertes über URLs
4. Übungsaufgaben
15. Praxisbeispiele
16. Blick über den Tellerrand
1. Der Vorhang fällt
2. A fool with a tool ...
3. Alles umsonst?
4. Und fachlich?
5. Zu guter Letzt ...
2.2.3.1: Das Arbeiten mit nur einem Observer
|
Hauptprogramm.java |
Diese Klasse ändert die im Observer gespeicherten Namen zufällig |
Name.java |
Diese Klasse symbolisiert einen Namen den man bearbeiten kann |
Observer.java |
Objekte dieser Klasse speichern zehn Namen und achten auf Veraenderungen |
2.3.1: Zugrunde liegende Idee
|
Funktion.java |
Diese Klasse repräsentiert eine Funktion |
Id.java |
Diese Klasse repräsentiert die identische Funktion |
Konstante.java |
Diese Klasse repräsentiert die konstante Funktion |
2.3.3.2: Produkt zweier Funktionen
|
Produkt.java |
Diese Klasse repräsentiert ein Produkt |
Summe.java |
Diese Klasse repräsentiert eine Summe |
2.3.4: Variationen des Pattern
|
simpleWindow.java |
Diese Klasse erzeugt ein einfaches Fenster |
3.1.1: Arbeiten mit String-Objekten
|
StringRefs.java |
Diese Klasse stellt String-Objekte als Referenzdatentyp vor |
3.2.1: Arbeiten mit "eingepackten" Daten
|
WrapperBeispiel.java |
Diese Klasse zeigt die Funktionsweise von Wrapperklassen |
3.2.3: Ein Anwendungsbeispiel
|
Summiere.java |
Diese Klasse stellt ein Summations-Programm dar |
3.2.4: Automatische Typwandlung für die Wrapper-Klassen in Java 5.0
|
AutoBoxing.java |
Verwendung von Wrapper-Objekten mit AutoBoxing |
Boxing.java |
Verwendung von Wrapper-Objekten mit explizitem Boxing |
3.3.4: Arbeiten mit langen Gleitkommazahlen
|
ProduktSummeBigDec.java |
Diese Klasse korrigiert Fehler der Klasse ProduktSummeDouble |
ProduktSummeDouble.java |
Diese Klasse gibt bei der Rechnung mit Gleitkommazahlen einzelne Rechenschritte aus |
3.3.6: Viele Stellen von Nullstellen gefällig?
|
BigNewton.java |
Diese Klasse berechnet näherungsweise die Nullstellen der Funktion sqrt(2) mit Hilfe des Newton- Verfahrens |
3.4.1: Standard-Ausgaben in Java
|
StandardFormat.java |
Diese Klasse zeigt wie man das Ausgabeformat von double- Werten beeinflussen kann |
3.4.2: Arbeiten mit Format-Objekten
|
MyFormats.java |
Diese Klasse zeigt an weiteren Beispielen "selbst gemachte" Formate zur Ausgabe von numerischen Werten |
3.4.3: Vereinfachte formatierte Ausgabe in Java 5.0
|
Ausgaben.java |
Formatierte Ausgabe mit printf |
3.5.2: Auf die Plätze, fertig, los!
|
Stoppuhr.java |
Diese Klasse realisiert eine einfache Stoppuhr |
3.5.3: Spezielle Calendar-Klassen
|
CalArith.java |
Diese Klasse gibt "Zeitpunkte" aus |
3.5.4: Und noch mal: Zeitmessung
|
CalStoppuhr.java |
Diese Klasse ist eine alternative Version der "einfachen Stoppuhr" und arbeitet mit "Zeitpunkten" |
3.6.1: Arbeiten mit Format-Objekten für Datum/Zeit-Angaben
|
MyDateFormats.java |
Diese Klasse gibt noch einige weitere Beispiele für "selbst gestrickte" Formate zur Ausgabe von Zeitangaben |
MyStandardDateFormats.java |
Diese Klasse gibt noch einige Beispiele für Standard-Formate zur Ausgabe von Zeitangaben |
3.7.3.2: Die Klasse HashSet
|
ZahlenMenge.java |
Diese Klasse zeigt die Verwendung einer Collection vom Typ HashSet |
3.7.4.2: Die Klassen ArrayList und LinkedList
|
ZahlenListe.java |
Diese Klasse zeigt die Anwendung der List- Klassen am Beispiel der Klasse ArrayList |
3.7.4.3: Suchen und Sortieren - Die Klassen Collections und Arrays
|
SortierteZahlenListe.java |
Diese Klasse demonstriert die Anwendung der Klasse Collections |
3.8: Die Klasse StringTokenizer
|
StringTokens.java |
Diese Klasse ist ein Beispielprogramm zur Verwendung von StringTokenizer- Objekten |
4.1: Rechnen mit rationalen Werten
|
Bruchzahl.java |
Diese Klasse modelliert Bruchzahlen (rationale Werte) |
4.2.1: Designphase
|
Anzeige.java |
Diese Klasse ist für die Anzeige einer Uhr verantwortlich |
Steuerung.java |
Diese Klasse übernimmt die Steuerfunktionen einer Uhr |
Uhrwerk.java |
Diese Klasse bildet ein Uhrwerk ab |
4.2.2: Modell und View
|
Systemzeit.java |
Diese Klasse ist eine einfache Realisierung des Uhrwerk-Interface |
4.2.3: Controller und Hauptprogramm
|
KonsolenAnzeige.java |
Diese Klasse realsiert die Darstellung der Uhrzeit auf dem Konsolenfenster |
WieSpaet.java |
Diese Klasse realisiert das Steuerungsinterface der Uhr |
4.2.4: Ausblick
|
OhneSchnoerkel.java |
Diese Klasse ist eine "schnörkellose" Implementierung der Uhr aus diesem Kapitel |
4.3.2: Die Klasse Scheibe
|
Scheibe.java |
Diese Klasse wird zur Realisierung der Scheiben bei unserem Türme von Hanoi- Problem benutzt |
4.3.3: Die Klasse Stange
|
Stange.java |
Diese Klasse wird zur Realisierung der Stangen bei unserem Türme von Hanoi- Problem benutzt |
4.3.4: Die Klasse Hanoi, erster Teil
|
Hanoi.java |
Diese Klasse wird zur Realisierung von Spieler und Spielbrett bei unserem Türme von Hanoi- Problem benutzt |
5.2: Ein einfaches Beispiel mit dem AWT
|
FrameOhneInhaltAWT.java |
Diese Klasse erzeugt einen Frame mit den Mitteln des AWT- Paketes |
5.4: Etwas "Fill-in" gefällig?
|
FrameMitText.java |
Diese Klasse erzeugt einen Frame mit Text |
6.5.1: Die Klasse JLabel
|
FrameMitBild.java |
Diese Klasse macht nichts anderes als ihr Name verspricht |
images.html |
Grafiken die vom Beispielprogramm benötigt werden |
6.5.3: Die Klasse JButton
|
FrameMitButtons.java |
Diese Klasse macht nichts anderes als ihr Name verspricht |
6.5.6: Die Klassen JRadioButton und ButtonGroup
|
FrameMitRadioButtons.java |
Diese Klasse macht nichts anderes als ihr Name verspricht |
6.5.8: Die Klasse JList
|
FrameMitListe.java |
Diese Klasse macht nichts anderes als ihr Name verspricht |
6.5.10: Die Klassen JTextField und JPasswordField
|
FrameMitTextFeldern.java |
Diese Klasse macht nichts anderes als ihr Name verspricht |
6.5.11: Die Klasse JTextArea
|
FrameMitTextArea.java |
Diese Klasse macht nichts anderes als ihr Name verspricht |
6.5.13: Die Klasse JPanel
|
FrameMitPanels.java |
Diese Klasse macht nichts anderes als ihr Name verspricht |
images.html |
Grafiken die vom Beispielprogramm benötigt werden |
6.6.3: Die Klasse JDialog
|
TopLevelContainer.java |
Diese Klasse demonstriert die Anwendung der drei Fenster-Arten Frame, Window und Dialog |
6.6.5: Die Klasse JToolBar
|
FrameMitMenuBar.java |
Diese Klasse macht nichts anderes als ihr Name verspricht |
images.html |
Grafiken die vom Beispielprogramm benötigt werden |
7.1.1: Zufällige Grautöne als Hintergrund
|
Farbwechsel.java |
Diese Klasse erzeugt ein Swing-Fenster mit einem Button, der in der Lage ist die Hintergrundfarbe des Frames zufällig zu ändern |
7.1.2: Ein interaktiver Bilderrahmen
|
Bilderrahmen.java |
Diese Klasse erzeugt ein Swing-Fenster mit einem Menue, einer Toolbar und einem Label mit Iconimage |
images.html |
Grafiken die vom Beispielprogramm benötigt werden |
7.2.2: Anonyme Klasse als Listener-Klasse
|
Farbwechsel2.java |
Diese Klasse ist eine Version unserer Farbwechsel- Klasse, allerdings mit anonymer Listener- Klasse |
7.2.3: Container-Klasse als Listener-Klasse
|
Farbwechsel3.java |
Diese Klasse ist eine Version der Farbwechsel- Klasse, die nun selbst eine Listener- Klasse ist |
7.2.4: Separate Klasse als Listener-Klasse
|
ButtonListener.java |
Diese Klasse ist ein Beispiel für eine eigenständige Listener- Klasse |
Farbwechsel4.java |
Diese Klasse benutzt die Listener- Klasse ButtonListener |
7.4: Listener-Interfaces und Adapter-Klassen
|
CloseToggleButtons.java |
Diese Klasse erzeugt ein Swing-Fenster mit zwei Toggle-Buttons, die zum Schließen des Fensters aktiviert sein müssen |
7.5: Listener-Registrierung bei den Event-Quellen
|
LookAndFeel.java |
Diese Klasse erzeugt ein Swing-Fenster, das mit Buttons und Combo-Box sein Look and feel ändern kann |
7.6: Auf die Plätze, fertig, los!
|
StoppuhrFrame.java |
Diese Klasse erzeugt ein Swing-Fenster mit Stoppuhrfunktion |
8.1.1: Eine Digitalanzeige
|
DigitalAnzeige.java |
Diese Klasse kann eine Uhrzeit als Textzeile ausgeben |
8.1.2: Eine neue Steuerung
|
SwingUhr.java |
Diese Klasse kontrolliert die DigitalAnzeige unserer Uhr |
8.1.3: Nicht aus dem Rahmen fallen!
|
JavaUhr.java |
Diese Klasse erzeugt aus der DigitalAnzeige und der SwingUhr eine Uhr |
8.2.3: Das gesamte Programm im Überblick
|
BMI.java |
Diese Klasse ermöglicht die einfache Berechnung des Body-Mass-Index |
8.3.1: Design und Layout
|
Einstellungen.java |
Diese Klasse stellt einen Dialog mit verschiedenen Einstellungen für die Uhr dar |
8.3.2: Wechsel des Look and feel
|
JavaUhr.java |
Diese Klasse ermöglicht uns, die SwingAnzeige in einen Frame einzupacken und grafisch darzustellen |
SetzeLookAndFeel.java |
Diese Klasse ermöglicht dem Benutzer (in Verbindung mit dem Einstellungs-Dialog) das Setzen des Look and feel |
9.1.3: Die abstrakte Klasse Graphics
|
ZeichenPanel.java |
Diese Klasse ist eine spezielle JPanel-Klasse mit verschiedenen Graphics- Methoden |
Zeichnung.java |
Diese Klasse erzeugt ein Swing-Fenster mit einer Zeichnung |
9.1.4: Ein einfaches Zeichenprogramm
|
PunkteVerbinden.java |
Diese Klasse erzeugt ein Swing-Fenster mit einem Zeichenbrett |
Zeichenbrett.java |
Diese Klasse ist eine spezielle JPanel-Klasse für unser Zeichenbrett |
10.1.1: Vom Frame zum Applet am Beispiel
|
AppletMitText.java |
Diese Klasse macht nichts anderes als ihr Name verspricht |
FrameMitText.java |
Diese Klasse macht nichts anderes als ihr Name verspricht |
10.1.2: Applet in HTML-Datei einbetten
|
AppletMitText.html |
HTML- Datei zur Einbettung eines Applets (Herunterladen durch "speichern unter...") |
10.2: Die Methoden der Klasse JApplet
|
AppletMethoden.html |
Dieses Applet implementiert die Methoden init, start, stop und destroy |
AppletMethoden.java |
Dieses Applet implementiert die Methoden init, start, stop und destroy |
10.4.1: Der Applet-Tag
|
ParameterApplet.html |
Dieses Applet bekommt die Beschriftungen des Border-Layouts als Parameter übergeben |
ParameterApplet.java |
Dieses Applet bekommt die Beschriftungen des Border-Layouts als Parameter übergeben |
10.4.2: Die Methode showDocument
|
GoogleButtonApplet.html |
Dieses Applet hat einen Button, der in der Lage ist, auf die vom Browser angezeigte Seite zu wechseln |
GoogleButtonApplet.java |
Dieses Applet hat einen Button, der in der Lage ist, auf die vom Browser angezeigte Seite zu wechseln |
10.5: Sicherheitseinschränkungen bei Applets
|
AppletMitBild.html |
Dieses Applet zeigt ein Bild- Label, funktioniert aber nur im Appletviewer |
AppletMitBild.java |
Dieses Applet zeigt ein Bild- Label, funktioniert aber nur im Appletviewer |
AppletMitBildBrowse.html |
Dieses Applet zeigt ebenfalls ein Bild- Label und funktioniert auch im Webbrowser |
AppletMitBildBrowse.java |
Dieses Applet zeigt ebenfalls ein Bild- Label und funktioniert auch im Webbrowser |
images.html |
Grafiken die vom Beispielprogramm benötigt werden |
11.1.2: Von Kreisen und Winkeln
|
AnalogAnzeige_2.java |
Diese Klasse ist eine Erweiterung der Klasse AnalogAnzeige_1 |
11.2.2: Layout in der Klasse SetzeDarstellung
|
SetzeDarstellung.java |
Diese Klasse ermöglicht dem Benutzer (in Verbindung mit dem Einstellungs-Dialog) das Setzen der Darstellung (analog/digital + Farben) |
11.2.3: Vom Layout zur Anwendungslogik
|
JavaUhr.java |
Diese Klasse ist unser neues Hauptprogramm. Sie ermöglicht uns, die SwingAnzeige in einen Frame einzupacken und grafisch darzustellen |
11.3.1: Schritt 1: Auf den Schirm
|
UhrenApplet.html |
Diese Klasse verwendet die SwingUhr, um die Uhrzeit in Form eines Applet darzustellen |
UhrenApplet.java |
Diese Klasse verwendet die SwingUhr, um die Uhrzeit in Form eines Applet darzustellen |
11.3.2: Schritt 2: Eine Frage der Einstellung
|
UhrenApplet.html |
Diese Klasse verwendet die SwingUhr, um die Uhrzeit in Form eines Applet darzustellen |
UhrenApplet.java |
Diese Klasse verwendet die SwingUhr, um die Uhrzeit in Form eines Applet darzustellen |
12.1: Ein einfaches Beispiel
|
ABCPrinter.java |
Diese Klasse gibt das Alphabet aus |
ABCThread.java |
Diese Klasse gibt auch das Alphabet aus, ist jedoch ein Thread |
MehrmalsP.java |
Diese Klasse führt zweimal hintereinander die run- Methode der ABCPrinter- Klasse aus |
MehrmalsT.java |
Diese Klasse führt zweimal hintereinander die run- Methode der ABCThread- Klasse aus |
12.2.1: Die Klasse Thread
|
MachMal.java |
Diese Klasse macht eine Sekunde lang gar nichts |
TVProgAuslosung.java |
Diese Klasse lost zwischen versch. TV- Programmen |
TVProgThread.java |
Diese Klasse stellt die Funktionalität unserer Programmauslosung als Thread dar |
12.2.2: Das Interface Runnable
|
ABCRunnable.java |
Diese Klasse gibt das Alphabet aus und implementiert das Runnable- Interface |
MehrmalsR.java |
Diese Klasse führt zweimal hintereinander die run- Methode der ABCRunnable- Klasse aus |
TVProgAuslosungMitRunnable.java |
Diese Klasse lost zwischen versch. TV- Programmen |
TVProgRunnable.java |
Diese Klasse stellt die Funktionalität unserer Programmauslosung dar und implementiert das Runnable- Interface |
12.2.3: Threads vorzeitig beenden
|
StoppuhrMitThread.java |
Diese Klasse realisiert eine Stoppuhr mit sich aktualisierender Uhrzeit |
UhrzeitThread.java |
Diese Klasse gibt Sekundenweise die aktuelle Uhrzeit zurück |
12.4.2: Das Erzeuger/Verbraucher-Problem
|
EVTest1.java |
Diese Klasse ist ein Testprogramm zur Demonstration des Erzeuger/ Verbraucher- Problems |
EVTest2.java |
Diese Klasse demonstriert die Lösung des Erzeuger/ Verbraucher- Problems |
EVTest3.java |
Diese Klasse demonstriert die Deadlock- Situation |
Erzeuger.java |
Diese Klasse erzeugt einen int- Wert |
GuterWert.java |
In dieser Klasse ist das Problem gelöst |
KlemmWert.java |
Diese Klasse führt bei Verwendung zum Deadlock |
SchlechterWert.java |
Diese Klasse führt bei Verwendung zu Problemen |
Verbraucher.java |
Diese Klasse "verbraucht" einen int- Wert |
Wert.java |
Diese abstrakte Klasse repräsentiert einen int- Wert |
13.2: Dateien und Verzeichnisse - Die Klasse File
|
Create.java |
Diese Klasse arbeitet mit File- Objekten |
13.3.1: Einfache Reader- und Writer-Klassen
|
WriteToFile.java |
Diese Klasse schreibt etwas in eine Datei |
13.3.2: Gepufferte Reader- und Writer-Klassen
|
BufferedWriteToFile.java |
Diese Klasse kann gepuffert etwas in eine Datei schreiben |
13.3.3: Die Klasse StreamTokenizer
|
ZahlenSumme.java |
Diese Klasse liest von der Tastatur eine Zeichenfolge ein um sie dann zu zerlegen und dabei die Zahlenwerte aufzusummieren und die Wörter aneinanderzuhängen |
13.3.4: Die Klasse PrintWriter
|
PrintWriting.java |
Diese Klasse kann mit Hilfe der print- Methode verschiedene Werte ausgeben |
13.3.5.1: Was machen eigentlich die IOTools?
|
InTools.java |
Diese Klasse zeigt wie die IOTools funktionieren |
13.3.5.2: Vereinfachte Konsoleneingabe in Java 5.0
|
Eingaben.java |
Konsolen-Eingabe unter Verwendung der Scanner-Klasse |
13.4.1: Einige InputStream- und OutputStream-Klassen
|
DataWriteAndRead.java |
Diese Klasse speichert elementare Werte in einer Datei und liest sie wieder ein |
14.2.3: Ein einfacher Client
|
DateTimeClient.java |
Diese Klasse ist ein Client für unseren Zeitserver |
14.2.4: Ein Server für mehrere Clients
|
DateTimeDienst.java |
Diese Klasse stellt das Protokoll für unseren DateTimeMultiServer zur Verfügung |
DateTimeMultiServer.java |
Diese Klasse ist kann mehrere Clienst gleichzeitig bedienen |
14.2.5: Ein Mehrzweck-Client
|
MyClient.java |
Diese Klasse ist ein Multifunktions- Client |
14.3.1: Client/Server-Kommunikation über URLs
|
LiesURL.java |
Diese Klasse liest den Text eines Webdokuments |
14.3.2: Netzwerkverbindungen in Applets
|
DateTimeApplet.java |
Diese Klasse ist ein Applet das Anfragen an unseren DateTimeMultiServer stellt |
15.1: Wem die Stunde schlägt, Iteration 7
|
SwingUhr.java |
Diese Klasse steuert unsere "lebendige" SwingUhr |
15.2: Wem die Stunde schlägt, Iteration 8
|
SocketKommunikation.java |
Diese Klasse stellt das Protokoll für die Kommunikation der Uhr mit einem Zeitserver zur Verfügung |
15.2.2: Die Klasse Zeitserver
|
Zeitserver.java |
Diese Klasse realisiert den Zeitserver für unsere Uhr |
15.2.3: Ein Testprogramm
|
Serverzeit.java |
Diese Klasse ist ein Testprogramm für unseren Zeitserver |
WieSpaet.java |
Diese Klasse ist eine einfache Uhrsteuerung |
15.3.2: Einige Vorbereitungen
|
EingestellteZeit.java |
Diese Klasse wird mit einer Zeit eingestellt und verwendet die interne Systemuhr, um neue Zeiten zu berechnen |
SwingUhr.java |
Diese Klasse dient mit einigen Erweiterungen immer noch zur grafischen Darstellung der Uhr |
15.3.3: Uhrenvergleich
|
Synchronisierer.java |
Diese Klasse synchronisiert zwei Uhren in einem vorgegebenen Zeittakt |
15.3.4: Der Einstellungs-Dialog
|
JavaUhr.java |
Diese Klasse ist unser neues Hauptprogramm |
SetzeZeitserver.java |
Diese Klasse ermöglicht in Verbindung mit dem Einstellungs-Dialog das Setzen der Darstellung (analog/digital + Farben) |
|