### PO 2024 ### ### Studiengang und Semester 2BORE:2024, 2BORE:2017 ### Modulbezeichnung Programmierung II ### Englische Modulbezeichnung Programming II ### Modulkürzel PR2 ### ### Art Pflichtmodul ### ECTS-Punkte 5 ### Studentische Arbeitsbelastung 15, 135 ### Voraussetzungen (laut Prüfungsordnung) ### Empfohlene Voraussetzungen Programmierung I ### Pruefungsform und -dauer Klausur 2 h oder mündliche Prüfung ### Lehrmethoden und Lernmethoden Multimedial aufbereitetes Online-Studienmodul zum Selbststudium mit zeitlich parallel laufender Online-Betreuung und regelmäßigen virtuellen Lehrveranstaltungen ### Modulverantwortlicher C. Link ### Vergabe von Leistungspunkten (Voraussetzungen) Studienleistung (Programmierlabor): Erfolgreiche Bearbeitung von 3 Einsendeaufgaben (1 CP). Bewertet mit "Bestanden" Prüfungsleistung (4 CP): Bestehen der Prüfung (Klausur oder mündliche Prüfung) ### Qualifikationsziele Die Studierenden demonstrieren, dass sie über ein mentales Modell von Informationsdarstellung und Programmablauf verfügen, indem sie einen Rechner (mit rekursiv absteigendem Parser) für Bool’sche Ausdrücke konstruieren. Die Studierenden können - mit den Besonderheiten des Programmablaufs bei der Mikrocontrollerprogrammierung umgehen, indem sie in einem Programm asynchrone Ereignisse mit den adäquaten Sprachmitteln behandeln und die geeigneten Datenstrukturen auswählen. - Klassen entwerfen, um mit angepassten Typen Aufgabenstellungen besser (abstrakter) umsetzen zu können, indem sie eine oder mehrere Klassen deklarieren und definieren, welche in einem vorgegebenen Programm verwendet werden. - mittels der wesentlichen Konzepte der objektorientierten Programmierung Programme entwerfen, indem sie diese Konzepte bei der Implementierung einer Aufgabenstellung verwenden. - die verschiedenen Arten des Polymorphismus differenzieren, um mit dem jeweils passenden Code von konkreten Typen zu abstrahieren. - ein vorgegebenes Programm mit den passenden Arten polymorpher C++-Sprachmittel ausstatten und bezüglich der Lesbarkeit und Wartbarkeit verbessern. - wesentliche Teile der C++-Standardbibliothek anwenden; hierbei können sie für kleine Problemstellungen die richtigen Bibliotheksteile benennen. - ausgewählte Bibliotheksteilen bei der Implementierung einer Aufgabenstellung benutzen und einschätzen, welche die dazu besser geeigneten sind. - (einige wenige) Idiome und Patterns auf eigenen Code adaptieren. - eine gegebene Problemstellung analysieren, in kleinere Teile zerlegen und mit den jeweils angemessenen C/C++-Sprachmitteln implementieren. ### Lehrinhalte **Berechnungen auf wichtigen Datentypen** Elementare Datentypen, char-ASCII-Glyph, I/O, Bitschieberei; call stack, Rekursion; free store **Nichtlinearer Programmablauf** Reentranz; event-based programming vs. thread-based; interrupt service routines; locking, lock-free data structures **Benutzerdefinierte Datentypen** Komposition neuer benutzerdefinierter Datentypen, um Ausdrücksmächtigkeit zu erhöhen; operator overloading; einfache Klasse ohne Vererbung; Typumwandlung (implizit/explizit) **Objektorientierte Programmierung** Information hiding; subtyping; Interface vs. Implementation; aggregation vs. composition; Identität vs. Äquivalenz; Delphi-style OO (i.e. only free store objects, no assignment operator, only explicit ctors ) **Polymorphismus** Subtyping polymorphism mit virtuellen Methoden; Einordnung des bekannten Polymorhismustypen ad-hoc polymorphism; Generic Polymprhism (templates) **C++-Standardbibliothek** Std Container; Std Algorithmen; moderner C++-Progammierstil **Idiome und Muster** Constructional: virtual ctor, factory, …; Resource Acquisition Is Initialization (RAII); Design-by-contract (DBC) **Eleganz und diesbezügliche Hindernisse** Klassendesign; Schwierigkeiten bei der Kombination von Sprach-Features; Objekte und Pointer (copy ctor, operator=, ...); Vererbung und operator overloading; Vererbung und container ### Literatur Stroustrup, Bjarne (2014): The C++ programming language. [C++ 11]. 4. ed., 2. print. Upper Saddle River, NJ: Addison-Wesley. Kirch, Ulla; Prinz, Peter (2013): C++ - das Übungsbuch. 4., überarb. Aufl. Heidelberg, München, Landsberg, Frechen, Hamburg: mitp. ### Titel der Lehrveranstaltung Programmierung II ### Dozent C. Link ### SWS 3 ### Titel der Lehrveranstaltung Praktikum Programmierung II ### Dozent C. Link ### SWS 1