Modulinformationssystem Informatik

 

Objektorientierte Programmierung URL PDF XML

Modulcode: infProgOO-01a
Englische Bezeichnung: Objectoriented Programming
Modulverantwortliche(r): Prof. Dr. Thomas Slawig
Turnus: jedes Jahr (WS21/22 SS22 SS23 SS24)
Präsenzzeiten: 2V 2PÜ
ECTS: 6
Workload: 30 Std. Vorlesung, 30 Std. Projektarbeit, 120 Std. Selbststudium
Dauer: ein Semester
Modulkategorien: BSc-Inf-G (BSc Inf (21)) 2F-BSc-Inf (2F-BSc Inf (21)) BSc-WInf-G (BSc WInf (21))
Lehrsprache: Deutsch
Voraussetzungen: Info infEInf-01a

Kurzfassung:

Das Modul gibt einen Einblick in die Objektorientierte Modellierung und Programmierung am Beispiel einer statisch getypten Programmiersprache. Weitere Aspekte sind Abstrakte Datentypen, Vererbung, generische Programmierung, Abstraktion bei der Datenmodellierung, dynamische Datenstrukturen und Nebenläufigkeit. Die Inhalte werden in einem Abschlussprojekt angewendet und vertieft.

Lernziele:

Die Studierenden können die Prinzipien der objektorientierten Programmierung zur Entwicklung strukturierter, wartbarer Software anwenden. Sie können einfache (auch dynamische) Datenstrukturen und zugehörige Algorithmen eigenständig implementieren. Sie kennen die Anforderungen der nebenläufigen Programmierung und können erlernte Techniken einsetzen, um diese zu vermeiden.

Lehrinhalte:

Aufbauend auf grundlegenden Programmierkenntnissen der imperativen, prozeduralen Programmierung erlernen die Studierenden die Grundprinzipien der Objektorientierung anhand einer statisch getypten, objektorientierten Programmiersprache. Die wichtigsten Inhalte sind hierbei:

  • Klassen, Objekte, Vererbung
  • Statische Typsysteme, auch im Kontext von Vererbung (z.B. Co- und Contravarianz bei Zuweisung und Methodenaufruf, statische Bindung)
  • Klassenattribiute und Klassenmethoden
  • Pakete und Sichtbarkeiten
  • abstrakte Klassen
  • Probleme der Mehrfachvererbung und unterschiedliche Lösungsansätze, z.B: Interfaces
  • Generische Typen, parametrisierbare Klassen, Wrapper-Klassen
  • Realisierung dynamischer Datenstrukturen mit Hilfe von (rekursiven) Klassendefinitionen
  • Exceptions
  • Enumerations
  • Eventbasierte Programmierung im Kontext von GUI-Anwendungen
  • Verwendung vordefinierter Klassen, wie z.B. Collections
  • Einfache Programmiermuster, wie z.B. MVC
  • Grundlegendes zur Nebenläufigkeit

Weitere Voraussetzungen:

Grundlegende Kenntnisse der imperativen, prozeduralen Programmierung in Python, wie sie beispielsweise in Einführung in die Informatik erworben werden.

Prüfungsleistung:

Klausur Zulassungsvoraussetzung: Bearbeiten der Programmieraufgaben.

Lehr- und Lernmethoden:

Folien- oder Tafelvorlesung und Programmentwicklung am Rechner.

In den Übungsstunden wird der Vorlesungsstoff wiederholt, durch die wöchentlich zu bearbeitenden Übungsaufgaben verfestigt und vertieft. Das Elernen des Programmierens ist nur durch aktives Erstellen eigener Programme möglich. Als Hilfestellung werden hierzu zusätzlich betreute Rechnerzeiten angeboten.

Verwendbarkeit:

Literatur:

Wird in der Vorlesung bekannt gegeben.

Verweise:

Kommentar:

Als praktische Anwendungen (insbesondere im abschließenden Projekt) kommen ggfs. Datenstrukturen und Algorithmen zum Einsatz, wie sie in parallel stattfindenden Modulen unterrichtet werden.