Uni-Logo Institut für Informatik - Arbeitsgruppe Software Engineering
Informatik B (SS 2011):
Objektorientierte Programmierung
Dozentin Jun.-Prof. Dr.-Ing. Elke Pulvermüller
Übungsleiter Dipl.-Inform. Wolfgang Runte
Tutoren
Vorlesung
montags16:00 - 18:00 Uhr, Raum 66/E33
dienstags12:00 - 14:00 Uhr, Raum 66/E33
Übung
donnerstags12:00 - 14:00 Uhr, Raum 31/449a
donnerstags14:00 - 16:00 Uhr, Raum 31/449a
Beide Übungen haben den gleichen Inhalt.
Beginn Montag, 11. April 2011 (erste Übung am 14. April)
Prüfungstermin Montag, 11.07.2011, 09:00 Uhr (s.t.!) - 11:00 Uhr, Raum 01/E01+E02
Anmeldung über OPIuM erforderlich! Übersicht über die Ergebnisse
Wiederholungsprüfung Mittwoch, 14.09.2011, 09:00 Uhr (s.t.!) - 11:00 Uhr, Raum 66/E33 und 66/E34
Anmeldung über OPIuM erforderlich!
Inhalt Die Veranstaltung führt in die objekt-orientierten Konzepte und Programmierung mit Java ein. Die behandelten Konzepte werden durch Programmieraufgaben eingeübt und vertieft.
Literatur
Vorlesungsmaterial Das Vorlesungsmaterial wird im Laufe des Semesters zusammengestellt und wöchentlich überarbeitet/ergänzt. Außerdem: Quelltexte aus der Vorlesung (und darüberhinaus).
Termine
Woche Montag Thema Dienstag Thema
1. 11.04.2011 Einleitung (Organisatorisches, Literatur, Inhalt), Grundlegende objektorientierte Konzepte (Objekte, Klassen und Instanzen, Modellierungsprinzipien, Identität, Sichtbarkeitsbereiche, Methodenparameter und Rückgabewert) 12.04.2011 Grundlegende objektorientierte Konzepte (Überladen von Methoden, Spezielle Methoden)
2. 18.04.2011 Grundlegende objektorientierte Konzepte (Gleichheit bzw. Identität von Objekten, Klasseneigenschaften, Der Singleton) 19.04.2011 Grundlagen der Software Entwicklung (Die Programmiersprache Java, Vom Programm zur Maschine, Abstraktion von der Plattform, Vom Problem zum Programm)
3. 25.04.2011 Ostermontag 26.04.2011 keine Vorlesung
4. 02.05.2011 Grundlagen der Software Entwicklung (Vom Problem zum Programm: Modellierung mit UML, Modellierung mit EBNF und Syntaxdiagrammen, Muster in der Software-Entwicklung; Programmiersprachenparadigmen), Wichtige objektorientierte Konzepte (Modularisierung, Abstraktion und Hierarchie; Vererbung) 03.05.2011 Wichtige objektorientierte Konzepte (Vererbung, Typing: Type Casts, Dynamisches Binden, Substitutionsprinzip, Autoboxing; Abstrakte Klasse, Interface)
5. 09.05.2011 Wichtige objektorientierte Konzepte (Interface, Entwicklung mit Schnittstellen, Paket, Beziehungen und ihre Modellierung: Assoziation, Aggregation, Komposition) 10.05.2011 Wichtige objektorientierte Konzepte (Beziehungen und ihre Modellierung: Benutzt-Beziehung/Using; Abgrenzung: Komposition, Aggregation, Using; Verfeinerung der Beziehungen (mit UML), Abhängigkeit/Dependency, Dynamische Modellierung der Beziehungen: UML-Sequenzdiagramme), Fehlerbehandlung (Grundlagen der Fehlerbehandlung, Zusicherungen/Assertions)
6. 16.05.2011 Fehlerbehandlung (Ausnahmen/Exceptions: Exception-Behandlung in Java: Klassenhierarchie, Fehlerbehandlung in Java (catch), Werfen von Exceptions in Java (throw/s), Besondere Exception in Java: RuntimeException; Fehler/Errors, Zusicherungen und andere Erweiterungen in UML, Laufzeitstapel/Stack Trace) 17.05.2011 Generizität/Generics (Nutzen und mögliche Alternativen, Umsetzung, Erweiterungen: Mehrere Typparameter, Typeinschränkungen: Bounds; Modellierung in UML, Generizität bei Objekt- und Klassenmethoden), Polymorphie/Polymorphismus (Arten von Polymorphie)
7. 23.05.2011 Klassenbibliotheken/JCF (Klassenbibliotheken allgemein, Java Collection Framework/JCF, JCF Organisation und Aufbau, JCF Schnittstellen, JCF Implementierungen) 24.05.2011 Klassenbibliotheken/JCF (JCF Algorithmen, JCF Typsicherheit, Iteration: Das Entwurfsmuster Iterator, Null Iterator und "Entwurfsmuster" Null Object, Iteration in Java; JCF Wrapper Implementierung, Exkurs: Innere Klassen)
8. 30.05.2011 Persistenz (Grundlagen der Persistenz, Datei-/Verzeichnisverwaltung: Dateien und Verzeichnisse in Java: File, Anlegen, Löschen, Umbenennen, Auflisten mit File; I/O-Streams: Arten von Streams in Java, Java Stream-Klassen: lesen, schreiben, Standard I/O-Streams) 31.05.2011 Persistenz (Fortsetzung I/O-Streams: Verknüpfen von Streams, Exkurs: Entwurfsmuster Decorator, I/O-Klassenhierarchie in Java (Auszug); Serialisierung)
9. 06.06.2011 Persistenz (Fortsetzung Serialisierung: Standardserialisierung in Java (Paket java.io), Alternativen zur Serialisierung in Java-Programmen) 07.06.2011 Nebenläufigkeit (Threads, Java Threads: Wir bauen einen Java-Thread, Beenden eines Threads, Spezielle Threads; Thread Zustände)
10. 13.06.2011 Pfingstmontag 14.06.2011 Nebenläufigkeit (Threads und Fehler, Synchronisation: Zugriffsprobleme, Kritischer Abschnitt, Abhilfe auf Sprachebene, Schützen kritischer Abschnitte mit Monitoren, Probleme der Synchronisation: Deadlocks, Synchronisation durch Kommunikation; Klassische Probleme in der Synchronisation: Producer-Consumer bzw. Bounded Buffer Problem)
11. 20.06.2011 Nebenläufigkeit (Fortsetzung Klassische Probleme in der Synchronisation: Producer-Consumer bzw. Bounded Buffer Problem, Dining Philosophers, Sleeping Barber; Java Threads: Thread Gruppen), Grafische Benutzeroberflächen (Abstract Window Toolkit/AWT: Fenstertypen, Steuerelemente) 21.06.2011 Grafische Benutzeroberflächen (Fortsetzung Abstract Window Toolkit/AWT: Layout, Ereignisverarbeitung/Event Handling, Adapterklassen für Listener-Schnittstellen, Event-Dispatching-Thread; Beobachter-Muster/Observer Pattern, Swing)
12. 27.06.2011 Grafische Benutzeroberflächen (Model-View-Controller-Prinzip/Muster, MVC), Netzwerkprogrammierung (Netzwerke Grundlagen, Netzwerkprotokolle, Adressierung) 28.06.2011 Netzwerkprogrammierung (Sockets, Client/Server, Implementierung in Java: Client-Seite, Server-Seite, UDP-Paket-Verbindung in Java; Höhere Kommunikation), Grafische Benutzeroberflächen (GUIs und Programme im Web: Applets)
13. 04.07.2011 Prüfungsvorbereitung (Plenum in Raum 66/E33) 05.07.2011 Sprechstunde (spezifische Fragen nach Bedarf, einzeln oder gruppenweise in Raum 31/318)
Leistungsnachweis Als Leistungsnachweis wird generell ein numerisch und ECTS-benoteter Übungsschein vergeben bzw. eine entsprechende Modulprüfungsleistung bescheinigt. Voraussetzung für den Erwerb des Übungsscheins sowie Grundlage für die Note ist die erfolgreiche Teilnahme an einer Abschlussprüfung.

Um die Zulassung zu dieser Prüfung zu erhalten, ist die erfolgreiche Teilnahme am Übungsbetrieb zur Vorlesung in diesem oder einem der vorhergehenden Semester erforderlich. Als Erfolg gilt hierbei jeweils (pro Aufgabenblatt) 50% der möglichen Punkte bei n-1 der n Übungsblätter.

ECTS-Leistungen müssen nach deutschen Kriterien numerisch benotet werden, die Nummern werden dann nach dem vorgegebenen Schlüssel auf die ECTS-Buchstaben abgebildet.