Aktuelles
Stand: 18. 7. 2007
Stichworte zum Stoff der Vorlesung, Beispielprogramme und weitere Materialien zur Vorlesung Einstieg in die Informatik mit Java im Sommersemester 2007 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. (Mi, 18.4., Vormittag) Einführung
- Einführung
- Ziele der Vorlesung
- Organisation des Praktikums
- Geschichte und Spracheigenschaften von Java
- Literaturangaben
- Folien Einführung (pdf, 509 kB)
2. (Mi, 18.4., Nachmittag) Grundelemente von Java
- Folien Grundelemente (pdf, 254 kB)
- Folien Vordefinierte Datentypen (pdf, 152 kB)
- Folien Literalkonstanten (pdf, 246 kB)
- Folien Variablen (pdf, 105kB)
- Vorführung der Software und der Java-Installation unter Windows
3. (Mi, 25.4., Vormittag) Ausdrücke
- Hinweise zum Aufgabenblatt 2 mit Pflichtaufgabe
- Arithmetische Ausdrücke, inklusive ++ und --
- Kombinierte Zuweisungen
- Logische Operatoren
- Weitere Operatoren
- Klassifizierung von Operatoren
- Typumwandlung
- Priorität der Operatoren
- Folien Ausdrücke (pdf, 391 kB)
4. (Mi, 25.4., Nachmittag) Anweisungen
- Ausdrucksanweisung
- Einfache Ausgabeanweisung
- Einfache Eingabeanweisung
- Verbundanweisung
- Bedingte Anweisung
- Auswahlanweisung
- for-Schleife
- while-Schleife
- do-Schleife
- Folien Anweisungen (pdf, 506 kB)
- Beispiele: u.a. Verdoppeln, Maximum, Quersumme
5. (Mi, 2.5., Vormittag) Übungen
- Wiederholung und Ergänzungen zu Anweisungen
- break
- continue
- Leere Anweisung
- Hinweise zu Aufgabenblatt 3
- 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, 2.5., Nachmittag) Methoden
- Methodendefinition
- Parameterübergabe, Methodenaufrufe
- Überladen von Methoden
- Rekursion
- Folien Methoden (pdf, 371 kB)
- Beispiele zu Methoden am Laptop
- HypFun5.java definiert eigene Funktionen am Beispiel der hyperbolischen Funktionen (diese sind erst ab Java 5 in Math enthalten, mussten also früher selbst definiert werden)
- HypTab5.java verwendet die neu definierten hyperbolischen Funktionen aus HypFun5
7. (Mi, 9.5., Vormittag) Felder
- Hinweise zu Aufgabenblatt 4
- 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 (pdf, 355 kB)
8. (Mi, 9.5., Nachmittag) Übungen
- Beispiele zu Methoden und Feldern am Laptop
- MethodenAufrufe.java Demobeispiele zur Definition und zum Aufruf von Methoden
- MethodenAufrufe2.java Demobeispiele zur Definition und zum Aufruf von Methoden
- WertRef.java Wertaufruf bei Methoden mit Grunddatentypen bzw. Referenzdatentypen
- PowerRek25.java Rekursive Berechnung der Exponentiation
- Ueberladen.java Demobeispiel zum Überladen von Methoden
- Kakuro.java Kreuzzahlrätsel Kakuro (siehe Wikipedia): berechne alle erlaubten Zahlkombinationen mit einer rekursiven Methode
- VektorRechnung5.java Arbeiten mit Vektoren: Eingabe, Ausgabe, Addition, Multiplikation mit Faktor, Skalarprodukt
- MatMul5.java Matrixmultiplikation
- Bemerkungen zur Effizienz
- Folien Effizienz (pdf, 618 kB)
9. (Mi, 16.5., Vormittag) Objektorientierte Programmierung, Klassen
- Weitere Anmerkungen zu Effizienz
- Hinweise zu Aufgabenblatt 5
- Objektorientierte Programmierung, Klassen
- Philosophie
- Definition von Klassen
- Datenkapselung
- Instanzen
- Zugriff auf Elemente
- Folien Klassen (pdf, 214 kB)
10. (Mi, 16.5., Nachmittag) Klassen, Variablen, Zeichenketten
- Ergänzungen zu Klassen
- Konstruktoren
- Speicherverwaltung
- Variablenarten
- lokale Variablen
- formale Parameter
- Klassenvariablen
- Instanzvariablen
- Folien Variablenarten (pdf, 163 kB)
- Zeichenketten / Strings
- Erzeugen von Zeichenketten
- Operatoren für Zeichenketten
- Methoden zur Bearbeitung
- Folien Zeichenketten (pdf, 145 kB)
11. (Mi, 23.5., Vormittag) Übung zu Klassen
- Wiederholung zu Klassen und Objektorientierter Programmierung
- 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
12. (Mi, 23.5., Nachmittag) Vererbung
- Hinweise zu Aufgabenblatt 6
- Vererbung
- Grundlagen
- Zugriffsrechte
- Verdeckte Variablen
- Verdeckte Methoden
- Polymorphie
- Konstruktoren und Vererbung
- Polymorphie bei Instanzmethoden
- keine Polymorphie bei Klassenmethoden
- keine Polymorphie bei Variablen
- Klassen und final
- Vererbung und Zugriffsrechte
- Folien Vererbung (pdf, 274 kB)
13. (Mi, 30.5., Vormittag) Übung zu Klassen und Vererbung
- 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
- FinalizeDemo3.java zeigt den Gebrauch der Methode finalize()
- 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
- Beispielserie zum Thema Felder von Instanzen / Instanzen von Klassen die Felder enthalten:
- Zahl.java eine Zahl in eine Klasse verpackt
- FeldVonZahlen.java Feld von Zahlen schrittweise konstruieren
- FeldVonZahlen2.java... wie FeldVonZahlen, aber Zahlen in Schleife erzeugen
- FeldVonZahlen3.java ... wie FeldVonZahlen, aber mit Initialisiererliste
- Zahlen.java Klasse, die ein Feld von int enthält
- FeldVonZahlen4.java eine Instanz dieser Klasse erzeugen
14. (Mi, 30.5., Nachmittag) Vererbung, Programmierstil, Werkzeuge
- Wiederholung zu Vererbung
- Hinweise zu Aufgabenblatt 7
- Beispiele zu Vererbung und Aggregation
- Basisklasse Punkt.java im 3-dimensionalen Raum
- Abgeleitete Klasse Kugel.java: eine Kugel ist ein Punkt mit Radius
- Aggregation in Klasse Quader.java: ein Quader enthält zwei Punkte als Komponenten
- Folien Schöner Programmieren (pdf, 157 kB)
- Beispiele zum Programmierstil
- Sternenhoelle.java ein schlecht formatiertes Programm
- Sternenhimmel.java das gleiche Programm, wesentlich besser lesbar
- Modellierung von Programmen
- Programmablaufplan
- Struktogramm / Nassi-Shneiderman-Diagramm
- UML, Aktivitätsdiagramm, Klassendiagramm
- Zahlreiche Tutorials (u.a. zu UML) finden Sie auch unter www.admin-wissen.de
- Entwicklungsumgebung am Beispiel von Netbeans:
- Erstellen eines Java-Projekts
- Debuggen eines Java-Programms
- Installation und Modellierung mit UML
15. (Mi, 6.6., Vormittag) Applets
- Wiederholung zu Vererbung
- 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
- Applets
- Einführung
- Sicherheitsmaßnahmen
- Ereignisgeseuerte Programmierung
- Ereignisse
- Folien Applets (pdf, 180 kB)
16. (Mi, 6.6., Nachmittag) Übungen zu Applets
- Hinweise zu Aufgabenblatt 8
- 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 Mehrere Formen zeichnen
- FarbPalette.java / FarbPalette.html Farbpalette mit 125 Farben ausgeben - mit Zeilenumbruch
- 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
17. (Mi, 13.6., Vormittag) Schnittstellen, Innere Klassen, Applets mit Ereignisverarbeitung
- Wiederholung zu Applets
- Schnittstellen
- Folien Schnittstellen (pdf, 90 kB)
- Innere Klassen
- Folien Innere Klassen (pdf, 157 kB)
- Applets mit Ereignisverarbeitung
- Folien Ereignisverwaltung (pdf, 137 kB)
- Beispiel zu Applet mit Ereignisverwaltung:
- LinienMaus.java / LinienMaus.html Applet zum Zeichnen von Linien, Ereignisverwaltung mit innerer Klasse
18. (Mi, 13.6., Nachmittag) Übungen zu Applets mit Ereignisverarbeitung
- Beispiele zu inneren Klassen
- ElementklassenDemo.java Demobeispiel einer Elementklasse
- ElementklassenDemo1.java Demobeispiel einer Elementklasse
- Anonym.java Demobeispiel für anonyme innere Klassen
- Hinweise zu Aufgabenblatt 9
- 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
- Beispiel-Programme zu Tastatur-Ereignissen:
- KeyDemo.java / KeyDemo.html Zeichen von der Tastatur einlesen und ausgeben - mit Implementierung eines Listeners
- KeyDemo2.java / KeyDemo2.html Zeichen von der Tastatur einlesen und ausgeben - mit Vererbung einer Adapterklasse
- KeyDemo3.java / KeyDemo3.html Zeichen von der Tastatur einlesen und ausgeben - getrennt auf Tastendruck und Tastenloslassen reagieren
- KeyDemo4.java / KeyDemo4.html Sonderzeichen von der Tastatur einlesen und Codes ausgeben
- Beispiele zur Arbeit mit Komponenten (Button, Label, Textfeld)
- ButtonTextfeld.java / ButtonTextfeld.html Ein Textfeld zur Eingabe von Zahlen, ein Label zur Anzeige der Ergebnisse, 2 Buttons zur Eingabe von Kommandos (Zahl übernehmen und Zahl verdoppeln)
- ButtonTextfeldExc.java / ButtonTextfeldExc.html
wie Beispiel ButtonTextfeld, aber mit Fehlerbehandlung
19. (Mi, 20.6., Vormittag) Wiederholung zu Applets mit Ereignisverarbeitung
- Applets mit Ereignisverarbeitung
- Folien Applet Demo (pdf, 141 kB)
- Beispiele
- 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
20. (Mi, 20.6., Nachmittag) Übungen zu Applets mit Ereignisverarbeitung
- Hinweise zu Aufgabenblatt 10
- Beispiele zu Applets
- PopArt.java / PopArt.html Malprogramm für Bilder im Stil der Pop Art. Demoprogramm zur Verwendung von Farben und der Ausgabe von Rechtecken. Interessante Effekte beim Neuzeichnen des Fensters, wenn es teilweise verdeckt war.
- PopArt3.java / PopArt3.html Malprogramm reagiert auf Mausklicks
- BST.java / BST.html ein Scrollbar, ein Textfeld und zwei Buttons sind miteinander gekoppelt - durch vier Listener
- Polygone.java / Polygone.html Polygone zeichen, die Eckenzahl wird über einen Rollbalken eingestellt
- Beispiele zu Layout
- LayoutDemo.java / LayoutDemo.html Layout wird per Knopfdruck gewechselt
- LayoutPanel.java / LayoutPanel.html geschachteltes Layout mittels Panel
- LayoutContainer.java / LayoutContainer.html geschachteltes Layout mittels eigener innerer Klasse
- LayoutScrollPane.java / LayoutScrollPane.html geschachteltes Layout mittels eigener innerer Klasse in ScrollPane mit Rollbalken
- Beispiele zu Applets und Ereignisverwaltung
- AppletAussen.java / AppletAussen.html Ereignisbehandlung - diesmal nicht mit innerer Klasse sondern mit aussenstehender Klasse AppletAussenMaus.java
- AppletUndListener.java / AppletUndListener.html Ereignisbehandlung durch die Klasse des Applets selbst
- RechnerApplet.java / RechnerApplet.html Taschenrechner als Applet
21. (Mi, 27.6., Vormittag) Beispiel zu Applets, Ausnahmebehandlung
- Bemerkungen zu Aufgabenblatt 11
- Beispiele zu Applets
- EM2008Vorrunde.zip Serie von drei Beispielen zur Fussball-EM in einem Zip-File
- Ausnahmebehandlung
- Folien Ausnahmen (pdf, 143 kB)
22. (Mi, 27.6., Nachmittag) Threads und Swing
- Threads
- Folien Threads (pdf, 103 kB)
- Swing
- Folien Swing Applets (pdf, 178 kB)
- Beispiele zu Threads
- PingPong.java, Uhrzeit.java Demo-Programme zu Threads
- UhrzeitApplet.java / UhrzeitApplet.html Applet zur Ausgabe der aktuellen Zeit
- Wecker.java Zwei schlafende Threads werden manchmal vorzeitig aufgeweckt
- Ueberweisungen.java Demoprogramm mit 3 Threads, demonstriert Probleme beim unkontrollierten Zugriff mehrerer Threads auf die gleichen Daten; 9 Überweisungen pro Thread pro Sekunde
23. (Mi, 4.7., Vormittag) Übungen zu Threads und Swing
- Beispiele zu Threads
- Ueberweisungen2.java ebenso, aber Überweisungen werden mit maximaler Geschwindigkeit ausgeführt
- Ueberweisungen5.java verbesserte Version, bei der die Überweisungen synchronisiert werden; dadurch treten keine Unstimmigkeiten mehr auf
- Beispiele zu Swing: Swingset von Sun Microsystems
- Beispiele zu Swing
- SwingApplet.java / SwingApplet.html Swing-Applet mit einem Button und einem Label
- SwingDemo.java ähnliches Swing-Demoprogramm als Frame
- SwingButtonImageIcon.java Button mit Bild
- Sudoku
- 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)
24. (Mi, 4.7., Nachmittag) Streams und Files
- Veranstaltungshinweise
- Tokenizer
- Folien StringTokenizer (pdf, 68 kB)
- Files, Ein-Ausgabe mit Streams
- Folien Streams (pdf, 95 kB)
- Beispiele zu Files
- 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
- BufferedRW.java liest und schreibt Daten gepuffert, es darf nur eine Zahl in einer Zeile stehen
- BufferedRWTokenizer.java liest und schreibt Daten gepuffert und mit Tokenizer, es dürfen mehrere Zahlen in einer Zeile stehen
- FileDir.java listet alle Dateien und Verzeichnisse auf
- ShortDir.java listet ein Inhaltsverzeichnis in Kurzform, fortlaufend nummerierte Namen werden zusammengefasst
25. (Mi, 11.7., Vormittag) Kommunikation via Internet, Java 5
- Kommunikation via Internet, Beispiele
- TheTime.java liest die Zeit von einem Server in USA
- WikipediaApplet.java, WikipediaApplet.html ruft eine Seite bei Wikipedia auf
- ChatServer.java, ChatClient.java realisieren ein Chat-Protokoll zwischen zwei entfernten Rechnern (Achtung: der verwendete Port muss ggf. in der Firewall des Betriebssystems freigegeben werden)
- Hüllklassen / Wrapper-Klassen
- Folien Hüllklassen (pdf, 99 kB)
- Pakete
- Folien Pakete (pdf, 126 kB)
- 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
26. (Mi, 11.7., Nachmittag) Klausurvorbereitung
- Hinweise zur Klausur für das Sommersemester und zur Wiederholungsklausur vom Wintersemester
- Beispiele
- Mikado.java, Mikado.html Beispiel für ein Applet
- MikadoSwing.java, MikadoSwing.html Beispiel für ein Applet
- WuerfelApplet.java, WuerfelApplet.html Grafische Darstellung eines Würfelexperiments
- ZinsApplet.java, ZinsApplet.html Zinsberechnung in einem Applet
27. (Mi, 18.7., Vormittag) Klausurbesprechung
- Beispiel Applet
- Schlange.java, Schlange.html Text folgt dem Mauszeiger
- SchlangeTutor.html vielleicht kann Sie dieser Aufruf motivieren...
- Vorführung der Klausuraufgaben
- Klausur für Wiederholer/innen vom Wintersemester
- Klausur für das Sommersemester
28. (Mi, 18.7., Nachmittag) Scheinausgabe
- Scheinausgabe
- Klausureinsicht
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.