Aktuelles
Hinweise, Stand: 10. 2. 2009
Stichworte zum Stoff der Vorlesung, Beispielprogramme und weitere Materialien zur Vorlesung Einstieg in die Informatik mit Java im Wintersemester 2008/2009 des IANM2 werden hier im Laufe der Vorlesung bereitgestellt.
Die Folien sind im PDF-Format, Sie benötigen zur Anzeige ggf. den Acrobat Reader.
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.
1. (Montag, 20.10.) 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. (Dienstag, 21.10.) Grundlagen
- Literaturangaben
- Entwicklung eines einfachen Programms unter Linux: Editieren, Übersetzen, Ausführen
- EingabeAusgabe.java
- Übertragung nach Windows: funktioniert ohne neu Übersetzen
- Grundelemente
- Kommentare
- Bezeichner
- Wortsymbole
- weitere Symbole
- Folien zu Grundelemente
- Vordefinierte Datentypen
- Ganze Zahlen
- Gleitkommazahlen
- Weitere Datentypen
- Folien zu Vordefinierte Datentypen
- Literalkonstanten
- Folien zu Literalkonstanten
- Variablen
- Folien zu Variablen
3. (Montag, 27.10.) Einfache Anweisungen
- Wiederholung zu Datentypen, Variablen
- Einfache Ausdrücke, insbesondere:
- Ganzahlige Division
- Rest bei Division
- Inkrement- und Dekrementoperatoren
- Zuweisungsoperator
- Mathematische Standardfunktionen
- Folien zu einfachen Ausdrücken
- Anweisungen
- Ausdrucksanweisung, insbesondere Wertzuweisung
- Ausgabe mit println und print, Mehrdeutigkeit von +
- Eingabe mit Scanner
- Folien zu einfachen Anweisungen
- Beispiele zu Ausdrücken
- Vorführung mit dem interaktiven System Dr Java
4. (Dienstag, 28.10.) Übungen zu einfachen Anweisungen
- Wiederholung zu Ausdrücken und Anweisungen
- Bemerkungen zur Installation von Java unter Windows, Editor Joe
- Anleitung zu Aufgabenblatt 1
- Drehkegel.java Berechnung der Oberfläche und des Volumens eines Drehkegels
- Anleitung zu Aufgabenblatt 2
- Quadratische Gleichung, Genauigkeitsprobleme
- Wikipedia: Quadratische Gleichung
- Bemerkungen zur Lösung einer Gleichung dritter Ordnung
- Wikipedia: Cardanische Formel
- Wikipedia: Gerolamo Cardano
- Beispiele zu Ausdrücken und Anweisungen: Umsetzung einer einfachen mathematischen Formel in ein Programm
- KugelVolumen5.java Berechnung des Volumens einer Kugel
- Fahrenheit5.java Umrechnung zwischen Grad Celsius und Fahrenheit
5. (Montag, 3.11.) Weitere Ausdrücke und Anweisungen
- Programmentwicklung
- Weitere Ausdrücke
- Vergleichsoperatoren
- kombinierte Zuweisungen
- logische Operatoren
- weitere Operatoren
- Klassifizierung von Operatoren
- Typumwandlungen
- Priorität der Operatoren
- Folien zu weiteren Ausdrücken
- Weitere Anweisungen
- Verbundanweisung
- bedingte Anweisung
- Auswahlanweisung
- Folien zu weiteren Anweisungen
6. (Dienstag, 4.11.) Übungen zu Anweisungen
- Wiederholung zu weiteren Ausdrücken und Anweisungen
- Weitere Anweisungen
- for-Schleifen
- while-Schleifen
- do-Schleifen
- break-Anweisung
- continue-Anweisung
- leere Anweisung
- Anleitung zu Aufgabenblatt 3
- Beispiele mit Dr Java
- Vergleiche, boolean Variablen, boolean Operatoren
- Verwechslungsgefahr bei = und ==, insbesondere bei boolean
- Rechnen mit Unendlich und NaN
- Beispielprogramme
- RandomDemo.java Erzeugen von Zufallszahlen
- RandomPi.java Berechnung von Pi mittels Zufallszahlen
7. (Montag, 10.11.) Zufallszahlen, Pi, Effizienz von Algorithmen
- Beispiele zu Zufallszahlen
- WuerfelZaehlen5.java Würfelexperiment: wie oft wird eine bestimmte Zahl erwürfelt; typische Anwendung einer for-Schleife
- PaschWuerfeln.java Würfelexperiment: wie lange dauert es bis Pasch gewürfelt wird; typische Anwendung einer do-Schleife
- Berechnung von Pi
- RandomPi.java Berechnung von Pi mittels Zufallszahlen
- PiBerechnung.java Berechnung von Pi durch Dreiecke
- PiBerechnung2.java Berechnung von Pi durch Reihenauswertung
- PiBerechnung3.java Berechnung von Pi durch Algorithmus von Borwein
- Effizienz von Algorithmen
- Weitere Beispiele mit Zufallszahlen:
- Ein physikalisches Experiment: BrownscheBewegung.java
8. (Dienstag, 11.11.) Felder
- Beispielprogramme zu Anweisungen
- ForDouble5.java for-Schleife mit double-Variable - gefährlich!
- Max35.java Maximum von 3 Zahlen: Schachtelung bedingter Anweisungen
- Felder
- Vereinbarung von Feldern
- Erzeugen von Feldern
- Zugriff auf Feldkomponenten
- Folien zu Feldern
- Anleitung zu Aufgabenblatt 4
- Statistische Berechnungen
- Summe: Initialisierung der Summationsvariablen
- Sortieralgorithmen
- Wikipedia: Sortierverfahren
9. (Montag, 17.11.) Übungen zu Feldern
- Wiederholung Felder
- Beispiele und Bemerkungen zu Sortieralgorithmen
- Ablauf von Bubble Sort an einem Beispiel
- BUBBLE-4.zip Veranschaulichung zu Bubble Sort
- BubbleSort3.java beliebig viele Zahlen einlesen, sortieren und ausgeben; Laufzeitmessungen
- BubbleSortLine.java beliebig viele Zeilen Text einlesen, alphabetisch sortieren und ausgeben; Veranschaulichung kleinerer Probleme beim Beispieltext BubbleSortLine.txt
- Wikipedia: Sortieren mit Combsort
- CombSort.java Feld ganzer Zahlen sortieren mit CombSort; Laufzeitmessungen
- Felder als Objekte, Referenzen
10. (Dienstag, 18.11.) Klassenmethoden
- Wiederholung und Beispiele zu Feldern als Referenzen
- Klassenmethoden
- Nutzen und Einsatz von Methoden
- Definition von Klassenmethoden
- Aufruf von Klassenmethoden
- Folien zu Methoden
- Anleitung zu Aufgabenblatt 5
- Arbeiten mit Matrizen
- Einlesen einer Matrix
- Scanner als Klassenvariable
11. (Montag, 24.11.) Übungen zu Klassenmethoden
- Wiederholung und Beispiele zu Klassenmethoden
- Quadrieren: Funktion R --> R
- x2x3: Funktion R --> RxR
- Summe eines Vektors: Funktion R^n --> R
- Vorführung mit Dr Java
- Einlesen von Vektoren
- Addition von Vektoren
- Skalarprodukt von Vektoren
- Komplettes Arithmetik-Beispiel
- VektorRechnung5.java Addition, Skalarprodukt, usw. von Vektoren
- Anleitung zu Aufgabenblatt 5
- Matrizen
- Unterschiede Vektor-/Matrixarithmetik
12. (Dienstag, 25.11.) Erweiterungen zu Klassenmethoden
- Beispiele zur Parameterübergabe
- Parameter.java Unterschied zwischen Grunddatentypen und Referenzdatentypen bei der Parameterübergabe
- ParameterNew.java ... wenn neues Objekt erzeugt wird
- ParameterKonversion.java Typumwandlung bei der Parameterübergabe
- Erweiterungen zu Klassenmethoden
- Überladen von Methoden
- Programmparameter
- Rekursion
- Beispiele dazu
- Ueberladen.java Möglichkeiten zum Überladen von Methoden
- Ueberladen2.java Überladen von Methoden mit automatischer Konversion der Parameter
- ProgrammParameter.java Ausgabe der Programmparameter
- ProgrammParameter2.java Programmparameter und Eingabe mit Scanner
- Dreheum.java Rekursive Methode zum Umdrehen eines Strings (braucht Prog1Tools)
- Dreheum5.java Rekursive Methode zum Umdrehen einer Zahlenfolge
- Power5.java Nichtrekursive Methode zur Exponentiation
- PowerRek5.java Rekursive Methode zur Exponentiation
- PowerPingala5.java Rekursive effiziente Methode zur Exponentiation mit Algorithmus von Pingala
- PowerPingalaIter5.java Nichtrekursive effiziente Methode zur Exponentiation mit Algorithmus von Pingala
- Anleitung zu Aufgabenblatt 6
13. (Montag, 1.12.) Rekursion, Programmierstil, Formatierte Ausgabe
- Beispiele zu Rekursion
- Wikipedia: Quicksort Sortieren mit Quicksort
- Quicksort5.java Rekursive Methode zum Sortieren
- Wikipedia: Schneeflockenkurve Konstruktion der Koch'schen Schneeflockenkurve
- Schneeflocke5.java Rekursive Methode zur Erzeugung der Koch'schen Schneeflocke
- SchneeflockeSchritte5.java ... auf Wunsch schrittweise
- Bemerkungen zum Programmierstil
- Folien Schöner Programmieren
- Sternenhoelle5.java Ein unübersichtliches Programm zur Ausgabe eines Sternenhimmels ...
- Sternenhimmel5.java ... und eine verbesserte Version davon
- Formatierte Ausgabe
- Ausgabe.java Eine hässlich formatierte Tabelle mittels println
- Ausgabe5.java Eine übersichtlich formatierte Tabelle mittels printf
- PrintfBeispiel.java Beispiele zur Verwendung von printf
14. (Dienstag, 2.12.) Erweiterungen in Java 5, Instanzvariablen
- Erweiterungen in Java5
- ForSchleife.java / ForSchleife5.java Vergleich bekannte for-Schleife und neue Version in Java 5
- VarArg.java / VarArg5.java Vergleich Überladen von Methoden und variable Argumentliste in Java 5
- Formel.java / Formel5.java Vergleich bekannte Schreibweise von Formeln und neue Version in Java 5
- Hinweise zu Aufgabenblatt 7
- Formatierte Ausgabe mit printf
- Verwendung von Instanzvariablen
- Erweiterungen zu Klassen
- Folien Klassen als Datenstruktur
- Folien Variablenarten
- Karteikarten.java Zusammenfassung unterschiedlicher Daten in einer Klasse Karteikarte, Verwendung dieser Klasse in der Klasse Karteikarten
15. (Montag, 8.12.) Konstruktoren, Instanzmethoden
- Wiederholung und Beispiele zu Klassen- und Instanzvariablen
- Vorführung mit Dr. Java
- Erweiterungen zu Klassen
- Konstruktoren
- Klassen und Referenzen
- Klassen mit Instanzmethoden
- Paradigmen der objektorientierten Programmierung
- Instanzmethoden
- Verwendung von this in Instanzmethoden und Konstruktoren
- Lebenszyklus von Klassen und Instanzen
- Folien Klassen mit Instanzmethoden
- Hinweise
- Durchsuchen der Java-Dokumentation, Beispiel printf
- Drucken im L-Pool
- Mathematischer Adventskalender auf www.dradio.de
16. (Dienstag, 9.12.) Übungen zu Instanzvariablen
- Wiederholung und Beispiele zu
- Karteikarten.java Zusammenfassung unterschiedlicher Daten in einer Klasse Karteikarte, Verwendung dieser Klasse in der Klasse Karteikarten
- KarteikartenKonstr.java Vereinfachung durch Einsatz eines Konstruktors
- KarteikartenK1.java Zusammenfassung beider Klassen in einer Klasse
- KarteikartenK1Meth.java Vereinfachung durch Instanzmethode
- RatMul.java Rationale Multiplikation als Klassen- und Instanzmethode zum Vergleich
- KlasseOderInstanz.java Gegenseitiger Bezug von Klassen- und Instanzvariablen
- KlasseOderInstanzMethode.java Gegenseitiger Bezug von Klassen- und Instanzmethoden
- Hinweise zu Aufgabenblatt 8
- Verwendung von toString()
- Vorführung mit Dr. Java
- ToStringDemo.java Beispielprogramm zur Vereinbarung und zum automatischen Aufruf von toString()
17. (Montag, 15.12.) Übungen und Ergänzungen zu Klassen
- Wiederholung und Beispiele zu Klassen
- Handy.java Klasse zur Beschreibung eines Handys
- Handy.txt Liste von 10 Handys, zum Einlesen
- CombSortHandyHM.java Handys nach Hersteller und Modell sortieren mittels CombSort; Ausführen mit: java CombSortHandyHM <Handy.txt
- Handy2.java Klasse zur Beschreibung eines Handys mit Vergleichsmethode
- CombSortHandyHM2.java Handys nach Hersteller und Modell sortieren mittels CombSort; Ausführen mit: java CombSortHandyHM2 <Handy.txt
- Initialisierung von Objekten, Initialisierer, Reihenfolge
- InitialisiererStatic.java Initialisierung von Klassenvariablen
- InitialisiererNichtStatic.java Initialisierung von Instanzvariablen (anstelle oder zusätzlich zu Konstruktor)
- Initialisierungen.java Reihenfolge der Anweisungen bei der Initialisierung von Größen
- Finalisierung von Objekten (falls das Objekt vernichtet wird)
- FinalizeDemo5.java Ablauf der Finalisierung von Objekten (systemabhängig)
- FinalizeDemo25.java Ablauf der Finalisierung von Objekten (systemabhängig)
- Grafische Ausgabe
- Drawing.java Sammlung von Methoden zum Zeichnen
- Draw.java Static-Variante von Draw
- DrawFunction.java Anwendung von Draw zum Plotten einer Funktion
- DrawBisektion5.java Anwendung von Draw zur Veranschaulichung des Bisketionsverfahrens
- Beispiel zu Beziehungen zwischen Klassen: Aggregation
- Beispiel zu Vererbung
- Punkt.java Punkt im dreidimensionalen Raum
- Quader.java Quader als Klasse mit Punkten als Komponente: ein Quader hat Punkte
18. (Dienstag, 16.12.) Vererbung, Polymorphie
- Hinweise zu Aufgabenblatt 9 und zum Weihnachtsblatt
- Vererbung
- Verdeckte Variablen
- Verdeckte Methoden, Polymorphie bei Instanzmethoden
- Folien zu Vererbung, Polymorphie
- Beispiel zu Vererbung
- QuaderV.java Quader als abgeleitete Klasse von Punkt: ein Quader ist ein Punkt mit zusätzlichen Komponenten
- Kugel.java Kugel als abgeleitete Klasse von Punkt: eine Kugel ist ein Punkt mit zusätzlichen Komponenten
19. (Montag, 22.12.) Übungen und Ergänzungen zu Vererbung
- Wiederholung und Ergänzungen zu Vererbung
- Verwendung von final
- Zugriffsrechte bei Vererbung
- Abstrakte Klassen
- Beispielserie zu Vererbung: Sportler
- PersonS.java Eigenschaften einer beliebigen Person
- Sportler.java Spezielle Eigenschaften eines Sportlers: Sportart und Bestwert
- Rekordinhaber.java Spezielle Eigenschaften eines Rekordinhabers: Medaillen etc.
- RekordinhaberMain.java Hauptprogramm dazu
- Beispielserie zu Vererbung: Haustiere
- Haustier.java Basisklasse mit den grundlegenden Eigenschaften, u.a. Sortieralgorithmus
- Hund.java abgeleitete Klasse mit speziellen Eigenschaften für Hunde
- Katze.java abgeleitete Klasse mit speziellen Eigenschaften für Katzen
- HaustierTest1.java Testprogramm, das diverse Haustiere bearbeitet und sortiert
- Rassekatze.java abgeleitete Klasse mit speziellen Eigenschaften für Rassekatzen, u.a. eine neue Methode wert, die beim Sortieren verwendet wird
- HaustierTest2.java Testprogramm, das Rassekatzen bearbeitet und anders als andere Haustiere sortiert (mittels Polymorphie der Methode wert!)
- Beispiel zu abstrakter Klasse
- Abstract5.java Verwendung von abstrakten Klassen
20. (Dienstag, 23.12.) Übungen zu Vererbung, Polymorphie
- Serie von Beispielen zur Darstellung eines Adressbuchs, Erweiterungen z.T. mittels Vererbung und Polymorphie (überarbeitete Versionen, Eingabe mit Scanner statt Prog1Tools)
- Hinweise zu Aufgabenblatt 10
- Zugriff auf erstes Zeichen des Strings s mit s.charAt(0)
- Zeichenketten
- Folien zu Zeichenketten
- Programmbeispiel
- Weihnachtsbaum.java Erzeugung einer Grafik aus Zeichen
- Beispiel zur Datenkompression
- xmas.txcn Dieses merkwürdige File wurde uns zugeschickt - offenbar ist es kodiert
- XmasCode5.java Zum Glück haben wir das Programm entdeckt, mit dem es kodiert wurde. Schreiben Sie ein passendes Dekodierprogramm und entschlüsseln Sie den Inhalt
- Wikipedia: ASCII-Art Das File enthält angeblich ein Bild aus ASCII-Zeichen; hier finden Sie Informationen zu diesem Thema
- Wikipedia: Lauflängenkodierung Ein paar Informationen zum Hintergrund des angewendeten Datenkompressions-Verfahrens
21. (Montag, 12.1.) Schnittstellen
- Lösung zur Aufgabe Datenkompression vom 23.12.: XmasDecode5.java
- Beispiele zu instanceof
- Fahrzeug.java diverse Fahrzeuge ...
- Auto.java
- Pkw.java
- Fahrrad.java
- AutoTest.java Test, welche Klasse vorliegt
- AutoTest2.java weitere Anwendungsmöglichkeiten und Probleme beim Einsatz von instanceof
- Schnittstellen
- Einführung
- Definition einer Schnittstelle
- Implementierung einer Schnittstelle
- Vergleich zu abstrakten Klassen
- Folien Schnittstellen
- Beispiel zur numerischen Integration
- Mathematische Grundlagen zur Trapezregel
- Funktion.java Interface zur Darstellung einer reellen Funktion
- Trapezregel.java Numerische Integration mittels Trapezregel
- Funktion1.java Berechnung von x*x
- Funktion2.java Aufruf der Standardfunktion sin
- FunktionN.java Berechnung von x hoch n
- TrapezregelBeispiel.java Hauptprogramm zum Einlesen der Parameter über die Programmparameter und zur Auswahl der Funktion
22. (Dienstag, 13.1.) Applets
- Ergänzungen zum Beispiel Trapezregel
- Hinweise zum Aufgabenblatt 11
- Hinweise zum Klausurmerkblatt
- 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
23. (Montag, 19.1.) Übungen zu Applets
- Wiederholung zu Applets
- Beispiele zu Applets
- FormenDemo.java / FormenDemo.html Demoprogramm zum Zeichnen diverser Formen
- 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
- AppletSOP.java / AppletSOP.html Ausgabe zusätzlich auf Textkonsole
- Interaktion mit Webseite des Applets
- AppletParam.java / AppletParam.html Parameter an ein Applet übergeben
- AppletParam2.java / AppletParam2.html ... mit Umwandlung in einen Zahlenwert
- Balkendiagramm.java / Balkendiagramm2.html Ausgabe einer Balkengrafik mit Parametern aus der HTML-Seite
- Tortendiagramm.java / Tortendiagramm2.html Ausgabe einer Tortengrafik mit Parametern aus der HTML-Seite
24. (Dienstag, 20.1.) Innere Klassen, Ereignisverwaltung
- Wiederholung zu Applets
- Bemerkungen zu Aufgabenblatt 12 und zur Klausur
- Beispiele zu Applets
- AppletZentriert.java / AppletZentriert.html zentrierte Ausgabe mit Hilfe von FontMetrics
- PopArt4.java / PopArt4.html Zeichnen einer zufälligen Liniengrafik - bei jedem paint-Ereignis wird eine neue Grafik erzeugt
- PopArt5.java / PopArt5.html Zeichnen einer zufälligen Liniengrafik - Linien werden nur einmal am Anfang berechnet und bei paint neu gezeichnet
- PopArt6.java / PopArt6.html ... mit weniger Flackern durch Verwenden eines zweiten Graphics-Objekts
- Beispiel: Applet mit Interaktion
- AppletSetColor.java / AppletSetColor.html Parameter an ein Applet übergeben mittels Form und JavaScript
- Folien zu Inneren Klassen
- Folien zu Ereignisverwaltung und Layout
25. (Montag, 26.1.) Applets mit Komponenten und Ereignisverwaltung
- Wiederholung zu Applets und Ereignisverwaltung
- 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
- Beispiele zu Applets
- Eventbsp.java / Eventbsp.html Buttons schalten dank entsprechender Listener die Hintergrundfarbe um
- EventBspRGB.java / EventBspRGB.html ähnlich wie Eventbsp, aber es werden Farben gemischt
- 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
26. (Dienstag, 27.1.) Übungen zu Ereignisverwaltung, Threads
- Wiederholung zu Applets
- Beispiele zu Applets, Lotto
- Erzeugen zufälliger Zahlen ohne Wiederholung
- LottoWuerfeln.java / LottoWuerfeln.html Applet zur Erzeugung und grafischen Ausgabe von Lottozahlen
- Berechnung von Wahrscheinlichkeiten beim Lotto mittels Binomialkoeffizienten
- LottoChancenApplet.java / LottoChancenApplet.html Applet zur Berechnung und Ausgabe von Wahrscheinlichkeiten beim Lotto
- Einführung zu Threads
- Beispiele zu Threads
- Uhrzeit.java Einsatz von Threads: regelmäßig Uhrzeit anzeigen
- PingPong.java mehrere "parallel" ablaufende Threads
- UhrzeitApplet.java / UhrzeitApplet.html Applet zur Ausgabe der aktuellen Zeit mittels Thread
27. (Montag, 2.2.) Threads
- Folien Threads
- Beispiele zu Threads
- 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
- 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
28. (Dienstag 3.2) Klausurvorbereitung
- Klausurvorbereitung
- Hinweise zum Stoff
- Praktikumsaufgaben wiederholen
- Beispiel JoghurtProduktion mit Objektorientierter Programmierung, Vererbung
- Betrieb.java ein beliebiger Betrieb, startet seine Tätigkeiten als Thread
- Produzent.java ein Produzent von Rohprodukten als abgeleitete Klasse von Betrieb
- Milchbauer.java,
- Obstbauer.java,
- Becherproduzent.java drei solche Produzenten
- Verarbeiter.java ein Produzent, der von Lieferanten Rohprodukte bezieht; ebenfalls eine abgeleitete Klasse von Betrieb
- Molkerei.java,
- Abfueller.java zwei solche Betriebe
- Haendler.java dritte Variante von Betrieb, der Waren nur umverteilt; ebenfalls eine abgeleitete Klasse
- JoghurtProduktion.java eine Klasse, in der die Betriebe angelegt und mit einander vernetzt werden; keine abgeleitete Klasse
29. (Montag 9.2) Klausurbesprechung, Ausnahmen, Streams, Internet
- Klausurbesprechung
- Ausnahmebehandlung
- Einführung
- Klassenhierarchie
- Try-Catch
- Folien zu Ausnahmen
- Files, Ein-Ausgabe mit Streams
- Einführung
- Klassenhierarchie byteorientierte Ein-/Ausgabe
- Klassenhierarchie textorientierte Ein-/Ausgabe
- Auftretende Probleme
- Folien zu Streams
- Beispiele zu Streams
- BinFileWrite.java schreibt Daten in interner Darstellung auf ein File
- BinFileRead.java liest Daten in interner Darstellung von einem File
- TextFileWrite.java schreibt Daten in Text-Darstellung auf ein File
- TextFileRead.java liest Daten in Text-Darstellung von einem File
- BufferedRWTokenizer.java liest und schreibt Daten gepuffert und mit Tokenizer, es dürfen mehrere Zahlen in einer Zeile stehen
- Kommunikation via Internet, Beispiel
- TheTimeMain.java liest die Zeit von einem Server in USA
30. (Dienstag 10.2) Beratung
- Erläuterungen zur Klausur
- Beratung zu Programmierfragen
- Ausblick auf das Sommersemester