DIPL.-ING. MARTIN WEITZEL, 64380 ROSSDORF, GERMANY

Vega - Grieshaber 2018-04 Übung Mittwochabend

Die etwas längere Übung für den Abschluss des Tages
 ===================================================

Bevor Sie an diese Übung gehen, blättern Sie bitte noch einmal den Stoff in
der Schulungsunterlage ab Seite 52 durch. Falls Sie dabei auf ein Beispiel
stoßen, welches Sie gerne noch einmal mit dem Coliru-Compiler durchspielen
wollen – auch mit Variationen, TUN SIE DIES BITTE VORRANGIG.

Des weiteren sei darauf hingewiesen, dass ALLE Coliru-Beispiele auch lokal
als C-Quelltext verfügbar sind, so dass Sie daraus auch ein mit Visual-Studio
kompilierbares Projekt machen können:

Die Beispiele selbst sind dabei jeweils ein eigenständige "single source file"
Programm und der VERZEICHNIS-NAME beschreibt den Zweck des Beipspiels. In der
Schulungsunterlage steht "verzeichnis-name/demo.cpp" jeweils bei der ERSTEN
Verwendung eines Beispiels in der Überschrift.

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

Um das Programmbeispiel aus den folgenden beiden Abschnitt zu einem
kompilierbaren Projekt inklusive automatisierter Tests zu machen, benötigen
Sie neben den Dateien

noch die Datei

welche ein sehr einfaches Gerüst für den automatisierten Test enthält.

Alle diese Dateien hat Herr Kaufmann mittleweile per als Mail erhalten.

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

1. Teil:

Klasse `my::length` in Datei `length.h`

Analysieren Sie den Code zum einen im Himblick darauf, was hier generell getan
wird, und zum anderen im Hinblick auf die verwendeten C++11 und C++14 Features.

Schauen Sie sich auch die Testfälle in `length_test.cpp` an.

Fügen Sie nun benutzerdefinierte Literat-Suffixe `_mm`, `_cm`, `_m` und `_km`
hinzu (welche sinnvollerweise intern die bisherigen `static`-Member-Funktionen
verwenden – ansonsten müssten sie `friend`s sein).

Passen Sie die Testfälle so an, dass diese die neuen Suffixe verwenden.

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

2. Teil:

Klasse `my::rectangular_coord` in `rectangular_coord.h` und zugehörige Testfälle
in `rectangular_coord_test.cpp`.

Analysieren Sie den Code zum einen im Himblick darauf, was hier generell getan
wird, und zum anderen im Hinblick auf die verwendeten C++11 und C++14 Features.

(Wenn Sie besonderen Fleiß beweisen wollen, können Sie auch den Code auf den
C++98 Standard "zurückdrehen", aber der Lerneffekt dabei dürfte eher gering
sein …)

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

3. Teil:

Machen Sie aus der Klasse `my::rectangular_coord` eine Template, die den Datentyp
(bisher `value_type`) parametrisiert und testen Sie erneut mit unterschiedlichen
Datentypen.

Versuchen Sie nun auch die Klasse mit `my::length` als Instanziierungstyp zu
verwenden. Wenn das geht, dann OK, wenn nicht finden Sie den Grund dafür.