C++ - Programmierung:
Grundlagen und Anwendungen mit der Qt-Klassenbibliothek (4SWSt, 6 LPs)
Veranstalter: Fakultät für Physik, Dr. Peter Georg
Dozent: Tobias Sizmann
C++ ist eine seit 1979 entwickelte Programmiersprache mit Kompatibilität zu C. Es wird sowohl in der System- als auch in der Anwendungsprogrammierung verwendet und gehört in beiden Bereichen zu den verbreitetsten Programmiersprachen. C++ unterstützt hierbei sowohl maschinennahe Programmierung als auch die Verwendung vieler Abstraktionsschichten um die Programmierung zu vereinfachen. In beiden Fällen verspricht C++ eine möglichst hohe Effizienz des generierten Maschinencodes. Wobei die Effizienz insbesondere vom verwendeten C++ Compiler abhängig ist. Es stehen Open-Source Compiler für alle gängigen Betriebssysteme zur Verfügung. Die Programmiersprache ist von der ISO genormt und wird kontinuierlich weiter entwickelt. Aktuell wird alle 3 Jahre ein neuer C++ Standard veröffentlicht. Der Standard definiert neben der Programmiersprache selbst auch eine zugehörige Standardbibliothek.
Qt ([kju:t]) ist eine Sammlung von Bibliotheken, oft auch als Anwendunsframework bezeichnet, zur platformübergreifenden Entwicklung von Software für unterschiedliche Einsatzzwecke. Es unterstützt alle gängigen Betriebssysteme (Linux, Windows, macOS, Android, iOS) und ist unter verschiedenen Lizenzen verfügbar. Neben der für Open-Source-Programmierung verwendeten GNU General Public License (GPL) sind auch kommerzielle Lizenzen für die Nutzung in nicht quelloffenem Code erhältlich. Im Kurs beschränken wir uns auf die Nutzung von Qt zur Programmierung grafischer Benutzeroberflächen und verwenden es hierbei im Rahmen der GPL Lizenz.
Behandelte Themen
C++
- Nach C++ Standard C++14
- Grundlagen der Programmiersprache C++
- Prozedurale Programmierung
- Ausnahmen und Fehlerbehandlung
- Objecktorientierte Programmierung
- Klassen (Kapselung)
- Vererbung
- Virtuelle Funktionen
- Polymorphie
- Generische Programmierung
Qt
- Überblick über verfügbare Lizenzen
- Qt Creator
- Meta-Object System
- Property System
- Object Model
- Object Trees & Ownership (Parenting System)
- Signals and Slots
Voraussetzungen und Vorkenntnisse
- Grundkenntnisse in C oder einer ähnlichen Programmiersprache (der Umgang mit Pointer sollte vertraut sein)
- Umgang mit Debian (für den Kurs werden die Rechner im Linux-CIP-Pool zur Verfügung gestellt)
- Alternativ kann ein eigener PC (Laptop) genutzt werden, da alle verwendeten Werkzeuge plattformunabhängig und quelloffen sind (Windows, macOS, beliebige Linux -Distribution)
- Englischkenntnisee, da die Kursunterlagen und Dokumentation nur in Englisch verfügbar ist
Anforderungen zum erfolgreichen Bestehen (Projekt)
- Aktive Teilnahme an den Übungen
- Abgabe eines selbstgewählten und selbst (alleine oder in zweier Gruppen) umgesetzten Abschlussprojekts nach Absprache mit dem Dozenten. Eine Auswahl an Themenvorschlägen wird gestellt.
- In den letzten Kurstagen wird mit der Arbeit am Projekt bekommen. In den Übungen können Sie weiterhin ihre TutorInnen um Hilfestellung bitten.
- Das Projekt soll am letzten Kurstag präsentierbar sein.
- Der Source Code des Projekts inkl. nötiger weiterer Ressourcen ist bis Sonntag 23:59 Uhr zwei Wochen nach Kursende abzugeben. Weitere Modalitäten werden vom Dozenten während des Kurses bekanntgegeben
Anrechnung (FlexNow)
- Studenten, die einen FlexNow-Eintrag benötigen, müssen innerhalb der Kurstage ihre FlexNow-Anmeldung erfolgreich ausführen.
- Dieser Kurs ist in FlexNow unter dem Namen Programmieren portabler graphischer Anwendungen.
- Im Studiengang Physik ist der Kurs in der Rubrik Sonstiges eingetragen.
- Weitere Modularisierungen für andere Studiengänge sind möglich.
- Zusätzlich ist der Kurs in der Rubrik Studienbegleitende IT-Ausbildung eingetragen. In diesem Fall muss die Leistung benotet werden.
- Papierscheine werden nur in Ausnahmefällen ausgestellt.
Kursunterlagen
Das Skript und die Aufgaben für die Übungen stehen online zur Verfügung: