oop-forcpp2020-12
Kursbegleitende Internet-Links zur Schulung:
Fortgeschrittene Objektorientierte Programmierung in C++
(Der Weg zu "Clean Code")
2020-12-14 bis 2020-12-16
- Info-Grafiken (eigene Ergänzungen zu Schulungsunterlagen):
- Zusätzliche Beispiele mit Compiler-Explorer:
- Optimize Beispiel 1
- Optimize Beispiel 2
- `typeid`, `boost::type_index` und Makro-Techniken
- Sort mit Lambda
- Sort mit Lambda (mit kleinen Verbesserungen)
- Weitere Anwendungen für Lambdas
- Copy/Move delete/default
- FCOI Alternativen (Zentrale Klasse erweitert durch Interfaces)
- FOCI Alternativen (Mehrfachvererbung mit virtueller Basisklasse)
- FCOI Alternativen 1 und 2 ("side by side" Vergleich)
- C++ "Named Parameter" Idiom
- Reduktion "zu mächtiger" Basisklassen
- Übungen auf Basis des OnlineDBG:
- Kapitel 2: Grundlegende Prinzipien
- Kapitel 3: SOLID Prinzipien
- SRP (Single Responsibility Principle)
- OCP (Open-Close Principle [Bertrand Meier])
- LSP (Liskov Substitution Principle [Barbara Liskov])
- ISP (Interface Segregation Principle)
- EXERCISE
- SOLUTION Änderungen nur gemäß "TO-DO"s: => Ende durch Exception in Zinsberechnung
- SOLUTION (2. Version): Ende durch Exception vermieden mit try-catch in Zinsberechnung durch Bank::PayInterest
- SOLUTION (3. Version) try-catch beschränkt auf Initialisierung der Zinssatz-Variablen
- SOLUTION (4. Version) Vermeiden der Zinsberechnung für PocketMoneyAccount mittels RTTI (Run-Time Type Identification)
- SOLUTION (5. Version)
Wiederholungen in Klasse Bank reduziert mit "Member Function Template" (= kein direkter Bezug zur Aufgabenstellung)
- DIP (Dependency Inversion Principle)
- Kapitel 4: Weitere Prinzipien
- Kaiptel 5:
- Weitere erwähnte Links
- Details zu "Rvalue-References und Perfect Forwarding" (von [Th. Becker])
- Video zu `std::move` und `std::forward` (von [Scott Meyers])
- Proper Inheritance (C++ FAQ) (ursprünglich von [Marshall Cline])
aber auch die gesamte C++ FAQ ist lesenswert - https://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Named_Parameter
- "Execution in the Kingdom of Nouns"
- Links aus einer früheren Schulung zum selben Thema