Aktuelles
Stand: 13. 7. 2008
Stichworte zum Stoff der Vorlesung, Beispielprogramme und weitere Materialien zur Vorlesung Einstieg in die Informatik mit Java im Sommersemester 2008 des IANM2 werden hier im Laufe der Vorlesung bereitgestellt.
Die Folien sind im PDF-Format, Sie benötigen zur Anzeige ggf. den Acrobat Reader.
1. (Dienstag, 15.4.) Einführung
- Inhalt der Vorlesung
- Parallele Veranstaltungen Java und C++
- Organisation des Praktikums
- Was ist Java?
- Geschichte von Java
- Literaturangaben
- Folien zu Einführung
2. (Mittwoch, 16.4.) Grundlagen
- Entwicklung eines einfachen Programms unter Linux: Editieren, Übersetzen, Ausführen
- Übertragung nach Windows: funktioniert ohne neu Übersetzen
- Hinweise zum Aufgabenblatt 1
- Programmbeispiele:
- HalloSS08.java ein typisches erstes Programm
- KugelVolumen5.java Auswertung einer mathematischen Formel mit Ein- und Ausgabe
- Grundelemente
- Kommentare
- Bezeichner
- Wortsymbole
- weitere Symbole
- Folien zu Grundelemente
- Vordefinierte Datentypen
- Ganze Zahlen
- Gleitkommazahlen
- Weitere Datentypen
- Folien zu Vordefinierte Datentypen
- Literalkonstanten
3. (Di, 22.4.) Variable, Ausdrücke
- Variable, Konstanten
- variable.handout.pdf|Folien Variable
- Arithmetische Ausdrücke, inklusive ++ und --
- Kombinierte Zuweisungen
- Logische Operatoren
- Weitere Operatoren
- Klassifizierung von Operatoren
- Typumwandlung
- Priorität der Operatoren
- Folien Ausdrücke
4. (Mi, 23.4.) Anweisungen
- Hinweise zum Aufgabenblatt 2 mit Pflichtaufgabe
- Ausdrucksanweisung
- Einfache Ausgabeanweisung
- Einfache Eingabeanweisung
- Verbundanweisung
- Bedingte Anweisung
- Auswahlanweisung
- for-Schleife
- while-Schleife
- do-Schleife
- Folien Anweisungen
- Beispiele: u.a. Verdoppeln, Maximum, Quersumme
5. (Di, 29.4.) Übungen
- Wiederholung und Ergänzungen zu Anweisungen
- break
- continue
- Leere Anweisung
- Erzeugung von Pseudo-Zufallszahlen
- Beispiele zu Anweisungen am Laptop
- PaschWuerfeln.java typische Anwendung einer do-Schleife: solange würfeln bis Pasch kommt
- PaschZaehlen.java typischer Einsatz einer for-Schleife: n-mal würfeln und Paschs zählen
- ForDouble5.java for-Schleife mit double-Variable - gefährlich!
- SinTab5.java for-Schleife: verwendet double-Werte, zählt aber mit int-Variable
- Reihen- und Parallelschaltung von Widerständen mit do-Schleife: Einlesen bis eine Null kommt ReiheParallel.java
- mit while-Schleife so ähnlich: Einlesen bis eine Null kommt ReiheParallelWhile.java
- mit for-Schleife: Anzahl der Werte vorab eingeben ReiheParallelFor.java
6. (Mi, 30.4.) Felder
- Hinweise zu Aufgabenblatt 3
- Sortierverfahren siehe Wikipedia
- Felder
- Vereinbarung von Feldern
- Erzeugen von Feldern
- Zugriff auf Feldkomponenten
- Mehrdimensionale Felder
- Felder als Objekte, Referenzen
- Wiederholung und Ergänzungen zu Methoden
- Felder als Parameter
- Hauptprogrammparameter
- Folien Felder
7. (Di, 6.5.) Übungen zu Feldern
- Beispiele
- VektorRechnung5.java Arbeiten mit Vektoren: Eingabe, Ausgabe, Addition, Multiplikation mit Faktor, Skalarprodukt
- MatMul5.java Matrixmultiplikation
8. (Mi, 7.5.) Objektorientierte Programmierung, Klassen
- Hinweise zu Aufgabenblatt 4
- Objektorientierte Programmierung, Klassen
- Philosophie
- Definition von Klassen
- Datenkapselung
- Instanzen
- Zugriff auf Elemente
- Konstruktoren
- Folien Klassen als Datenstruktur
9. (Di, 13.5.) Instanz- und Klassenkomponenten
- Wiederholung zu Klassen und Objektorientierter Programmierung
- Folien Instanzmethoden
- Variablenarten
- lokale Variablen
- formale Parameter
- Klassenvariablen
- Instanzvariablen
- Folien Klassenmethoden
10. (Mi, 14.5.) Beispiele zu Klassen, Vererbung
- Hinweise zu Aufgabenblatt 5
- Beispiele zu Klassen und objektorientierter Programmierung
- Variablen.java zeigt die Unterschiede im Gebrauch von Variablen
- ToStringDemo.java zeigt die Verwendung der Methode toString()
- Karteikarten.java Erstellen und Ausgeben von Karteikarten
- KarteikartenKonstr.java ... mit einem Konstruktor wird das Erstellen einfacher
- KarteikartenK1.java ... alles in einer Klasse
- KarteikartenK1Meth.java ... mit einer Instanzmethode wird die Ausgabe einfacher
- KlassenVorwaerts.java legale und illegale Vorwärtsbezüge
- Vererbung
11. (Di 20.5.) Vererbung
- Wiederholung Klassen- und Instanzkomponenten
- Beispiele zu Klassen und objektorientierter Programmierung
- KlasseOderInstanz.java demonstriert den Unterschied im Gebrauch von Klassen- und Instanzvariablen
- KlasseOderInstanzMethode.java demonstriert den Unterschied im Gebrauch von Klassen- und Instanzmethoden
- RatMul.java rationale Multiplikation mit Klassen- und Instanzmethoden
- Vererbung
- Folien Vererbung
- Beispiele zum Operator instanceof
- Fahrzeug.java Demo-Basisklasse
- Auto.java abgeleitete Klasse
- Pkw.java noch eine abgeleitete Klasse
- AutoTest.java Test, welches Fahrzeug von welchem Typ ist
- Beispiele zu Polymorphie
- Polymorphie.java demonstriert Polymorphie bei Instanzmethoden, Nicht-Polymorphie bei Klassenmethoden
12. (Mi 21.5.) Übungen zu Vererbung, Einführung zu Applets
- Beispiele zu Vererbung und Polymorphie:
- Haustier.java Basisklasse mit Methode wert() und Sortiermethode
- Hund.java abgeleitete Klasse mit polymorphen und zusätzlichen Methoden
- Katze.java ... ebenso
- Rassekatze.java abgeleitete Klasse von Katze, polymorphe Methode wert() erlaubt Sortieren nach neuem Kriterium
- Hinweise zu Aufgabenblatt 6
- Applets
- Einführung
- Sicherheitsmaßnahmen
- Ereignisgesteuerte Programmierung
- Ereignisse
- Folien Applets
- Beispiele zu Applets und zugehörige html-Dateien (wenn Sie die html-Datei anklicken, wird das Applet ausgeführt; um die html-Datei abzuspeichern, müssen Sie sie i.a. mit der rechten Maustaste anklicken und die Option "Ziel speichern unter" wählen):
- Applet1.java / Applet1.html Demobeispiel
- Applet2.java / Applet2.html Effekte mit Zufallszahlen
- Applet3.java / Applet3.html Ändern der Schriftfarbe
- Applet4.java / Applet4.html Ändern des Zeichensatzes
- FormenDemo.java / FormenDemo.html Demoprogramm zum Zeichnen diverser Formen
13. (Di 27.5.) Übungen zu Applets
- Beispiele zu Applets
- FarbPalette.java / FarbPalette.html Farbpalette mit 125 Farben ausgeben - mit Zeilenumbruch
- Lebenszyklus.java / Lebenszyklus.html Lebenszyklus eines Applets
- Lebenszyklus2.java / Lebenszyklus2.html Lebenszyklus eines Applets - mit Ausgabe auf Konsole
- SinPlot.java / SinPlot.html Sinuskurve ausgeben
- Interaktion mit Webseite des Applets
- AppletParam.java / AppletParam.html Parameter an ein Applet übergeben
- AppletParam2.java / AppletParam2.html ... mit Umwandlung in einen Zahlenwert
- AppletSetColor.java / AppletSetColor.html Parameter an ein Applet übergeben mittels Form und JavaScript
- Komponenten: Label, Button, TextField
- Beispiele zu Komponenten
- FarbPaletteLabel.java / FarbPaletteLabel.html Farbpalette mit 125 Farben ausgeben - mit Labels
- FarbPaletteLabelG.java / FarbPaletteLabelG.html Farbpalette mit 125 Farben ausgeben - mit Labels und GridLayout
- FarbPaletteButton.java / FarbPaletteButton.html Farbpalette mit 125 Farben ausgeben - mit Buttons
- FarbPaletteButtonG.java / FarbPaletteButtonG.html Farbpalette mit 125 Farben ausgeben - mit Buttons und GridLayout
14. (Mi 28.5.) Übungen und Ergänzungen zu Applets
- Tafelübungen, Beamer funktioniert nicht
- Wiederholungen
- Applets
- Komponenten
- Layout
- Hinweise zu Aufgabenblatt 7
- Memorybeispiel
- Beispiel innere Klasse
15. (Di 3.6.) Übungen zu Applets
- Tafelübungen, Beamer funktioniert nicht
- Schnittstellen
- Innere Klassen
- Ereignisverarbeitung
- Beispiel
- HintergrundFaerben.java / HintergrundFaerben.html Applet mit Button zum Färben des Hintergrunds
16. (Mi 4.6.) Applets mit Ereignisverarbeitung
- Beispiele ohne Ereignisverarbeitung
- MicroEditor.java / MicroEditor.html ein Micro-Editor mit einem TextField
- MicroEditor2.java / MicroEditor2.html ein Micro-Editor mit einer TextArea
- MicroEditor3.java / MicroEditor3.html ein Micro-Editor mit einer TextArea und einem Label, in dem Zeichen und Zeilen gezählt werden
- MicroRechner.java / MicroRechner.html ein Micro-Rechner mit TextField und Label
- MicroRechner2.java / MicroRechner2.html ein Micro-Rechner mit geschachteltem Layout
- MicroRechner3.java / MicroRechner3.html ein Micro-Rechner mit Operationen + - * /
- Hinweise zu Aufgabenblatt 8
- Folien zu Schnittstellen
- Folien zu Inneren Klassen
- Folien zu Ereignisverwaltung und Layout
- Beispiel-Programme zu Applets mit Maus-Ereignissen:
- MouseDemo.java / MouseDemo.html bei Mausklick Hintergrundfarbe wechseln mit Interface
- MouseDemo2.java / MouseDemo2.html bei Mausklick Hintergrundfarbe wechseln mit Interface - ausführlichere Version
17. (Di 10.6.) Übungen zu Applets mit Ereignisverarbeitung
- Folien zu Applets und Ereignisverarbeitung
- Beispiele dazu
- Refresh.java / Refresh.html Bild flackert oder auch nicht - je nach dem welcher Programmteil auskommentiert ist
- Komponentenbsp.java / Komponentenbsp.html Komponenten zu Applet hinzufügen - aber ohne Funktion
- Koordinatensystem.java / Koordinatensystem.html Koordinatensystem verschieben, zeichnen, ...
- Framebsp.java Frame statt Applet, wird in Hauptprogramm main erzeugt
- Eventbsp.java / Eventbsp.html ähnlich wie Komponentenbsp, aber mit funktionierenden Komponenten dank entsprechender Listener
- Kurvendisk.java / Kurvendisk.html für ein wählbares Polynom 3. Grades Kurvendiskussion durchführen
- Beispiel-Programme zu Applets mit Maus-Ereignissen:
- MouseDemoF.java / MouseDemoF.html bei Mausklick Hintergrundfarbe wechseln mit Interface
- MouseDemoF2.java / MouseDemoF2.html bei Mausklick Hintergrundfarbe wechseln mit Interface - ausführlichere Version
- MouseDemoF3.java / MouseDemoF3.html bei Mausklick Hintergrundfarbe wechseln mit Adapterklasse
- MouseDemoF4.java / MouseDemoF4.html bei Mausklick Hintergrundfarbe wechseln mit anonymer Klasse
- MouseDemoF5.java / MouseDemoF5.html bei Mausklick Koordinaten bestimmen und ausgeben
- MouseDemoF6.java / MouseDemoF6.html bei Drücken und Loslassen der Maustaste Koordinaten bestimmen und ausgeben
- MouseDemoF7.java / MouseDemoF7.html beim Verlassen und Wiederbetreten des Applets Koordinaten bestimmen und ausgeben
- MouseDemoF8.java / MouseDemoF8.html bei Mausbewegungen Koordinaten bestimmen und ausgeben
- Beispiele zu Varianten bei der Ereignisverarbeitung
18. (Mi 11.6.) Übungen zu Applets mit Ereignisverarbeitung
- Hinweise zu Aufgabenblatt 9
- Komponente Choice, Hinweis auf Java-Dokumentation
- Evaluation der Vorlesung
- Beispiele mit Ereignisverarbeitung
- MicroEditor4.java / MicroEditor4.html ein Micro-Editor mit einem Button zum Zählen der Zeichen und Wörter
- MicroEditor5.java / MicroEditor5.html ein Micro-Editor mit einem TextListener zum Zählen der Zeichen und Wörter
- MicroRechner4.java / MicroRechner4.html ein Micro-Rechner mit Button zum Ausführen der Operationen
- MicroRechner5.java / MicroRechner5.html ein Micro-Rechner mit TextListenern zum Ausführen der Operationen und etwas Fehlerbehandlung
- MicroRechner6.java / MicroRechner6.html ein Micro-Rechner, rechnet mit double statt int
- RechnerApplet.java / RechnerApplet.html ein kleiner Taschenrechner, viele Buttons werden über eine gemeinsame ActionListener-Klasse behandelt
19. (Di 17.6.) Beispiele zu Applets
- Wiederholung zu Applets
- Beispiele
- BST.java / BST.html mehrere Komponenten sind miteinander verkoppelt über entsprechende Listener
- EM2008Vorrunde.zip Serie von drei Beispielen zur Fussball-EM in einem Zip-File
- EM08Spiel.java / EM08Spiel.html Spielsimulation
20. (Mi 18.6.) Ausnahmen, Threads
- Hinweise zu Aufgabenblatt 10
- Erläuterungen zum Ablauf von Conways Spiel des Lebens
- Conways Spiel des Lebens auf Wikipedia
- Ausnahmen
- Folien zu Ausnahmen
- Threads
- Folien Threads
- Beispiele zu Threads
- PingPong.java, Uhrzeit.java Demo-Programme zu Threads
- UhrzeitApplet.java / UhrzeitApplet.html Applet zur Ausgabe der aktuellen Zeit
- Ueberweisungen.java Demoprogramm mit 3 Threads, demonstriert Probleme beim unkontrollierten Zugriff mehrerer Threads auf die gleichen Daten; 9 Überweisungen pro Thread pro Sekunde
- Ueberweisungen2.java ebenso, aber Überweisungen werden mit maximaler Geschwindigkeit ausgeführt
- Ueberweisungen6.java verbesserte Version, bei der die Überweisungen synchronisiert werden; dadurch treten keine Unstimmigkeiten mehr auf
21. (Di 24.6.) Beispiele zu Applets und Threads
- Wiederholung zu Applets
- Beispiele zu Applets
- EM2008Finale.java / EM2008Finale.html Simulation der drei letzten Spiele
- Beispiel-Programme zu Threads
- UhrzeitAppletDate.java / UhrzeitAppletDate.html Applet zur Ausgabe der aktuellen Zeit und des Datums mit Date und SimpleDateFormat
- Wecker.java Zwei schlafende Threads werden manchmal vorzeitig aufgeweckt
- BlinkThreads.java / BlinkThreads.html Applet mit 100 farbigen Feldern, die mittels Threads unabhängig voneinander blinken können - obwohl das Bild nur einmal pro Sekunde aktualisiert wird, flackert es
- BlinkThreads2.java / BlinkThreads2.html Applet mit 100 farbigen Feldern, die mittels Threads unabhängig voneinander blinken können - durch die Verwendung von 100 Canvas Objekten flackert es nicht mehr, selbst bei schneller Aktualisierung des Bildes
- BlinkButtons.java / BlinkButtons.html Applet mit 4 Buttons, die mittels 4 Threads unabhängig voneinander blinken können
- MeinThread.java Klasse zu Threads, besitzt leere Methode aktion()
- MeinThreadTest.java erzeugt 2 Threads aus MeinThread, ersetzt die Methode aktion()
- MeinThreadTest2.java erzeugt 2 Threads aus MeinThread, ersetzt die Methode aktion() mit ganz verschiedenen Aktionen
- Beispiel-Programme zu Tastatur-Ereignissen:
- KeyColor.java / KeyColor.html Zeichen von der Tastatur einlesen und verarbeiten - mit Implementierung eines Listeners
22. (Mi 25.6.) Swing
- Hinweise zum Aufgabenblatt 11
- Hinweise zur Klausur
- Swing
- Folien zu Swing
- Swing Tutorial der Johns Hopkins University
- Beispiele zu Swing
- SwingApplet.java / SwingApplet.html Swing-Applet mit einem Button und einem Label
- SwingButtonImageIconApplet.java / SwingButtonImageIconApplet.html Button mit Bild
- SwingBorder.java / SwingBorder.html Swing-Applet, wechselt den Rand eines Labels, mit Bild
- SwingBST.java / SwingBST.html Swing-Applet: Buttons, Scrollbar und Textfeld beeinflussen sich gegenseitig
- SwingRadioButtonApplet.java / SwingRadioButtonApplet.html Swing-Applet mit 4 Radiobuttons, die sich zum Teil gegenseitig ausschließen
- SwingColorChooserApplet.java / SwingColorChooserApplet.html Swing-Applet mit ColorChoosern zur Auswahl der Hintergrund- und Vordergrundfarben
- SwingBoxen.java / SwingBoxen.html Swing-Applet, das verschiedene Meldungs- und Eingabeboxen anzeigt
23. (Di 1.7.) Rekursion, Fraktale
- Wiederholung zu Rekursion
- Einsatz der Rekursion bei der Berechnung von Fraktalen
- Beispiel Baum des Pythagoras
- Pythagorasbaum auf Wikipedia
- Pythagorasappl.java / Pythagorasappl.html Konstruktion des Pythagorasbaums mit rekursiver Methode
- Kochsche Schneeflocke
- Kochsche Schneeflocke auf Wikipedia
- SchneeflockenApplet2.java / SchneeflockenApplet2.html Applet zur Konstruktion der Kochschen Schneeflocke, Wahl der Parameter mit Textfeldern
- Weitere Fraktale
- Fraktal auf Wikipedia
- Hilbert-Kurve auf Wikipedia
- Hilbert2.java / Hilbert2.html Applet zur Konstruktion der Hilbertkurve; linke Maustaste: Rekursionsgrad erhöhen, rechte Maustaste: Rekursionsgrad reduzieren (Achtung: im gleichen Verzeichnis darf keine Klasse Point existieren!)
24. (Mi 2.7.) Backtracking
- Hinweise zum Aufgabenblatt 12
- Methode der Rückverfolgung / Backtracking
- Vorführung an Tafel
- Backtracking auf Wikipedia
- Beispiel Lösen des Achtdamenproblems per Backtracking
- Achtdamenproblem auf Wikipedia
- Achtdamen.java Lösung des Achtdamenproblems mit rekursiver Methode; benötigt für die Eingabe Prog1Tools.zip
- AchtdamenApp.java stellt die Lösungen des vorigen Programms grafisch dar (KEIN Applet, sondern Frame)
- Beispiel Lösen eines Sudokus per Backtracking
- Sudoku auf Wikipedia
- Sudoku.java Lösung eines Sudokus mit rekursiver Methode; benötigt für die Eingabe Prog1Tools.zip
25. (Di 8.7.) Sudoku, Fraktale, Frames
- Sudoku erstellen
- SudokuErzeugen.java Sudoku erzeugen (zu Algorithmen siehe Wikipedia)
- SudokuApplet.java grafische Oberfläche für Sudoku-Spiel
- icon-b0-9.zip Icons für "Billardkugeln" 0-9
- SudokuAppletJar.html Webseite zum Ausführen des in ein Jar-Archiv verpackten Applets (korrigierte Version)
- Fraktale
- ApfelD.java / ApfelD.html Applet zur Berechnung von Apfelmännchen
- MartinFractal2.java / MartinFractal2.html Applet zur Darstellung einer fraktalen Punktfolge
- Frames
- FrameDemo1.java / FrameDemo2.java / FrameDemo3.java drei DemoProgramme zur Arbeit mit Frames
- SwingDemo.java / SwingDemo2.java zwei Demoprogramme zur Arbeit mit Swing-Frames
- DrawMatrix.java / DrawMatrixTest0.java / DrawMatrixTest5.java Programm zur Visualisierung einer Matrix mittels eines Frames und 2 Testprogramme
26. (Mi 9.7.) Klausurvorbereitung
- Rückblick auf den Stoff des Semesters
- Grundelemente der Sprache
- Objektorientierte Programmierung mit Klassen
- Applets mit Ereignisverarbeitung
- Beispiele
- Siedler.java Klasse mit Instanz- und Klassenkomponenten
- Preisberechnung.java / Preisberechnung.html Applet zur Preisberechnung mit Mehrwertsteuer und Rabatt
27. (Di 15.7.) Klausurbesprechung, java5
- Klausurbesprechung
- Programbeispiele zu den Neuerungen von Java 5 - jeweils zum Vergleich in Java 1.4 und Java 5:
- Eingabe mit Scanner
- Ausgabe mit printf
- Formeln mit static-import
- for-Schleifen
- Variable Argumentlisten
- Hüllklassen: automatische Konversion
- Generische Programmierung
- siehe Ordner java5
28. (Mi 16.7.) Scheinausgabe, Klausureinsicht
- ab 9:45 Uhr im Rechenzentrum vor dem Praktikumsraum
Hinweise
Sie dürfen Beispielprogramme und Foliensätze von dieser Seite zum Erlernen der Sprache Java verwenden. D.h. sie dürfen sie (auf eigenes Risiko) kopieren, ausdrucken, ausführen, verändern, erweitern, usw. Eine Veröffentlichung der Programme, z.B. als Aufgabensammlung, bzw. der Folien ist dagegen nicht erlaubt.