MARTIN-LUTHER-UNIVERSITÄT HALLE-WITTENBERG "OBJEKTORIENTIERTE PROGRAMMIERUNG"
Institut für Informatik Wintersemester 2014/15
Prof. Dr. Stefan Brass [StudIP: Vorlesung]

 

 

Objektorientierte Programmierung

Ablauf (Planung der zeitlichen Aufteilung)

Die folgende Liste enthält eine ungefähre Übersicht, wann welcher Stoff behandelt wird. Da die Vorlesungsmaterialien nochmals überarbeitet werden sollen, sind noch größere Abweichungen und Plan-Änderungen möglich.

1. Di, 14.10.2014:
Kapitel 0: Informationen zur Vorlesung / Organisatorisches
Inhalte, Ansprechpartner, Übungsgruppen, Hausaufgaben, Übung (Praxispunkte), Klausur, Rechnerpools, Software, Literatur, Umgang mit unterschiedlichen Vorkenntnissen, allgemeine Ratschläge.
Kapitel 1: Einführung
Computer (Minimal-Hardware), Betriebssystem (Dateien), Entwicklung der Programmiersprachen, Historische Bemerkungen zu Java, Compiler, Interpreter, Bytecode, "Hello, World" Beispiel, Benutzung des Compilers, Ausführung von Programmen, Eclipse, Umgang mit Fehlermeldungen.
2. Di, 21.10.2014:
Kapitel 2: Erste Schritte in der Programmierung
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, Wertausdrücke, Zuweisungen, 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.)
3. Di, 28.10.2014:
Kapitel 3: Syntax-Diagramme (und Grammatikregeln)
Bedeutung von formaler Syntax, Syntaxdiagramme.
Kapitel 4: Lexikalische Syntax
Grobe Funktionsweise eines Compilers, Wortsymbole ("Token"), Unicode, Leerplatz zwischen Wortsymbolen, sinnvolle Einrückung, Kommentare, Bezeichner, Schlüsselworte, Datentyp-Konstanten (Literale), Operatoren.
4. Di, 04.11.2014:
Kapitel 5: Datentypen
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, Kurzeinführung zu Untertypen, Objekterzeugung (mit Benutzung von Konstruktoren), Beispiel String und StringBuilder, statische Methoden und Attribute, Beispiel Math.
5. Di, 11.11.2014:
Kapitel 5: Datentypen (Rest: Arrays)
Genauere Analyse von System.out.println(_), Einführung zu Arrays, Deklaration und Erzeugen von Arrays, Zugriff auf Array-Elemente, Beispielprogramme.
Kapitel 6: 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.
6. Di, 18.11.2014:
Kapitel 6: Wertausdrücke (Rest: Zuweisungen)
Zuweisungen, Typanpassungen bei Zuweisungen, Cast, Abkürzungen für Zuweisungen, Inkrement/Dekrement, Auswertungsreihenfolge, Zusammenfassung.
Kapitel 7: Statements
Einführung zu Statements, Expressions als Statements, Blöcke, Variablen-Deklarationen, Uninitialisierte Variablen, if-Statement, switch-Statement, while-Schleife, [do-Schleife], for-Schleife, Beispiele für typischen Schleifen, ["foreach"-Schleife], break, [continue], return.
7. Di, 25.11.2014:
Kapitel 8: Funktionen (statische Methoden)
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, Parameterübergabe ("call by value", Referenztypen für Objekte), Möglichkeiten zur Übergabe von Daten an den Aufrufer, rekursive Methoden.
8. Di, 02.12.2014:
Kapitel 9: Exceptions I
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
Motivation, Argumente aus der Kommandozeile, Einführung zu Streams und Reader/Writer. Reader/Writer, Buffered Reader, Ausgabe-Formatierung.
9. Di, 09.12.2014:
Kapitel 11: Klassendeklarationen
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). Wiederholung zu Klassen (Attribute, Methoden, Referenzen, Zugriffsschutz: private, Schnittstelle vs. Implementierung). Methode toString(), Methode equals(). Konstruktoren, static, Beispiel: Verkettete Liste.
10. Di, 16.12.2014:
Kapitel 12: Subklassen/Vererbung
Motivation, Grundbegriffe. Syntax, Vererbung, Zuweisungen zwischen Ober- und Unterklasse, instanceof, Zugriffsschutz, Überschreiben von Methoden, abstrakte Klassen, final, Object
11. Di, 13.01.2015:
Kapitel 13: Interfaces
Motivation, Syntax von Interface-Deklarationen, implements-Klausel in Klassendeklarationen, Interfaces als Typen, Sub-Interfaces.
Kapitel 14: Überladene Methoden
Motivation, spezifischste Version einer Methode, Mehrdeutigkeit, Anwendung: Optionales Argument, Überschreiben vs. Überladen
Kapitel 15: Pakete
Pakete, import, Zugriffsschutz (private, default, protected, public)
12. Di, 20.01.2015:
Kapitel 16: Arrays für Fortgeschrittene
Initialisierung, Arrays und Subklassen, Implementierung, Methoden mit variabler Parameter-Anzahl, Mehrdimensionale Arrays
Kapitel 17: Strings
Klasse String, Nützliche Methoden, Unicode-Unterstützung, StringBuilder
Kapitel 18: Exceptions II
Klassenhierarchie, Deklaration eigener Exceptions
13. Di, 27.01.2015:
Kapitel 19: Wrapper-Klassen
Kapitel 20: Generische Programmierung (Parametrisierte Klassen), Collections
...
14. Di, 03.02.2015:
(Sehr wahrscheinlich entfällt dieser Teil, weil wir für die anderen Kapitel mehr Zeit brauchen)
Kapitel 21: Aufzählungstypen
enum
Kapitel 22: Saubere Programmierung, javadoc, Assertions
...
Kapitel 23: GUI-Programmierung
...

 


Stefan Brass (brass@informatik.uni-halle.de), 4. September 2014

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