Webrelaunch 2020

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

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
  • Beispiele zu Ausdrücken
    • Vorführung mit dem interaktiven System Dr Java

4. (Dienstag, 28.10.) Übungen zu einfachen Anweisungen

5. (Montag, 3.11.) Weitere Ausdrücke und 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

7. (Montag, 10.11.) Zufallszahlen, Pi, Effizienz von Algorithmen

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

9. (Montag, 17.11.) Übungen zu Feldern

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
  • Anleitung zu Aufgabenblatt 5
    • Matrizen
    • Unterschiede Vektor-/Matrixarithmetik

12. (Dienstag, 25.11.) Erweiterungen zu Klassenmethoden

13. (Montag, 1.12.) Rekursion, Programmierstil, Formatierte Ausgabe

14. (Dienstag, 2.12.) Erweiterungen in Java 5, Instanzvariablen

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

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
  • Finalisierung von Objekten (falls das Objekt vernichtet wird)
  • Grafische Ausgabe
  • 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
  • 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

20. (Dienstag, 23.12.) Übungen zu Vererbung, Polymorphie

21. (Montag, 12.1.) Schnittstellen

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):

23. (Montag, 19.1.) Übungen zu Applets

24. (Dienstag, 20.1.) Innere Klassen, Ereignisverwaltung

25. (Montag, 26.1.) Applets mit Komponenten und Ereignisverwaltung

26. (Dienstag, 27.1.) Übungen zu Ereignisverwaltung, Threads

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

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
  • Kommunikation via Internet, Beispiel

30. (Dienstag 10.2) Beratung

  • Erläuterungen zur Klausur
  • Beratung zu Programmierfragen
  • Ausblick auf das Sommersemester