|
Dietmar Ratz, Jens Scheffler, Detlef Seese, Jan Wiesenberger
Grundkurs Programmieren in Java
Band 1: Der Einstieg in Programmierung und Objektorientierung (3. Auflage, Carl Hanser Verlag, 2006)
Band 2: Einführung in die Programmierung kommerzieller Systeme (2. Auflage, Carl Hanser Verlag, 2006) |
|
Beispielprogramme aus Band 1
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 - mehr als nur kalter Kaffee?
2. Java für Anfänger - das Konzept dieses Buches
3. Weitere Infos und Kontakt zu den Autoren
4. Verwendete Schreibweisen
2. Einige Grundbegriffe aus der Welt des Programmierens
1. Computer, Software, Informatik und das Internet
2. Was heißt Programmieren?
3. Aller Anfang ist schwer
1. Mein erstes Programm
2. Formeln, Ausdrücke und Anweisungen
3. Zahlenbeispiele
4. Verwendung von Variablen
5. Auf den Schirm!
6. Das Programmgerüst
7. Eingeben, übersetzen und ausführen
8. Übungsaufgaben
4. Grundlagen der Programmierung in Java
1. Grundelemente eines Java-Programms
1. Kommentare
2. Bezeichner und Namen
3. Literale
4. Reservierte Wörter, Schlüsselwörter
5. Trennzeichen
6. Interpunktionszeichen
7. Operatorsymbole
8. import-Anweisungen
9. Zusammenfassung
10. Übungsaufgaben
2. Erste Schritte in Java
3. Einfache Datentypen
1. Ganzzahlige Datentypen
2. Gleitkommatypen
3. Der Datentyp char für Zeichen
4. Zeichenketten
5. Der Datentyp boolean für Wahrheitswerte
6. Implizite und explizite Typumwandlungen
7. Zusammenfassung
8. Übungsaufgaben
4. Der Umgang mit einfachen Datentypen
5. Anweisungen und Ablaufsteuerung
1. Anweisungen
2. Blöcke und ihre Struktur
3. Entscheidungsanweisung
4. Wiederholungsanweisungen, Schleifen
5. Sprungbefehle und markierte Anweisungen
6. Zusammenfassung
7. Übungsaufgaben
5. Praxisbeispiele
1. Worum geht es in diesem Kapitel?
2. Teilbarkeit zum ersten
1. Aufgabenstellung
2. Analyse des Problems
3. Algorithmische Beschreibung
4. Programmierung in Java
5. Vorsicht Falle
6. Übungsaufgaben
3. Teilbarkeit zum zweiten
1. Aufgabenstellung
2. Analyse des Problems
3. Algorithmische Beschreibung
4. Programmierung in Java
5. Vorsicht Falle
6. Übungsaufgaben
4. Dreierlei
1. Aufgabenstellung
2. Analyse des Problems
3. Algorithmische Beschreibung
4. Programmierung in Java
5. Vorsicht Falle
6. Übungsaufgaben
6. Referenzdatentypen
7. Unterprogramme, Methoden
1. Methoden
2. Rekursiv definierte Methoden
1. Motivation
2. Das Achtdamenproblem
1. Aufgabenstellung
2. Lösungsidee
3. Erste Vorarbeiten: Die Methoden ausgabe und bedroht
4. Die Rekursion
5. Die Lösung
3. Zusammenfassung
4. Ubungsaufgaben
3. Die Methode main
4. Methoden aus anderen Klassen aufrufen
5. Methoden von Objekten aufrufen
6. Übungsaufgaben
8. Praxisbeispiele
1. Mastermind zum ersten
1. Aufgabenstellung
2. Analyse des Problems
3. Unterteilen einer Zahl
4. Gültigkeit einer Zahl
5. Finden einer gültigen Zahl
6. Anzahl der Treffer
7. Ein- und Ausgabe
8. Zum Hauptprogramm
9. Das komplette Programm im Überblick
2. Mastermind zum zweiten
1. Aufgabenstellung
2. Analyse des Problems
3. Verwendete Datenstrukturen
4. Vergleich der Versuche
5. Zum Hauptprogramm
6. Das komplette Programm im Überblick
3. Black Jack
1. Aufgabenstellung
2. Analyse des Problems
3. Mischen eines Kartenspiels
4. Die Pflichten des Gebers
5. Zum Hauptprogramm
6. Das komplette Programm im Überblick
7. Übungsaufgaben
9. Die objektorientierte Philosophie
1. Die Welt, in der wir leben
2. Programmierparadigmen - Objektorientierung im Vergleich
3. Die vier Grundpfeiler objektorientierter Programmierung
1. Generalisierung
2. Vererbung
3. Kapselung
4. Polymorphismus
5. Weitere wichtige Grundbegriffe
4. Modellbildung - von der realen Welt in den Computer
5. Zusammenfassung
6. Übungsaufgaben
10. Der grundlegende Umgang mit Klassen
11. Vererbung und Polymorphismus
12. Praxisbeispiele
1. Streng geheim
1. Aufgabenstellung
2. Analyse des Problems
3. Verschlüsselung durch Aufblähen
4. XOR-Verschlüsselung
5. Ein einfacher Test
6. Übungsaufgaben
2. Mastermind zum dritten
1. Aufgabenstellung
2. Die Klassen GameModel und GameEngine
3. Wir bauen ein Modell
4. Programmstart
5. Fazit
6. Übungsaufgaben
3. Game of Life
1. Aufgabenstellung
2. Designphase
3. Die Klasse Zelle
4. Die Klasse Petrischale
5. Die Klasse Life
6. Fazit
7. Übungsaufgaben
13. Exceptions und Errors
1. Eine Einführung in Exceptions
2. Exceptions für Fortgeschrittene
3. Assertions
14. Fortgeschrittene objektorientierte Programmierung in Java 5.0
1. Aufzählungstypen
2. Generische Datentypen
15. Zu guter Letzt
3.1: Mein erstes Programm
|
Berechnung.java
|
Gibt die Summe zweier Zahlen auf dem Bildschirm aus.
|
4.1.10: Übungsaufgaben
|
Berechnung.java
|
Fehlerhafte Berechnungs-Klasse aus den Übungsaufgaben.
|
4.2.2: Ausgaben auf der Konsole
|
HalloWelt.java
|
Das wohl berühmteste Einsteiger-Programm der Programmiergeschichte.
|
4.2.4: Schöner Programmieren in Java
|
Unsorted.java
|
Dieses Programm ist ein Beispiel dafür, wie das Einhalten weniger Formatierungsregeln die Lesbarkeit von Code steigert.
|
Version A
|
Nicht formatierte Version.
|
Version B
|
Gemäss der Richtlinien überarbeitete Version.
|
4.3.2: Gleitkommatypen
|
Floatdiv.java
|
Division bei Gleitkommazahlen
|
Intdiv.java
|
Division bei ganzen Zahlen
|
Version A
|
Division ohne Rest
|
Version B
|
Division mit Rest
|
4.4.4: Ein- und Ausgabe
|
IOToolsTest.java
|
Beispielprogramm für die Eingabe über Tastatur
|
4.4.4.1: Statischer Import der IOTools-Methoden in Java 5.0
|
IOToolsTestMitStaticImport.java
|
Beispielprogramm für die Eingabe über Tastatur (mit statischem Import der Methoden)
|
5.2: Teilbarkeit zum ersten
|
Teilbarkeit1.java
|
Teile eine dreistellige Zahl in ihre Ziffern auf. Das Programm verwendet hierzu drei if-Abfragen.
|
5.3: Teilbarkeit zum zweiten
|
Teilbarkeit2.java
|
Teile eine dreistellige Zahl in ihre Ziffern auf. Das Programm verwendet hierzu eine for-Schleife. Es funktioniert somit auch mit mehr als drei Ziffern.
|
6.1: Felder
|
UmstaendlicherKalender.java
|
Dieses Programm zeigt, wie ein Terminkalender ohne Verwendung von Feldern nur schwer programmiert werden kann.
|
6.1.3: Felder unbekannter Länge
|
Swap.java
|
Vertauscht ein Feld von Zahlen.
|
6.1.4: Referenzen
|
Doppel.java
|
Das Programm verdoppelt eine einzelne Zahl.
|
DoppelFeld.java
|
Das Programm verdoppelt ein Feld von Zahlen.
|
6.1.6: Mehrdimensionale Felder
|
MonatsKalender.java
|
Das Kalenderprogramm, gültig für einen ganzen Monat.
|
6.1.9: Vereinfachte for-Schleifen-Notation in Java 5.0
|
MehrSchleifen.java
|
Traditionelle und neue, vereinfachte Schleifen-Notation mehrdimensional
|
Schleifen.java
|
Traditionelle und neue, vereinfachte Schleifen-Notation eindimensional
|
6.2.4: Ein erstes Adressbuch
|
AdressBuch_v1.java
|
Eine einfache Adressverwaltung. Funktioniert nur mit einer Adresse.
|
6.2.5: Klassen als Referenzdatentyp
|
AdressBuch_v2.java
|
Eine einfache Adressverwaltung für zwei Adressen.
|
6.2.6: Felder von Klassen
|
AdressBuch_v3.java
|
Eine einfache Adressverwaltung für zwanzig Adressen.
|
6.2.8: Auslagern von Klassen
|
Adresse.java
|
Die Adresse, in eine eigene Java-Datei ausgelagert.
|
7.1: Methoden
|
Eval1.java
|
Das Programm führt eine simple Berechnung aus (Potenz).
|
Eval2.java
|
Das Programm führt dieselbe Berechnung wie Eval1 aus, jedoch mehr als einmal. Der Code bläht sich entsprechend auf.
|
7.1.4: Aufruf von Methoden
|
AufrufTest.java
|
Was passiert, wenn wir den Inhalt von übergebenen Parametern in der Methode abändern?
|
7.1.6: Vorsicht Falle!
|
Argumente.java
|
Summationsmethode mit variabler Argumentliste
|
7.1.7: Sichtbarkeit und Verdecken von Variablen
|
AufrufTest2.java
|
Vorsicht Falle: Übergabe von Arrays an Methoden.
|
AufrufTest3.java
|
Explizites Kopieren von Feldinhalten.
|
7.2.2: Das Achtdamenproblem
|
Achtdamen.java
|
Das Programm löst die Aufgabe, acht Damen so auf dem Feld zu plazieren, dass sie sich nicht gegenseitig schlagen können.
|
7.3.1: Kommandozeilenparameter
|
GrussWort.java
|
Das Programm liest Kommandozeilenparameter aus und verwertet sie in einem Gruss.
|
7.4.3: Statischer Import in Java 5.0
|
StatischeImports.java
|
Klasse, die statisch importierte Math-Methoden benutzt
|
7.5.2: Die Methoden der Klasse java.lang.String
|
StringTest.java
|
Einige Beispiele für den Umgang mit Strings.
|
8.1: Mastermind zum ersten
|
Mastermind.java
|
Eine Realisierung des Mastermind-Spiels.
|
8.2: Mastermind zum zweiten
|
Masterguess.java
|
Dieses Programm kann im Mastermind-Spiel die Zahl in weniger als 10 Zügen erraten.
|
10.1: Vom Referenzdatentyp zur Objektorientierung
|
Student.java
|
Studenten-Klasse, erster Versuch.
|
10.2.1: Zugriffsrechte
|
Student.java
|
Aus Gründen der Kapselung wurden die Instanzvariablen auf private gesetzt.
|
10.2.2: Was sind Instanzmethoden?
|
Student.java
|
Der Zugriff auf private Bestandteile der Klasse wird durch Methoden gekapselt.
|
10.2.3: Instanzmethoden zur Validierung von Eingaben
|
Student.java
|
Die Matrikelnummer kann auf Gültigkeit geprüft werden.
|
10.2.4: Instanzmethoden als erweiterte Funktionalität
|
Student.java
|
Die Klasse besitzt jetzt eine toString-Methode.
|
10.3.1: Klassenvariablen und -methoden
|
Student.java
|
Neuer Bestandteil: ein Instanzzähler.
|
10.3.2: Konstanten
|
Student.java
|
Konstanten definieren die Studienfächer.
|
10.4.1: Konstruktoren
|
Student.java
|
Neu: ein selbstdefinierter argumentloser Konstruktor.
|
10.4.2: Überladen von Konstruktoren
|
Student.java
|
Die Studenten-Klasse, diesmal mit zwei Konstruktoren.
|
Version A
|
Beide Konstruktoren sind unabhängig voneinander definiert.
|
Version B
|
Ein Konstruktor setzt mit Hilfe des Schlüsselwortes this auf dem anderen auf.
|
10.4.3: Der statische Initialisierer
|
Student.java
|
Das Phantom der Uni - erzeugt durch einen statischen Initialisierer.
|
10.4.4: Der Mechanismus der Objekterzeugung
|
Student.java
|
Die Klasse Student
|
Sub.java
|
Subklasse für den Test der Aufrufreihenfolge beim Erzeugen von Objekten.
|
Super.java
|
Superklasse für den Test der Aufrufreihenfolge beim Erzeugen von Objekten.
|
11.1.4: Eine Klasse für sich
|
Yen.java
|
Die japanische Währung.
|
11.1.6: Übungsaufgaben
|
Euro.java
|
Die europäische Währung.
|
11.2: Die super-Referenz
|
NonsensDollar.java
|
Klasse mit einer völlig unsinnig überschriebenen Methode ;-)
|
11.3: Überschreiben von Methoden und Variablen
|
Sohn.java
|
Test: Überschreiben von Variablen und Methoden.
|
Vater.java
|
Test: Überschreiben von Variablen und Methoden.
|
11.7: Übungsaufgaben
|
KreisPlot.java
|
Übungsaufgabe: Zeichnen von Kreisen.
|
11.8.3: Innere Klassen
|
Aufzaehlung.java
|
Mit Hilfe einer Folge wird durch eine Ansammlung von Objekten iteriert.
|
Version A
|
Klasse vor der Definition der Aufzahlungsklasse.
|
Version B
|
Klasse mit Folge als innere Klasse.
|
Folge.java
|
Interface fuer die Festlegung der Methoden zur Abarbeitung der Elemente
|
11.8.4: Anonyme Klassen
|
Aufzaehlung.java
|
Hier wurde die Folge in einer anonymen Klasse erzeugt.
|
12.2: Mastermind zum dritten
|
MasterGame.java
|
Eine grafische Oberfläche für das Mastermind-Spiel.
|
12.3: Game of Life
|
Life.java
|
Hauptprogramm: Game of Life.
|
Petrischale.java
|
Der Zustand der Zellkultur zu einem bestimmten Zeitpunkt.
|
Zelle.java
|
Eine einzelne Zelle im Zellverbund.
|
13: Exceptions und Errors
|
Excep1.java
|
Ein sehr einfaches Programm, welches aber bereits eine Exception produzieren kann.
|
13.1.3: Abfangen von Exceptions
|
Excep2.java
|
Die bei Division durch 0 auftrende Exception wird abgefangen.
|
13.1.4: Ein Anwendungsbeispiel
|
Mittelwert.java
|
Das Programm liest Zahlen aus einer Datei ein und berechnet den Mittelwert.
|
13.2.1: Definieren eigener Exceptions
|
InputException.java
|
Ausnahme fuer Kommunikationsprobleme mit der Tastatur
|
KeyTools.java
|
Diese kleine Klasse macht den IOTools Konkurrenz ;-)
|
13.2.4: Vorsicht, Falle!
|
PingPong.java
|
Ein Programm, welches Exceptions auslöst.
|
Version A
|
Die PingPongException wird vor der PongException gefangen.
|
Version B
|
Die PongException wird vor der PingPongException gefangen.
|
13.2.5: Der finally-Block
|
PingPong.java
|
Ein Programm, welches Exceptions auslöst.
|
Version A
|
Alle Exceptions ausser der PongException werden weitergeleitet.
|
Version B
|
Das Betreten und verlassen des "kritischen Bereichs" wird durch Ausgaben auf die Konsole gekennzeichnet.
|
Version C
|
Die Meldung des "Verlassens" wandert in den try-Block.
|
Version D
|
Die Meldung des "Verlassens" wird dupliziert: sie steht sowohl im catch-Block als auch nach der try-catch-Anweisung
|
Version E
|
Die wahrhaft elegante Lösung: die Ausgabe erscheint im finally-Block.
|
13.3.1: Zusicherungen im Programmcode
|
AssertionTest.java
|
Methode kehrwert mit einer Zusicherung
|
14.1.1: Deklaration eines Aufzählungstyps
|
Jahreszeit.java
|
Die vier Jahreszeiten als enum-Typ
|
14.1.2: Instanzmethoden der enum-Objekte
|
Aufzaehlungen.java
|
Verwendung des Jahreszeiten-enum-Typs
|
14.1.3: Selbstdefinierte Instanzmethoden für enum-Objekte
|
Enumerations.java
|
Verwendung des Noten-Typs
|
Noten.java
|
Die Noten auf der Klavier-Tastatur
|
14.2.6: Generische Methoden
|
GenPaarTest3.java
|
Testprogramm mit generischen Methoden
|
GenPaarTest5.java
|
Testprogramm mit generischen Methoden und eingeschränkten Typ-Parametern
|
15.1: Collections
|
Namensliste.java
|
Liest eine beliebige Menge von Namen von der Tastatur und gibt sie verkehrt herum wieder aus.
|
15.2: Sortieren von Feldern
|
Ring.java
|
Eine nach Größe sortierbare Ringklasse.
|
RingDemo.java
|
Erzeugt zehn zufaellige Ringe und sortiert sie.
|
|