MARTIN-LUTHER-UNIVERSITÄT HALLE-WITTENBERG VORLESUNG "OBJEKTORIENTIERTE PROGRAMMIERUNG"
Institut für Informatik Wintersemester 2013/14
Prof. Dr. Stefan Brass [StudIP]

 

 

Objektorientierte Programmierung

Ablauf (Planung der zeitlichen Aufteilung)

Die folgende Liste enthält eine ungefähre Übersicht, wann welcher Stoff behandelt wird. Da ich die Vorlesung erst zum zweiten Mal in Java halte, sind noch größere Abweichungen und Plan-Änderungen möglich.

1. Di, 08.10.2013:
Kapitel 0: Informationen zur Vorlesung / Organisatorisches [Folie 0-1 bis 0-46, 0-50 bis 0-63]
Inhalte, Motivation, Ansprechpartner, Übungsgruppen, Hausaufgaben, Programmier-Testat, Klausur, Rechnerpools, Software, Literatur, Umgang mit unterschiedlichen Vorkenntnissen, allgemeine Ratschläge.
Kapitel 1: Einführung [Folie 10 bis 16, 27 bis 35, 38 bis 39, 53]
Computer (Minimal-Hardware), Betriebssystem (Dateien), Entwicklung der Programmiersprachen, Historische Bemerkungen zu Java, Compiler, Interpreter, Bytecode, "Hello, World" Beispiel, Benutzung des Compilers.
2. Di, 15.10.2013:
Kapitel 2: Erste Schritte in der Programmierung [Folien 1 bis 65, 70 bis 71]
Wiederholung: Ausführung von Programmen, Eclipse, Umgang mit Fehlermeldungen, Wiederholung: "Hello, World" Programm, Rahmenprogramm für nächste Zeit, Bezeichner, Ausgabebefehl, Methodenaufruf, Mathematische Funktionen, Konstanten/Literale (Strings und Zahlen), Wichtigste Datentypen (int, double, String), Vier Grundrechenarten, Ganzzahlige Division und Modulo, Überladene Operatoren am Beispiel von /, Typanpassung von int nach double, Konkatenation von Zeichenketten, Anweisungsfolgen, Variablen, Deklaration mit Initialisierung.
3. Di, 22.10.2013:
Kapitel 3: Erste Programme mit Kontrollstrukturen [Folien 1 bis 59]
Wiederholung: Variablen, Datentypen, Deklarationen, Wertausdrücke. Folgen von Zuweisungen, Simulation der Ausführung von Programmen, Eingaben, Bedingungen (if), Beispiele für Flussdiagramme (Programmablaufpläne), Schleifen (while), Vom Algorithmus zum Programm: Primzahltest, Fehlervermeidung und Fehlersuche. (Ausblick: Debugger.)
4. Di, 29.10.2013:
Kapitel 4: Syntax-Diagramme (und Grammatikregeln) [Folie 1 bis 22]
Bedeutung von formaler Syntax, Syntaxdiagramme.
Kapitel 5: Lexikalische Syntax [Folie 1-31, 33 bis 35, 37, 47 bis 48, 50 bis 57, 59, 61 bis 66]
Grobe Funktionsweise eines Compilers, Wortsymbole ("Token"), Unicode, Leerplatz zwischen Wortsymbolen, sinnvolle Einrückung, Kommentare, Bezeichner, Schlüsselworte, Datentyp-Konstanten (Literale), Operatoren.
5. Di, 05.11.2013:
Kapitel 6: Datentypen [Folien 1 bis 59]
Datentypen: Motivation und Übersicht, Primitive Typen vs. Referenztypen (u.a. Diskussion von == für String-Objekte), die primitiven Datentypen von Java (ganze Zahlen: int, Begrenzung des Zahlbereiches, Gleitkomma-Zahlen: double, Warnung vor Rundungsfehlern, Boolesche Werte: boolean, Zeichen: char), Einführung zu Objekten, Methoden-Aufrufe (Bibliotheks-Funktionen), Argumentwerte und Rückgabewerte von Methoden (Ein- und Ausgabewerte von Funktionen), Lesen der Java API Dokumentation, Objekterzeugung (mit Benutzung von Konstruktoren), Beispiel String und StringBuilder, statische Methoden und Attribute, Beispiel Math, genauere Analyse von System.out.println(_).
6. Di, 12.11.2013:
Kapitel 6: Datentypen [Folien 60-74]
Einführung zu Arrays, Deklaration und Erzeugen von Arrays, Zugriff auf Array-Elemente, Beispielprogramme
Kapitel 7: Wertausdrücke (Expressions)
Berechnung von Werten abhängig von Zuständen, Zustandsänderung als Seiteneffekt, Elementare Werteausdrücke, Zusammensetzung von Wertausdrücken mittels Operatoren und Methodenaufrufen, Operatorsyntax, Prioritäten, Veranschaulichung der Struktur von Wertausdrücken mittels Operatorbaum, Arithmetische Operatoren (Vier Grundrechenarten, Divisionsrest), Typ-Korrektheit, überladene Operatoren, automatische Typvergrößerungen ("numeric promotions"), Vergleichsoperatoren, Logische Operatoren, Bit-Operatoren, Bedingter Ausdruck, Zuweisungen, Typanpassungen bei Zuweisungen, Cast, Abkürzungen für Zuweisungen, Inkrement/Dekrement, Auswertungsreihenfolge, Zusammenfassung.
7. Di, 19.11.2013:
Kapitel 8: Statements [Folie 1 bis 83]
Einführung zu Statements, Expressions als Statements, Blöcke, Variablen-Deklarationen, Uninitialisierte Variablen, if-Statement, switch-Statement, while-Schleife, [do-Schleife], for-Schleife.
8. Di, 26.11.2013:
Kapitel 8: Statements [Folie 84 bis 100]
Wiederholung zu typischen Schleifen, for-Schleife, ["foreach"-Schleife], break, [continue], return.
Kapitel 9: Exceptions I [Folie 1 bis 32]
Möglichkeiten zur Behandlung von Laufzeitfehlern, Motivation, try/catch(/finally), Klassifizierung von Exceptions: checked exceptions, "catch or throw" Regel.
Kapitel 10: Einführung in die Ein-/Ausgabe [Folie 1 bis 21]
Motivation, Argumente aus der Kommandozeile, Einführung zu Streams und Reader/Writer.
9. Di, 03.12.2013:
Kapitel 10: Einführung in die Ein-/Ausgabe [Folie 21 bis 55]
Reader/Writer, Buffered Reader, Ausgabe-Formatierung.
Kapitel 11: Funktionen (statische Methoden) [Folie 1 bis 37]
Motivation, erstes Beispiel, Grundbegriffe, Parameter (formal vs. aktuell), void anstelle eines Ergebnis-Typs, Aufruf von Funktionen (statische Methoden), lokale Variablen, statische Attribute: globale Variablen, Verschattung, Blockstruktur.
10. Di, 10.12.2013:
Kapitel 11: Funktionen (statische Methoden) [ab Folie 37]
Parameterübergabe ("call by value", Referenztypen für Objekte), Möglichkeiten zur Übergabe von Daten an den Aufrufer, rekursive Methoden.
Kapitel 12: Klassendeklarationen [Folie 1 bis 61]
Einfache Klassen (entsprechend Strukturen/Records), Attribute (Variablen in den Objekten), Referenzen, Objekt-Erzeugung mit new, Garbage Collection, Null-Referenz, Objekt-Identität, Typ-Gleichheit, Aufruf von Methoden, Gültigkeitsbereiche von Methoden-Deklarationen, Kapselung von Programmcode und Daten, Zugriffsschutz/Sichtbarkeit (private vs. default),
11. Di, 17.12.2013:
Kapitel 12: Klassendeklarationen [Folie 62 bis 97]
Wiederholung zu Klassen (Attribute, Methoden, Referenzen, Zugriffsschutz: private, Schnittstelle vs. Implementierung). Methode toString(), Methode equals(). Konstruktoren, static, Beispiel: Verkettete Liste.
Kapitel 13: Subklassen/Vererbung [Folie 1 bis 9]
Motivation, Grundbegriffe.
Anhang: Silvester-Feuerwerk und Thread-Programmierung am Beispiel
Simulation einer Feuerwerksbatterie, Klasse Thread, Sicherheitstipps.
12. Di, 07.01.2014:
Kapitel 13: Subklassen/Vererbung [Folie 10 bis 70]
Syntax, Vererbung, Zuweisungen zwischen Ober- und Unterklasse, instanceof, Zugriffsschutz, Überschreiben von Methoden, abstrakte Klassen, final, Object
13. Di, 14.01.2014:
Kapitel 14: Interfaces
Motivation, Syntax von Interface-Deklarationen, implements-Klausel in Klassendeklarationen, Interfaces als Typen, Sub-Interfaces.
Kapitel 15: Überladene Methoden
Motivation, spezifischste Version einer Methode, Mehrdeutigkeit, Anwendung: Optionales Argument, Überschreiben vs. Überladen
Kapitel 16: Pakete
Pakete, import, Zugriffsschutz (private, default, protected, public)
14. Di, 21.01.2014:
Kapitel 17: Arrays für Fortgeschrittene
Initialisierung, Arrays und Subklassen, Implementierung, Methoden mit variabler Parameter-Anzahl, Mehrdimensionale Arrays
Kapitel 18: Strings
Klasse String, Nützliche Methoden, Unicode-Unterstützung, StringBuilder
Kapitel 19: Exceptions II
Klassenhierarchie, Deklaration eigener Exceptions
Kapitel 20: Parametrisierte Klassen (Templates), Collections
...
15. Di, 28.01.2014:
(Sehr wahrscheinlich entfällt dieser Teil, weil wir für die anderen Kapitel mehr Zeit brauchen)
Kapitel 21: Aufzählungstypen
enum
Kapitel 22: Wrapper-Klassen
Kapitel 23: Saubere Programmierung, javadoc, Assertions
...
Kapitel 24: GUI-Programmierung
...

 


Stefan Brass (brass@informatik.uni-halle.de), 18. Dezember 2013

Original URL: http://www.informatik.uni-halle.de/~brass/oop13/ablauf.html   [XHTML 1.0 Checked]   [CSS Checked]   [Links Geprüft]   [Impressum]