20.4.: Folien 1-27. Hello World live programmiert, kompiliert, ausgefuehrt. An der Tafel UML Objektdiagramm fuer das Beispiel mit cornflakesPackung, frostiesPackung angezeichnet. 22.4.: Folien 28-67. Datentypen double, int, String. 27.4.: Folien 67-99. Datentypen boolean, Fallunterscheidung. Definition von Klassen: Instanzvariablen, Methoden. 29.4.: Folien 100-113. Definition von Klassen: Konstruktoren. Formalere, allgemeine Darstellung von Definitionen. UML Notation. Demonstration von "bluej". 4.5.: Folien 114-137. Formale allgemeinere Darstellung von Konstruktoren. Lebensdauer und Sichtbarkeitsbereiche von Variablen. Statische Methoden und Variablen. Applets. Angefangen mit einem Beispielapplet; verbesserte Version kann auf der Homepage eingesehen werden. Naechstes Mal: Iteration. 6.5.: Folien 138-149 und 158-163. Die Folien 164-166 bitte zuhause lesen. Das Beispielapplet "Uhr" wurde detailliert besprochen. While Schleife, For Schleife, Invarianten, Beispiele: Schnelles Potenzieren, String umdrehen. Benutzereingabe mit Dialogfenster. 11.5. Hoare Logik: Folien 150-157. Ausfuehrliches Beispiel an der Tafel gerechnet: Es wurde die Gueltigkeit des folgenden Hoare Tripels mithilfe der Regeln hergeleitet, wobei c die While Schleife auf Folie 144 ist: {"i=n & n>=0 & b=a & r=1"} c {"r = a^n"} Als Invariante fuer die While-Regel kam I := "r*b^i=a^n & i>=0" zur Anwendung. 13.5. Folien 158-180: Konsoleneingabe, Umlenkung von System.in und System.out auf Dateien, Pipes (<, >, |). Computersimulation von Zufallsexperimenten durch While Schleifen. Beispiel: das Buffonsche Nadelproblem. Naechstes Mal: Zufallsirrfahrt eines Betrunkenen in einem Gitter. Betrunkener geht ein Feld nach N, S, O, oder W jeweils mit Wahrscheinlichkeit 1/4. Verlauf soll grafisch dargestellt werden. Bis naechstes Mal sinnvolle Zerlegung dieses Problems in Klassen ueberlegen. Faustregel: jedes Substantiv der Problembeschreibung ist Kandidat fuer eine Klasse. 18.5. Auf Wunsch der Hoererschaft wurde noch ein Beispiel fuer die Hoare Logik detailliert vorgerechnet: {"n>=0"} r=1;i=n;while(i>0){r=r*i;i=i-1;} {"r=n!"} Es kam in der While-Schleife die Invariante I = "i>=0 und r*i!=n!" zur Anwendung. Sodann wurden die Folien 181-190 besprochen (OO-Design, Schnittstellen, Packages) und mit der Fallstudie "Zufallsirrfahrt" begonnen, insbesondere an der Tafel ein UML Diagramm entworfen. 25.5. Fallstudie Zufallsirrfahrt fertiggestellt und erlaeutert. Vor- und Nachbedingungen, Invarianten, Vererbung, Folien 191-200. 27.5. Vererbung, Folien 201-218 und 220 (Abstrakte Methoden). 3.6. Vererbung Folien 219-226 (Abstrakte Methoden, Behavioural Subtyping, Zusammenfassung). Gruendliche Wiederholung von Polymorphie, Typecast, Subtyping. Deep vs Shallow Copy. Testen und Debugging Folien 227-236. 8.6. Arrays, Folien 237-255. Demonstration Eclipse Debugger am Beispiel der Datei Word.java und WordTest.java aus [Horstmann]. Demonstration des JUnit Werkzeugs am Beispiel der Klasse RootApproximator aus [Horstmann]. Die Testklasse RootApproximatorTest.java liegt auf der WWW Seite. Kompilieren mit javac -classpath ".:abrakadabra/junit.jar" RootApproximatorTest.java Ausfuehren mit java -classpath ".:abrakadabra/junit.jar" RootApproximatorTest Hier bezeichnet abrakadabra das Verzeichnis in dem sich die Datei junit.jar befindet. Ist es das aktuelle Verzeichnis, dann brauchen Sie ueberhaupt keine -classpath Option. 15.6. Arrays, die Schnittstellen Comparable und Comparator, Binaere Suche, Quicksort. Folien bis 278. 17.6. Quicksort. Funktionsweise und detaillierte Verifikation. Ausnahmen. Folien bis 290. 22.6. Singleton Pattern. Verkettete Listen. Folien bis 306 24.6. Doppelt verkettete Listen, Rechenstrukturen von Mengen und Abbildungen. Folien bis 324. 29.6. Hashtabellen, Binaerbaeume, Visitor Pattern. Folien bis 343. 1.7. Suchen, Einfuegen und Loeschen in BST, imperative Versionen. AVL-Baeume. Folien bis 361. 6.7. Suchen Einfuegen Loeschen in AVL Baeumen, B-Baeume, Nebenlaeufigkeit, Threads in Java, Interrupt. Folien bis 386. 8.7. Nebenlaeufigkeit: Synchronisation, Monitoren, Locks, Deadlock, Wait-notifyAll. Dining Philosophers. Folien bis 404. Auf die Animation von Algoirthmen wurde verzichtet; bei Interesse siehe das Kapitel in Horstmann. 13.7. Grafische Benutzeroberflaechen mit Swing 15.7. Grafische Benutzeroberflaechen mit Swing 20.7. Klausurwiederholung 22.7. XML nach Horstmann Kap.24