Prof. Dr. Fritz Jobst
Programmieren 2
Stand: Sommersemester 2012

Ziele (Quelle: Modulhandbuch)

Programmieren ist eine der Kernkompetenzen von Informatiker. Sie/Er muss nicht programmieren, aber sie/er kann es.

Problemlösungskompetenz(Primärziel)

Die Studierenden sind in der Lage, einfache Probleme mit Techniken der Objektorientiertierung zu analysieren, sowie Algorithmen und Datenstrukturen (insbesondere Klassenhierarchien) zur Lösung einfacher Probleme in einer objektorientierten Sprache zu formulieren.

Sprachverständnis

Die Studierenden verstehen die grundlegenden Konzepte objektorientierter Programmiersprachen (z.B. Klassen, Objekte, Klassenhierarchien, Vererbung, Interfaces, abstrakte Klassen, Überladung, Überschreibung, dynamische Bindung, Lebenszyklus von Objekten etc.) und können diese zur praktischen Problemlösung einsetzen. Darüber hinaus sind die Studierenden in der Lage, sich zügig in vorhandene objektorientierte Bibliotheken (z.B. GUI-Bibliotheken) einzuarbeiten und können ihnen unbekannten Programmcode auf seine Funktionsweise hin analysieren.

Aufbau der Lehrveranstaltung und Inhalte

Die Lehrveranstaltung setzt auf PG1 (Prozedurale Programmierung am Beispiel C) auf. Wir behandeln in Kapitel 02 die prozeduralen Elemente von Java, deren Struktur wir von C her kennen. Dabei geniessen wir den einfachen Umgang mit Arrays in Java. In Kapitel 03 steigen wir in die Objektorientierung ein: Klasse, Objekte, Vererbung, Schnittstellen (Interface), Aufzählungsdatentypen, dynamische Erzeugung von Objekten. Mit den Exceptions beherrschen wir Ausnahmesituationen.
In Kapitel 04 behandeln wir die Sammlungen in Java, wobei uns die generischen Elemente von Java den Umgang mit den Objekten erleichtern. Kapitel 05 behandelt die Ein-/Ausgabe in Java, Kapitel 06 die Nebenläufigkeit (Threads).
Java
Erst beim Umgang mit Frameworks zur GUI wie Swing in Java erkennt man in Kapitel 07 die volle Leistungsfähigkeit der Objektorientierung. Jetzt sieht man, welchen Nutzen man aus Konzepten wie Schnittstellen, abstrakten Klassen und Vererbung ziehen kann. Dabei folgen wir anerkannten, bewährten Mustern der Softwareentwicklung (Patterns).

NEU im Sommersemester 2012

Wir besprechen die Entwicklung von Apps unter Android
GUI Android
Neben der Einführung der Objektorientierung am Beispiel von Java stellen wir uns den Herausforderungen von C++. Wir führen C++ als das "bessere C" ein: Prototypen für Funktionen, const, Deklaration von Variablen, Zugriff auf dynamischen Speicher, Überladen von Funktionen und Operatoren, Funktionstemplates statt Makros. Mit Hilfe des Klassenbegriffs formulieren wir abstrakte Datentypen. C++ stellt beim Umgang mit dem Lebenszyklus von Objekten besondere Anforderungen an den Entwickler. Deswegen studieren wir Grundlagen wie Kopierkonstruktor, Destruktoren und Wertzuweisung sorgfältig, bevor wir die die Vererbung sowie Programmausnahmen besprechen. Zum Abschluss dieses einführenden Kurses lernen wir die Möglichkeiten der STL (Standard-Template Library) kennen. C++

Hinweis zu den Unterlagen und Übungsaufgaben

Einige Unterlagen zur Vorlesung stehen nur im Intranet der HS.R im Novell-Netzwerk auf dem K-Laufwerk zur Verfügung. Die Unterlagen und Übungen werden im Verlauf der Vorlesung ergänzt.


HS.R Hochschule Regensburg/Fakultät für Informatik und Mathematik/Prof. Dr. Fritz Jobst